设为首页 收藏本站
查看: 860|回复: 0

[经验分享] Docker 之 cgroup篇

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-19 09:42:37 | 显示全部楼层 |阅读模式

# docker --version
Docker version 1.10.3, build f476348/1.10.3

以1.10.3这个版本为例,其中跟cgroup 相关的option有如下几个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
--blkio-weight                  Block IO (relative weight), between 10 and 1000
--blkio-weight-device=[]        Block IO weight (relative device weight)

--cpu-shares                    CPU shares (relative weight)
--cpu-period                    Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota                     Limit CPU CFS (Completely Fair Scheduler) quota
--cpuset-cpus                   CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems                   MEMs in which to allow execution (0-3, 0,1)

--device-read-bps=[]            Limit read rate (bytes per second) from a device
--device-read-iops=[]           Limit read rate (IO per second) from a device
--device-write-bps=[]           Limit write rate (bytes per second) to a device
--device-write-iops=[]          Limit write rate (IO per second) to a device

-m, --memory                    Memory limit
--memory-reservation            Memory soft limit
--memory-swap                   Swap limit equal to memory plus swap: '-1' to enable unlimited swap

--oom-kill-disable              Disable OOM Killer




cgroup 子系统 blkio是用来限制block I/O 带宽
--blkio-weight --> 设置一个权重值,范围在100-1000之间,这跟cpu.shares 类似,是比重分配,而非拒绝的带宽限制,所以只有在不同子系统在争夺带宽的子资源时候这个设定的值才生效

1
2
3
4
--blkio-weight-device=[]
是针对具体的设备设置权重值,这个值会覆盖 -blkio-weight的值
ex:利用cgroup 将/dev/sda 的权重设置成最小
#echo 8:0 100 > blkio.weight_device




CPU 子系统:
1
2
3
4
5
6
7
8
9
10
11
12
--cpu-shares
是分配cpu的比例权重,ex:512/1024 后者可以拿到2/3的cpu运行时间,当然也是当存在争夺的时候此分配的值才会生效,一般情况下是不工作的。

--cpu-period / --cpu-quota
这两个option一般是组合使用,可以利用 --cpu-period 设置成1秒,然后将--cpu-quota 设置为0.5秒,那么在cgroup中的进程在1秒内最多运行0.5秒,然后会被强制睡眠,直到进入下一个1秒时间片段

--cpuset-cpus
允许使用CPU的列表, 例如:0-3,10 (主要看server上的CPU数目和core的数目,lscpu可以查看)

--cpuset-mems
允许进程使用的内存节点列表,例如 :0,1
主要手动利用cgroup 控制进程可以访问的内存节点,防止过多的跨内存使用CPU而减慢整个机器的运行速度



Device 子系统
1
2
3
4
5
6
7
8
9
10
11
--device-read-bps=[]  
设置每秒读磁盘的带宽上限,需要指定设备

--device-read-iops=[]
设置每秒读磁盘的IOPS上限,需要指定设备   

--device-write-bps=[]  
设置每秒写磁盘的带宽上限,需要指定设备  

--device-write-iops=[]
设置每秒写磁盘的IOPS上限,需要指定设备




1
2
3
4
5
6
7
8
-m, --memory
限制cgroup控制的进程使用memroy的上限,hard limit (绝对不会超过此值)

--memory-reservation
soft limit memory 使用,可以超过这个值

--memory-swap                  
限制cgroup控制的进程使用的swap memory的大小,其中此选项所对应的值是 memory + swarp 的和



1
2
3
--oom-kill-disable
打开此开关,那么当进程使用的memory超多的hard limit所限制的内存数目,那么会触发系统的OOM
然后杀掉某一个进程(一般是内存使用最多的进程)






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-246134-1-1.html 上篇帖子: docker run java官方镜像默认自动退出的问题解决办法 下篇帖子: 直接在docker下体验强大的构建平台Quickbuild
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表