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. Linux命令(基础1)

    一  命令的基本构成 (PS:Linux发行版本命令大概有200多个,熟练掌握个百八的就行了,其余的有个大概了解) 命令体 选项 参数(对象) ls -l /var 1.1参数:文件 文件类型: d ...

  2. .Net站点架构设计(八)測试

    .Net站点架构时间(八)測试 一般而言.总体測试策略是:先针对部分系统进行性能及压力測试,得到各部分的峰值处理性能:再模拟总体流程測试,此时倒不用依照峰值跑,重点測试总体业务流程及业务预期负荷. 在 ...

  3. Flask系列(十一)整合Flask中的目录结构(sqlalchemy-utils)

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...

  4. livego

    1.安装golang开发环境 https://www.cnblogs.com/eczhou/p/7929693.html 2.livego源码及说明文档 https://github.com/zhou ...

  5. Linux系统下RPM命令和yum的使用

    Linux系统下RPM命令和yum的使用 RPM:Redhat Packages Manager (红帽系列软件包的管理),主要用于安装.卸载.升级和管理软件. 一个包由下面几个部分构成: 例如:ht ...

  6. Python 集合(set)的使用总结

    集合的特点:去重.无序,因此无法通过下标取值. 1. 定义集合 s = set() #定义空的集合 s2 = {'} # 不是key -value形式的话就是集合,不是字典 s3 ={'} print ...

  7. iOS开发debug集锦

    1.添加第三方库时,需要注意使用环境 duplicate symbol _llvm.embedded.module in: /Users/dengw/360Cloud/xcode_code/appli ...

  8. ubuntu下python+tornado+supervisor+nginx部署

    由于项目需要,老师让我写一个小web系统,之前都是用java写web,想到自己最近学机器学习要用python,所以用python来写一下,此外,因为想用点新东西,也介于程序比较小,所以考虑用mongo ...

  9. 浅谈HTTP请求与响应

    HTTP协议用于客户端和服务器之间的通信,请求访问的一段是客户端,提供资源响应的一段是服务器端. HTTP通信是采用请求应答的方式来进行的,客户端发出请求,服务器响应.如果没有客户端的请求,服务器端是 ...

  10. 关于iOS UIWebView 加载网页,点击网页内某些控件导致 Application 'UIKitApplication:xxx.xxx.xxx' was killed by jetsam.

    问题:公司用的腾讯问卷系统,内嵌在我们应用或游戏的自定义UIWebView里面展示,发现在iOS 10 以下系统,点击圆形勾选框 会大概率出现闪退. 通过联调发现:报了这样一个警告Applicatio ...