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 = ;
cpu.cfs_quota_us = ;
}
} group jerry {
cpu {
cpu.cfs_perios_us = ;
cpu.cfs_quota_us = ;
}
}

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=;
cpu.cfs_quota_us=;
}
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
如果还是报错,尝试手动创建:
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 > /cgroup/cpu/finance/cpu.cfs_period_us
echo > /cgroup/cpu/finance/cpu.cfs_quota_us
检查各配置的值是否正确写入文件,如果没有,则手动写入
echo > /cgroup/cpu/finance/cpu.cfs_period_us
echo > /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=;
cpu.cfs_quota_us=;
}
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
检查各配置的值是否正确写入文件,如果没有,则手动写入
echo > /cgroup/cpu/finance/cpu.cfs_period_us
echo > /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
.memory的配置放在cpu的配置前面,原因未知,如果memory在cpu后面配置,
可能会导致/cgroup/memory/finance没有用上,也就是memory限制没生效
.cpu,cpuacct可以放在一起,也可以分开放,有的时候放在一起会报错,
有的时候分开会报错,可能和已有的挂载有关。。。
默认到达memory的限制之后,会kill掉进程,如果想保持进程,可以修改memory.oom_control中的oom_kill_disable值:
echo > memory.oom_control ## 1代表不杀死进程,转而让进程进入‘D’状态等待内存资源。
但是这样容易多进程进入死锁状态。

centos cgroup配置的更多相关文章

  1. Centos网络配置

    网上搜索:centos网络配置的方法,主要包括dns.网关.IP地址,主要是配置resolv.conf\network\ifcfg-eth0这些网络配置文件. 稍后我会就centos7的网络配置进行实 ...

  2. 阿里云服务器Linux CentOS安装配置(零)目录

    阿里云服务器Linux CentOS安装配置(零)目录 阿里云服务器Linux CentOS安装配置(一)购买阿里云服务器 阿里云服务器Linux CentOS安装配置(二)yum安装svn 阿里云服 ...

  3. 阿里云服务器Linux CentOS安装配置(九)shell编译、打包、部署

    阿里云服务器Linux CentOS安装配置(九)shell编译.打包.部署 1.查询当前目录以及子目录下所有的java文件,并显示查询结果 find . -name *.java -type f - ...

  4. 阿里云服务器Linux CentOS安装配置(八)nginx安装、配置、域名绑定

    阿里云服务器Linux CentOS安装配置(八)nginx安装.配置.域名绑定 1.安装nginx yum -y install nginx 2.启动nginx service nginx star ...

  5. 阿里云服务器Linux CentOS安装配置(七)域名解析

    阿里云服务器Linux CentOS安装配置(七)域名解析 1.购买域名 登录阿里云,左侧菜单点击[域名],然后[域名注册],完成域名购买.(一般首年45元) 2.添加域名解析 在域名列表里点击你的域 ...

  6. 阿里云服务器Linux CentOS安装配置(六)resin多端口配置、安装、部署

    阿里云服务器Linux CentOS安装配置(六)resin多端口配置.安装.部署 1.下载resin包 http://125.39.66.162/files/2183000003E08525/cau ...

  7. 阿里云服务器Linux CentOS安装配置(五)jetty配置、部署

    阿里云服务器Linux CentOS安装配置(五)jetty配置.部署 1.官网下载jetty:wget http://repo1.maven.org/maven2/org/eclipse/jetty ...

  8. 阿里云服务器Linux CentOS安装配置(四)yum安装tomcat

    阿里云服务器Linux CentOS安装配置(四)yum安装tomcat 1.yum -y install tomcat  执行命令后,会帮你把jdk也安装好 2.tomcat安装目录:/var/li ...

  9. 阿里云服务器Linux CentOS安装配置(三)yum安装mysql

    阿里云服务器Linux CentOS安装配置(三)yum安装mysql 1.执行yum安装mysql命令:yum -y install mysql-server mysql-devel 2.启动mys ...

随机推荐

  1. 借助 Django 的 smart_str 和 smart_unicode 进行编码转换(转)

    原文:http://www.dirk.sh/diary/using-django-smart_str-smart_unicode/ Django 为字符编码的转换提供了非常简洁的方法: 1.djang ...

  2. Logistic Regression 模型

    逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛.本文作为美团机器学习InAction系列中的一篇,主要关注逻辑回归算法的数学模 ...

  3. UVA10905: Children's Game(排序)

    题目:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68990#problem/A 题目需求:,给n个数字,将它们重新排序得到一个最大的数 ...

  4. python手写bp神经网络实现人脸性别识别1.0

    写在前面:本实验用到的图片均来自google图片,侵删! 实验介绍 用python手写一个简单bp神经网络,实现人脸的性别识别.由于本人的机器配置比较差,所以无法使用网上很红的人脸大数据数据集(如lf ...

  5. C++基础之头文件和源文件的关系

    今天找了个解析xml的开源C++项目tinyxml,按照网上的说法去编译,但是一直编译不通过,"无法打开头文件tinyxml.h",但是明明我在工程底下有了这个文件,对于我这种初学 ...

  6. luaIDE选择

    luaIDE选择 本人测试过各种luaIDE, 包括luaStudio, 不过我还是推荐eclipse+ldt的方式: http://zengrong.net/post/1951.htm 原因如下: ...

  7. 一步一步学EF系列一【最简单的一个实例】

    整个文章我都会用最简单,最容易让人理解的方式给大家分享和共同学习.(由于live Writer不靠谱 又得补发一篇) 一.安装 Install-Package EntityFramework 二.简单 ...

  8. 一道仅有7人通过的超5星微软比赛题目-------解题思路&优秀代码分享,邀你来“找茬儿”

    6月23日英雄会平台发布了一道难度为超5星的微软比赛题目,截止活动结束共有300多名编程爱好者参与线上答题,而最终通过者仅有7人,通过率仅为2%.为什么成绩如此出人意料?是因为题目的英文描述难以理解? ...

  9. Java反射在整个程序运行中的位置

    ①java的核心机制 java有两种核心机制:java虚拟机(JavaVirtual Machine)与垃圾收集机制(Garbage collection): ①Java虚拟机:是运行所有Java程序 ...

  10. 无密码ssh操作步骤备忘

    需求:A机器无密码登陆到B机器 1.A机器执行   ssh-keygen -t rsa  ,在~/.ssh/下生成id_rsa 和  id_rsa.pub两个文件,其中id_rsa.pub是公匙 2. ...