From d959a00619528f1537ae0c62a3241919bc02b576 Mon Sep 17 00:00:00 2001 From: swei Date: Wed, 16 Apr 2014 11:19:52 +0800 Subject: [PATCH] add set_libcgroup.sh by yhsong Signed-off-by: swei --- install_shell/set_libcgroup.sh | 126 +++++++++++++++++++++++++++++++++ setup.sh | 3 + 2 files changed, 129 insertions(+) create mode 100644 install_shell/set_libcgroup.sh diff --git a/install_shell/set_libcgroup.sh b/install_shell/set_libcgroup.sh new file mode 100644 index 0000000..2b473a3 --- /dev/null +++ b/install_shell/set_libcgroup.sh @@ -0,0 +1,126 @@ +#!/bin/sh + +#设置开机启动项 +echo "Starting set the boot startup..." + +ln -s /etc/rc.d/init.d/cgconfig /etc/rc.d/rc3.d/S100cgconfig +ln -s /etc/rc.d/init.d/cgconfig /etc/rc.d/rc5.d/S100cgconfig +ln -s /etc/rc.d/init.d/cgred /etc/rc.d/rc3.d/S105cgred +ln -s /etc/rc.d/init.d/cgred /etc/rc.d/rc5.d/S105cgred + +#设置cgconfig和cgred服务的配置文件 +total_mem=`free -m | grep -i "mem" | awk '{print $2}'` +total_swap=`free -m | grep -i "swap" | awk '{print $2}'` + +cpus=`cat /proc/cpuinfo | grep processor | wc -l` +((cpus=cpus-2)) +if [ ${cpus} -lt 0 ]; then + cpus=0 +fi + +numa=`numactl --show` +if [ $? -eq 0 ]; then +# memory_nodes=`numactl --hardware | sed -n '1p' | awk '{print $2}'` + memory_nodes=`numactl --hardware | grep "nodes" | awk '{print $4}' | sed -e "s/(//g" | sed -e "s/)//g"` +else + memory_nodes=0 +fi + +#if [ ${memory_nodes} -ne 0 ]; then +# ((memory_nodes--)) +#fi + +echo "Starting set the cgconfig.conf..." + +cgconfig="group $1_limits { + perm { + task { + uid = $1; + gid = $1; + } + admin { + uid = sysadmin; + gid = sysadmin; + } + } + cpuset { + cpuset.cpus = 0-var_cpus; + cpuset.mems = var_nodes; + } + memory { + memory.limit_in_bytes = var_memM; + memory.memsw.limit_in_bytes = var_swapM; + } + cpu { + cpu.rt_runtime_us = 950000; + } +} + +mount { + cpuset = /lxcg; + cpu = /lxcg; + cpuacct = /lxcg; + memory = /lxcg; + devices = /lxcg; + freezer = /lxcg; + net_cls = /lxcg; +}" + +cgrules="*:start_kdeinit * / +*:startkde * / +*:kdeinit * / +*:kded * / +*:scim-launcher * / +*:scim-helper-manager * / +*:scim-panel-gtk * / +*:gam_server * / +*:kwrapper * / +*:artsd * / +*:korgac * /" + + if [ ${total_mem} -le 500 ]; then + mem_root=100 + else + mem_root=$((${total_mem}/10)) + if [ ${mem_root} -lt 100 ]; then + mem_root=100 + elif [ ${mem_root} -ge 100 ] && [ ${mem_root} -le 500 ]; then + mem_root=500 + elif [ ${mem_root} -gt 2000 ]; then + mem_root=2000 + fi + fi + + mem=$((${total_mem}-${mem_root})) + swap=$((${total_swap}/2)) + + sed -i "/^[^#]/d" /etc/cgconfig.conf + sed -i "/^$/d" /etc/cgconfig.conf + + echo "$cgconfig" >> /etc/cgconfig.conf + + sed -i "s/var_cpus/${cpus}/g" /etc/cgconfig.conf + sed -i "s/var_nodes/${memory_nodes}/g" /etc/cgconfig.conf + sed -i "s/var_mem/${mem}/g" /etc/cgconfig.conf + sed -i "s/var_swap/$(($mem+$swap))/g" /etc/cgconfig.conf + +echo "Starting set cgrules.conf..." + +sed -i "/^[^#]/d" /etc/cgrules.conf +sed -i "/^$/d" /etc/cgrules.conf + +echo "$cgrules" >> /etc/cgrules.conf + +users=`cut -d ':' -f1 /etc/passwd | sed -e '/root/d'` +for username in ${users} +do + if [ ${username} != "sysadmin" ] && [ ${username} != "sshd" ]; then + echo "${username}: * $1_limits" >> /etc/cgrules.conf + fi +done + +#设置进程能力 +echo "Starting set process capabilities..." +setcap "=eip" /usr/sbin/cgconfigparser +setcap "=eip" /usr/sbin/cgclear +setcap "=eip" /usr/sbin/cgrulesengd diff --git a/setup.sh b/setup.sh index 4f6f7d2..81cdac4 100755 --- a/setup.sh +++ b/setup.sh @@ -20,6 +20,9 @@ fi ./set_bonding.sh echo "====Set Bonding..." +./set_libcgroup.sh $1 +echo "====Set libcgroup..." + ./set_kernel.sh echo "====Set Kernel parameters..."