美文网首页
cgroup限制机器资源

cgroup限制机器资源

作者: GOGOYAO | 来源:发表于2018-12-03 11:50 被阅读12次
  • 挂载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。

  • 设置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

相关文章

网友评论

      本文标题:cgroup限制机器资源

      本文链接:https://www.haomeiwen.com/subject/okzecqtx.html