美文网首页
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