默认情况下,所有容器都可以平等的使用host cpu资源,没有限制
 
docker 可以通过 -c 或者 --cpu-shares 设置容器使用cpu的权重,如果不指定,默认为1024
 
与内存限额不同,通过 -c 设置的cpu share 并不是cpu资源的绝对数量,而是一个相对的权重值。某个容器最终能分配到的cpu资源取决于他的cpu share 占所有容器 cpu share 总和的比例。
 
总结一句话:通过 cpu share 可以设置容器使用 cpu 的权重(优先级),需要注意的是只有CPU资源出现竞争的时候才会按照权重分配CPU资源。
 
比如:10个容器,有9个容器处于空闲状态,那么剩下的那个容器就可以使用掉全部cpu资源
 
 
1、启动容器A,CPU权重1024,可以看到容器A使用了全部CPU资源(docker host cpu有8核,所有使用 --cpu 8 消耗掉所有cpu资源,出现资源竞争)
 
root@docker-lab:~# docker run --name containerA -it -c 1024 progrium/stress --cpu 8
stress: info: [1] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 24000us
stress: dbug: [1] --> hogcpu worker 8 [7] forked
stress: dbug: [1] using backoff sleep of 21000us
stress: dbug: [1] --> hogcpu worker 7 [8] forked
stress: dbug: [1] using backoff sleep of 18000us
stress: dbug: [1] --> hogcpu worker 6 [9] forked
stress: dbug: [1] using backoff sleep of 15000us
stress: dbug: [1] --> hogcpu worker 5 [10] forked
stress: dbug: [1] using backoff sleep of 12000us
stress: dbug: [1] --> hogcpu worker 4 [11] forked
stress: dbug: [1] using backoff sleep of 9000us
stress: dbug: [1] --> hogcpu worker 3 [12] forked
stress: dbug: [1] using backoff sleep of 6000us
stress: dbug: [1] --> hogcpu worker 2 [13] forked
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogcpu worker 1 [14] forked
 
 
root@docker-lab:~# top
top - 23:22:09 up 223 days,  6:44,  4 users,  load average: 7.08, 3.33, 1.30
Tasks: 190 total,   9 running, 181 sleeping,   0 stopped,   0 zombie
%Cpu0  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8174448 total,  2693664 free,  2020948 used,  3459836 buff/cache
KiB Swap:  2097148 total,   291892 free,  1805256 used.  5418476 avail Mem
 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                           
16017 root      20   0    7316     96      0 R 100.0  0.0   0:31.11 stress                            
16021 root      20   0    7316     96      0 R 100.0  0.0   0:31.12 stress                            
16014 root      20   0    7316     96      0 R 100.0  0.0   0:31.09 stress                            
16015 root      20   0    7316     96      0 R 100.0  0.0   0:31.10 stress                            
16016 root      20   0    7316     96      0 R 100.0  0.0   0:31.10 stress                            
16018 root      20   0    7316     96      0 R 100.0  0.0   0:31.15 stress                            
16019 root      20   0    7316     96      0 R 100.0  0.0   0:31.04 stress                            
16020 root      20   0    7316     96      0 R  99.7  0.0   0:31.11 stress  
 
2、启动容器B,CPU权重512,可以看到全部CPU资源都已被使用,容器A可以使用 66%,容器B可以使用33%(可以使用PID分辨容器A和容器B)
 
root@docker-lab:~# docker run --name containerB -it -c 512 progrium/stress --cpu 8
stress: info: [1] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 24000us
stress: dbug: [1] --> hogcpu worker 8 [8] forked
stress: dbug: [1] using backoff sleep of 21000us
stress: dbug: [1] --> hogcpu worker 7 [9] forked
stress: dbug: [1] using backoff sleep of 18000us
stress: dbug: [1] --> hogcpu worker 6 [10] forked
stress: dbug: [1] using backoff sleep of 15000us
stress: dbug: [1] --> hogcpu worker 5 [11] forked
stress: dbug: [1] using backoff sleep of 12000us
stress: dbug: [1] --> hogcpu worker 4 [12] forked
stress: dbug: [1] using backoff sleep of 9000us
stress: dbug: [1] --> hogcpu worker 3 [13] forked
stress: dbug: [1] using backoff sleep of 6000us
stress: dbug: [1] --> hogcpu worker 2 [14] forked
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogcpu worker 1 [15] forked
 
 
root@docker-lab:~# top
top - 23:22:46 up 223 days,  6:45,  4 users,  load average: 9.26, 4.24, 1.67
Tasks: 201 total,  17 running, 184 sleeping,   0 stopped,   0 zombie
%Cpu0  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8174448 total,  2678812 free,  2035572 used,  3460064 buff/cache
KiB Swap:  2097148 total,   291892 free,  1805256 used.  5403752 avail Mem
 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                           
16014 root      20   0    7316     96      0 R  66.8  0.0   1:02.51 stress                            
16015 root      20   0    7316     96      0 R  66.8  0.0   1:01.78 stress                            
16017 root      20   0    7316     96      0 R  66.8  0.0   1:01.67 stress                            
16018 root      20   0    7316     96      0 R  66.8  0.0   1:01.83 stress                            
16020 root      20   0    7316     96      0 R  66.8  0.0   1:02.05 stress                            
16021 root      20   0    7316     96      0 R  66.8  0.0   1:01.44 stress                            
16016 root      20   0    7316     96      0 R  66.4  0.0   1:01.52 stress                            
16019 root      20   0    7316     96      0 R  66.4  0.0   1:01.75 stress                            
16183 root      20   0    7316    100      0 R  33.2  0.0   0:05.83 stress                            
16184 root      20   0    7316    100      0 R  33.2  0.0   0:05.84 stress                            
16185 root      20   0    7316    100      0 R  32.9  0.0   0:05.83 stress                            
16186 root      20   0    7316    100      0 R  32.9  0.0   0:05.79 stress                            
16187 root      20   0    7316    100      0 R  32.9  0.0   0:05.76 stress                            
16188 root      20   0    7316    100      0 R  32.9  0.0   0:05.75 stress                            
16190 root      20   0    7316    100      0 R  32.9  0.0   0:05.81 stress                            
16191 root      20   0    7316    100      0 R  32.9  0.0   0:05.82 stress   
 
3、使用 CTRL + C 停止容器A,可以看到容器B使用了全部的CPU资源
 
root@docker-lab:~# docker run --name containerA -it -c 1024 progrium/stress --cpu 8
stress: info: [1] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
stress: dbug: [1] using backoff sleep of 24000us
stress: dbug: [1] --> hogcpu worker 8 [7] forked
stress: dbug: [1] using backoff sleep of 21000us
stress: dbug: [1] --> hogcpu worker 7 [8] forked
stress: dbug: [1] using backoff sleep of 18000us
stress: dbug: [1] --> hogcpu worker 6 [9] forked
stress: dbug: [1] using backoff sleep of 15000us
stress: dbug: [1] --> hogcpu worker 5 [10] forked
stress: dbug: [1] using backoff sleep of 12000us
stress: dbug: [1] --> hogcpu worker 4 [11] forked
stress: dbug: [1] using backoff sleep of 9000us
stress: dbug: [1] --> hogcpu worker 3 [12] forked
stress: dbug: [1] using backoff sleep of 6000us
stress: dbug: [1] --> hogcpu worker 2 [13] forked
stress: dbug: [1] using backoff sleep of 3000us
stress: dbug: [1] --> hogcpu worker 1 [14] forked
CTRL + C
^Cstress: FAIL: [1] (416) <-- worker 12 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 14 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 8 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 7 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 11 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 10 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 9 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (416) <-- worker 13 got signal 2
stress: WARN: [1] (418) now reaping child worker processes
stress: FAIL: [1] (422) kill error: No such process
stress: FAIL: [1] (452) failed run completed in 80s
 
 
root@docker-lab:~# top
top - 23:23:19 up 223 days,  6:45,  4 users,  load average: 9.97, 5.03, 2.03
Tasks: 191 total,   9 running, 182 sleeping,   0 stopped,   0 zombie
%Cpu0  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  : 99.7 us,  0.3 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu3  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu4  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu5  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu6  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu7  : 99.7 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.3 st
KiB Mem :  8174448 total,  2692192 free,  2022216 used,  3460040 buff/cache
KiB Swap:  2097148 total,   291892 free,  1805256 used.  5417144 avail Mem
 
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                           
16183 root      20   0    7316    100      0 R 100.0  0.0   0:30.32 stress                            
16185 root      20   0    7316    100      0 R 100.0  0.0   0:30.25 stress                            
16186 root      20   0    7316    100      0 R 100.0  0.0   0:30.30 stress                            
16190 root      20   0    7316    100      0 R 100.0  0.0   0:30.28 stress                            
16184 root      20   0    7316    100      0 R 100.0  0.0   0:30.32 stress                            
16187 root      20   0    7316    100      0 R 100.0  0.0   0:30.24 stress                            
16188 root      20   0    7316    100      0 R 100.0  0.0   0:30.25 stress                            
16191 root      20   0    7316    100      0 R 100.0  0.0   0:30.30 stress                            
16273 root      20   0   40528   3780   3108 R   0.3  0.0   0:00.01 top   
 
 

028、限制容器对CPU的使用(2019-01-23 周三)的更多相关文章

  1. 第 4 章 容器 - 028 - 限制容器对CPU的使用

    限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定, ...

  2. 2019.01.23 hdu3377 Plan(轮廓线dp)

    传送门 题意简述:给一个n*m的带权矩阵,求从左上角走到右下角的最大分数,每个格子只能经过最多一次,n,m≤9n,m\le9n,m≤9. 思路: 考虑轮廓线dpdpdp,但这道题并没有出现回路的限制因 ...

  3. 2019.01.23 hdu1964 Pipes(轮廓线dp)

    传送门 题意简述:给一个没有障碍的网格图,任意两个格子连通需要花费一定代价,现在求一条覆盖所有格子的哈密顿回路的总权值的最小值. 思路: 跟这道题一毛一样,除了把求和变成求最小值以外. 代码: #in ...

  4. 2019.01.23 hdu1693 Eat the Trees(轮廓线dp)

    传送门 题意简述:给一个有障碍的网格图,问用若干个不相交的回路覆盖所有非障碍格子的方案数. 思路:轮廓线dpdpdp的模板题. 同样是讨论插头的情况,只不过没有前一道题复杂,不懂的看代码吧. 代码: ...

  5. 2019.01.23 ural1519 Formula 1(轮廓线dp)

    传送门 轮廓线dpdpdp模板题. 题意简述:给一个放有障碍的网格图,问有多少种方法能使所有非障碍格子都在同一条哈密顿回路上面. 考虑用括号序列的写法来状压这个轮廓线. 用000表示没有插头,111表 ...

  6. 梦想Android版CAD控件2019.01.23更新

    下载地址:http://www.mxdraw.com/ndetail_10121.html?tdsourcetag=s_pcqq_aiomsg1. 增加异步读取CAD,DWG文件函数,MxFuncti ...

  7. 限制容器对CPU的使用 - 每天5分钟玩转 Docker 容器技术(28)

    上节学习了如何限制容器对内存的使用,本节我们来看CPU. 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器 ...

  8. 26-限制容器对CPU的使用

    默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定,默认值为 1024. 与 ...

  9. Docker——JVM 感知容器的 CPU 和 Memory 资源限制

    前言 对于那些在Java应用程序中使用Docker的CPU和内存限制的人来说,可能会遇到一些挑战.特别是CPU限制,因为JVM在内部透明地设置GC线程和JIT编译器线程的数量. 这些可以通过命令行选项 ...

随机推荐

  1. python的生成器与迭代器和可迭代对象

    来简单的说下python中的生成器和可迭代对象以及迭代器的问题.只是简单地记录一下并不涉及太深入的内容. 首先来说一下什么是生成器,先看下面的代码: #_*_ coding:utf-8 _*_ res ...

  2. 【题解】 bzoj1135: [POI2009]Lyz (线段树+霍尔定理)

    题面戳我 Solution 二分图是显然的,用二分图匹配显然在这个范围会炸的很惨,我们考虑用霍尔定理. 我们任意选取穿\(l,r\)的号码鞋子的人,那么这些人可以穿的鞋子的范围是\(l,r+d\),这 ...

  3. 「SCOI2016」萌萌哒 解题报告

    「SCOI2016」萌萌哒 这思路厉害啊.. 容易发现有个暴力是并查集 然后我想了半天线段树优化无果 然后正解是倍增优化并查集 有这个思路就简单了,就是开一个并查集代表每个开头\(i\)每个长\(2^ ...

  4. 构建DHCP服务

    --------------------DHCP 配置-------------------# yum install dhcp -y# vim /etc/dhcp/dhcpd.conf# cp /u ...

  5. 清理XFCE4卸载残留

    apt-get remove xfce4 apt-get remove xfce4* apt-get autoremove apt-get autoclean apt-get clean --- 更新 ...

  6. [BJOI2017]开车

    [BJOI2017]开车 直接做要用栈 修改?难以直接维护 统计边的贡献! len*abs(pre)pre表示前缀car-stop 修改时候,整个区间的pre+1或者-1 分块,块内对pre排序并打标 ...

  7. P3378 堆の模板

    如果不是可并堆/带修堆/卡常题,一般都用优先队列实现. 很多O(nlogn)过不了的题都可以用蚯蚓的套路来实现!!! 优先队列带修用延迟删除法. 堆,可以简单的用优先队列来实现,也可以自己手打. #i ...

  8. gei 操作

    git --version 查看版本号 进入项目文件 上传账号的用户名git config --global user.name "牛星宇" 上传账号的邮箱git config - ...

  9. render_template 网页模板

    模板简单介绍: 视图函数:视图函数就是装饰器所装饰的方法,视图函数的主要作用是生成请求的响应,这是最简单的请求.实际上,视图函数有两个作用:处理业务逻辑和返回响应内容.在大型应用中,把业务逻辑和表现内 ...

  10. Vue+Django2.0 restframework打造前后端分离的生鲜电商项目(3)

    1.drf前期准备 1.django-rest-framework官方文档 https://www.django-rest-framework.org/ #直接百度找到的djangorestframe ...