• centos cgroup配置


    centOS 6:
    1. 启用cgroup
        查看内核是否支持cgroup功能:cat /boot/config-`uname -r` | grep -i rt_group
        查看支持的子系统:lssubsys
    2. 关闭SELinux。SELinux会阻止cgconfigparser的写操作,所以需要关闭SELinux
        修改/etc/selinux/config文件,设置SELINUX=disabled,并reboot
    3. 配置cgrules.conf和cgconfig.conf。

    cgrules.conf:

    zoro cpu zoro
    jerry cpu jerry

    cgconfig.conf:

    mount {
      cpuset = /cgroup/cpuset;
      cpu = /cgroup/cpu;
      cpuacct = /cgroup/cpu;
      memory = /cgroup/memory;
      devices = /cgroup/devices;
      freezer = /cgroup/freezer;
      net_cls = /cgroup/net_cls;
      blkio = /cgroup/blkio;
    }
    
    group zoro {
      cpu {
        cpu.cfs_perios_us = 100000;
        cpu.cfs_quota_us = 10000;
      }
    }
    
    group jerry {
      cpu {
        cpu.cfs_perios_us = 100000;
        cpu.cfs_quota_us = 10000;
      }
    }

    4. 重启cgconfig服务
    * systemctl restart cgconfig.service
    * systemctl restart cgred.service

    centOS 7

    centos7把cgroup设置在了/sys/fs/cgroup/目录下,所以上面的方法会报错。
    1.vim /etc/cgrules.conf

    @research memory finance ## research组
    @research cpu,cpuacct finance ## research组

    2.vim /etc/cgconfig.conf

    mount {
     cpu = /cgroup/cpu/;
     cpuacct = /cgroup/cpu/; 
     memory = /cgroup/memory/;
    }
    
    group finance {
      cpu {
       cpu.cfs_period_us=100000;
       cpu.cfs_quota_us=10000; 
     } 
     memory {
       memory.limit_in_bytes=100M;
       memory.memsw.limit_in_bytes = 102M;
     }
    }

    3.mkdir -p /cgroup/cpu
    4.mkdir -p /cgroup/cpuacct
    5.mkdir -p /cgroup/memory
    6.service cgconfig restart.

    如果报错,则尝试运行: 
    umount /cgroup/cpu
    umount /cgroup/memory
    /usr/sbin/cgclear -l /etc/cgconfig.conf -L /etc/cgconfig.d -e
    /usr/sbin/cgconfigparser -l /etc/cgconfig.conf -L /etc/cgconfig.d -s 1664 
    如果还是报错,尝试手动创建: 
    mount -t cgroup -o cpu,cpuacct cpu /cgroup/cpu
    mount -t cgroup -o memory memory /cgroup/memory
    mkdir -p /cgroup/cpu/finance
    mkdir -p /cgroup/memory/finance
    echo 100000 > /cgroup/cpu/finance/cpu.cfs_period_us
    echo 10000 > /cgroup/cpu/finance/cpu.cfs_quota_us
    检查各配置的值是否正确写入文件,如果没有,则手动写入
    echo 100000 > /cgroup/cpu/finance/cpu.cfs_period_us
    echo 10000 > /cgroup/cpu/finance/cpu.cfs_quota_us

    7.service cgred restart
    如果重启了机器,需重新运行第4、5步。


    另一个方法CentOS 7:

    直接使用/sys/fs/cgroup/目录:
    1./etc/cgrules.conf:

    @research memory finance ## research组
    @research cpu,cpuacct finance ## research组

    2./etc/cgconfig.conf

    group finance {
     cpu {
      cpu.cfs_period_us=100000;
      cpu.cfs_quota_us=10000;
     }
     memory {
      memory.limit_in_bytes=100M;
      memory.memsw.limit_in_bytes = 102M;
     }
    }

    3.service cgconfig restart.

    如果报错,则尝试运行: 
    /usr/sbin/cgclear -l /etc/cgconfig.conf -L /etc/cgconfig.d -e
    /usr/sbin/cgconfigparser -l /etc/cgconfig.conf -L /etc/cgconfig.d -s 1664 
    检查各配置的值是否正确写入文件,如果没有,则手动写入
    echo 100000 > /cgroup/cpu/finance/cpu.cfs_period_us
    echo 10000 > /cgroup/cpu/finance/cpu.cfs_quota_us

    4.service cgred restart


    辅助命令

    lscgroup
    lssubsys -am
    mount -t group
    cgclear,cgcreate,cgdelete,cgset,cgget,cgexec # 使用这一系列命令也可以创建组,但是不能和用户/用户组绑定,只能和进程绑定
    lsof file/dir
    fuser file/dir cat /proc/[pid]/cgroup ps -o cgroup [pid]


    记录

    a) 有时候会报错: *** resource busy 或 cpu already mounted等, 
    解决办法: umount /cgroup/cpu,如果还是报错,再尝试Ctrl+D登出,再登入。
    b) 在配置文件/etc/cgrules.conf中,最好把
    @research memory finnce 
    @research cpu,cpuacct finance
    1.memory的配置放在cpu的配置前面,原因未知,如果memory在cpu后面配置,
    可能会导致/cgroup/memory/finance没有用上,也就是memory限制没生效
    2.cpu,cpuacct可以放在一起,也可以分开放,有的时候放在一起会报错,
    有的时候分开会报错,可能和已有的挂载有关。。。
    默认到达memory的限制之后,会kill掉进程,如果想保持进程,可以修改memory.oom_control中的oom_kill_disable值:
    echo 1 > memory.oom_control ## 1代表不杀死进程,转而让进程进入‘D’状态等待内存资源。
    但是这样容易多进程进入死锁状态。
  • 相关阅读:
    win2003服务器网站和数据库的二周自动备份
    尝试jquery插件的开发
    Git 代码版本管理
    实验三、UML 建模工具的安装与使用
    实验五 单元检测
     实验四 代码评审
    实验二 结队编程(第二阶段)
    结队编程
    第一次实验
    用live writer发布文章文章中含时产生的bug
  • 原文地址:https://www.cnblogs.com/starRebel/p/8653460.html
Copyright © 2020-2023  润新知