CGROUP相关知识
安装
CentOS 6
yum install libcgroup
CentOS 7
yum install libcgroup-tools
使用
默认情况下有几个控制器可以进行限制,分别是
- cpuset
- cpu,cpuacct
- memory
- devices
- freezer
- net_cls
- blkio
- perf_event
- hugetlb
限制CPU负载
我写了一个脚本来消耗CPU
count.sh
#!/bin/bash
N=0
while true; do
N=$((N+1))
echo $N
done
执行命令
CMD=/root/count.sh
cgcreate -g cpu:/cpu50
cgset -r cpu.cfs_quota_us=50000 cpu50
cgexec -g cpu:cpu50 $CMD
可见 count.sh 的CPU负载一直维持在50%以内
[root@app-client ~]# ps aux | grep count.sh
root 18594 48.2 0.0 106152 1032 pts/0 R+ 09:53 0:11 /bin/bash /root/count.sh
root 18666 0.0 0.0 103304 808 pts/1 S+ 09:54 0:00 grep count.sh
此外也可以把已经在运行的进程加入cgroup限制,不需要重启程序。
先执行
/root/count.sh
获取进程号
[root@app-client ~]# ps aux | grep count.sh
root 18695 62.1 0.0 106152 1036 pts/0 R+ 09:57 0:04 /bin/bash ./count.sh
root 18697 0.0 0.0 103304 808 pts/1 S+ 09:57 0:00 grep count.sh
把进程加入控制器
cgclassify -g cpu:cpu50 18695
Tips:
一个资源组可以加多个进程,资源组限制的是加入该组的进程资源总和。比如上面例子,限制50%的负载,是指所有该组的进程总共消耗50%的负载,而不是每个资源能消耗50%的负载。
可以用 lscgroup 查看配置的控制器
[root@app-client ~]# lscgroup
cpuset:/
cpu:/
cpu:/cpu50
cpuacct:/
memory:/
devices:/
freezer:/
net_cls:/
blkio:/
可以用命令 cgdelete 进行控制器的删除。
所有控制器格式
请参考 https://www.kernel.org/doc/Documentation/
比较常用的有
- blkio.throttle.read_bps_device – 磁盘读取限速
- blkio.throttle.write_bps_device – 磁盘写入限速
- cpu.cfs_quota_us – CPU load限制
- memory.limit_in_bytes – 最大内存限制
- cpuset.cpus – 绑定CPU的core,必须和 cpuset.mems 一起使用。
其他
各种控制器,除了使用 cg 系列命令可以修改,也可以直接修改映射到文件系统的目录。默认情况下,CentOS 6 的路径是 /cgroup ,CentOS 7 的路径是 /sys/fs/cgroup 。
配置文件 /etc/cgconfig.conf 或者目录 /etc/cgconfig.d/ 下可对映射的路径进行配置,有兴趣请自行打开看看。
比如 CentOS 6 下的默认配置是
mount {
cpuset = /cgroup/cpuset;
cpu = /cgroup/cpu;
cpuacct = /cgroup/cpuacct;
memory = /cgroup/memory;
devices = /cgroup/devices;
freezer = /cgroup/freezer;
net_cls = /cgroup/net_cls;
blkio = /cgroup/blkio;
}
原文链接
相关链接:
cgroup基本介绍cgroup资源限制cgroups介绍及安装配置使用详解cgroup实践-资源控制how to use cgroup
CGROUP相关知识的更多相关文章
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- NSString使用stringWithFormat拼接的相关知识
NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...
- iOS网络相关知识总结
iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...
- 地址标记,SpringMVC转发与调用相关知识存档
1.mytest_mavenprj1中,index的 <a href="login/login.html">点击登录</a> 与 <a href=&q ...
随机推荐
- java集合(ArrayList,Vector,LinkedList,HashSet,TreeSet的功能详解)
说起集合,我们会潜意识里想到另外一个与之相近的名词——数组,OK!两者确实有相似之处,但也正是这点才是我们应该注意的地方,下面简单列出了两者的区别(具体功能的不同学习这篇文章后就会明白了): 数组 长 ...
- plsql只有注释显示问号,其余中文可以正常显示
在plsql客户端查看表信息,注释均为乱码,使用select 查询字段中中文字符正常,以下为解决方案: 1.使用语句 select * from V$NLS_PARAMETERS 查询 nls_lan ...
- Linux进程间通信—共享内存
五.共享内存(shared memory) 共享内存映射为一段可以被其他进程访问的内存.该共享内存由一个进程所创建,然后其他进程可以挂载到该共享内存中.共享内存是最快的IPC机制,但由于linux本身 ...
- jenkins的docker
参考:https://store.docker.com/images/jenkins?tab=description https://my.oschina.net/jayqqaa12/blog/633 ...
- 如何在android模拟器中导入搜狗输入法?
1.下载输入法程序,如:sogouinput_android_1.6_sweb.apk 2.然后cmd进入sdk的tools(有的是platform-tools)目录,输入adb install C: ...
- unexpected token: * 和 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to 解决办法
一.unexpected token: * 的解决办法 首先要搞清楚sql与hql的区别! sql操作的是数据库表,而hql操作的是对象! sql中“select * from table”,而hq ...
- 【干货合集】Docker快速入门与进阶
收录待用,修改转载已取得腾讯云授权 Docker 在众多技术中,绝对是当红炸子鸡.这年头,如果你不懂一点容器,不学一些Docker,还怎么出去跟人炫耀技术? Docker 也是云计算技术中较为热门的一 ...
- 转: Mac 使用ADT的问题
http://blog.csdn.net/wwj_748/article/details/44806253
- android 线程安全
android ui 不是线程安全的,所以不能在子线程里更新ui,必须到主线程里更新
- hdu 2896 AC自动机模版题
题意:输出出现模式串的id,还是用end记录id就可以了. 本题有个关键点:“以上字符串中字符都是ASCII码可见字符(不包括回车).” -----也就说AC自动机的Trie树需要128个单词分支. ...