-
挂载cgroup
mount -t cgroup -o cpu proc_name_cpu /cgroup
-
设置cpu使用率
硬限主要使用以下两个参数:- cpu.cfs_period_us
cat /cgroup/mave/cpu.cfs_period_us
100000
表示将cpu时间片分成100000份。 - cpu.cfs_quota_us
cat /cgroup/mave/cpu.cfs_period_us
200000
表示当前这个组中的task(/cgroup/mave/tasks中的taskid)将分配多少比例的cpu时间片。
这里就表示最多可以用到200%的CPU。
- cpu.cfs_period_us
-
设置pid
最好使用procs,如果使用tasks,对于多线程程序将不起作用,tasks里面的pid仅仅是一个线程,procs会把程序的所有线程加入tasks,限制才会真正生效
echo xxxx > cgroup.procs
限制cpu的脚本
if [ "$#" != "1" ]; then
echo "need a param[percentage: 1-100]. eg. 50"
exit 1
fi
if [ $1 -gt 100 ] || [ $1 -lt 1 ]; then
echo "percentage should be 1-100"
exit 1
fi
percentage=$1
lssubsys -am > tmp_lssubsys.log
grep "cpu " tmp_lssubsys.log | grep cgroup
if [ "$?" != "0" ]; then
mount -t cgroup -o cpu proc_name_cpu /cgroup
fi
if [ ! -d "/cgroup" ]; then
echo "FATAL: /cgroup not exist!"
exit 1
fi
if [ ! -d "/cgroup/proc_name" ]; then
mkdir /cgroup/proc_name
fi
chown work:work /cgroup/proc_name
cores_num=`cat /proc/cpuinfo |grep "processor"|wc -l`
cpu_cfs_period_us=100000
cpu_cfs_quota_us=$(( $cpu_cfs_period_us / 100 * $cores_num * $percentage ))
echo $cpu_cfs_period_us > /cgroup/proc_name/cpu.cfs_period_us
echo $cpu_cfs_quota_us > /cgroup/proc_name/cpu.cfs_quota_us
网友评论