cgroup限制机器资源

2018-12-03  本文已影响12人  GOGOYAO

最好使用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
上一篇 下一篇

猜你喜欢

热点阅读