默认情况下,所有容器都可以平等的使用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
- 第 4 章 容器 - 028 - 限制容器对CPU的使用
限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定, ...
- 2019.01.23 hdu3377 Plan(轮廓线dp)
传送门 题意简述:给一个n*m的带权矩阵,求从左上角走到右下角的最大分数,每个格子只能经过最多一次,n,m≤9n,m\le9n,m≤9. 思路: 考虑轮廓线dpdpdp,但这道题并没有出现回路的限制因 ...
- 2019.01.23 hdu1964 Pipes(轮廓线dp)
传送门 题意简述:给一个没有障碍的网格图,任意两个格子连通需要花费一定代价,现在求一条覆盖所有格子的哈密顿回路的总权值的最小值. 思路: 跟这道题一毛一样,除了把求和变成求最小值以外. 代码: #in ...
- 2019.01.23 hdu1693 Eat the Trees(轮廓线dp)
传送门 题意简述:给一个有障碍的网格图,问用若干个不相交的回路覆盖所有非障碍格子的方案数. 思路:轮廓线dpdpdp的模板题. 同样是讨论插头的情况,只不过没有前一道题复杂,不懂的看代码吧. 代码: ...
- 2019.01.23 ural1519 Formula 1(轮廓线dp)
传送门 轮廓线dpdpdp模板题. 题意简述:给一个放有障碍的网格图,问有多少种方法能使所有非障碍格子都在同一条哈密顿回路上面. 考虑用括号序列的写法来状压这个轮廓线. 用000表示没有插头,111表 ...
- 梦想Android版CAD控件2019.01.23更新
下载地址:http://www.mxdraw.com/ndetail_10121.html?tdsourcetag=s_pcqq_aiomsg1. 增加异步读取CAD,DWG文件函数,MxFuncti ...
- 限制容器对CPU的使用 - 每天5分钟玩转 Docker 容器技术(28)
上节学习了如何限制容器对内存的使用,本节我们来看CPU. 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器 ...
- 26-限制容器对CPU的使用
默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制. Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重.如果不指定,默认值为 1024. 与 ...
- Docker——JVM 感知容器的 CPU 和 Memory 资源限制
前言 对于那些在Java应用程序中使用Docker的CPU和内存限制的人来说,可能会遇到一些挑战.特别是CPU限制,因为JVM在内部透明地设置GC线程和JIT编译器线程的数量. 这些可以通过命令行选项 ...
随机推荐
- 自学Linux命令行与Shell脚本之路
自学Linux命令行与Shell脚本之路[第一回]:初识Linux 1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3 ...
- [poj1160][IOI2000]Post Office【动态规划】
传送门 https://vjudge.net/problem/POJ-1160#author=SCU2018 题目描述 在一条水平的公路上建有n个小屋,两个小屋间的距离是它们的横坐标之差的绝对值.保证 ...
- 【mysql】mysql尾部空格
mysql 字段为varchar类型的在查询时候胡忽略尾部空格. 先看表结构 插入一条数据包含空格 在查询是可以查到的 所有在插入数据的时候要对插入字段的数据处理下,php可以用函数trim()去掉两 ...
- CF1096F Inversion Expectation
逆序对分三类: 1.已知对已知 树状数组直接处理即可 2.未知对未知 设未知数的位置数为\(m\),则有\(m(m-1)/2\)个数对.一个数对是逆序对的期望是\(0.5\)(一个逆序对与一个非逆序对 ...
- VSCode创建自定义代码段
上一篇:PyCharm创建自定义代码段(JetBrains系列通用) 设置方法 很简单,快速过一下,F1,然后输入snippets 然后选择对应语言 Python案例 内容和使用: { // pref ...
- Arch Linux中使用VMware Workstation不能打开vmmon内核模块
打开VMware Workstation出现错误提示:Could not open /dev/vmmon: No such device.Please make sure that the kerne ...
- [luogu3294][背单词]
题目链接 题意 读完题目就一个感受:这出题人tm不会说人话吗.真的感觉这个题理解题意比想出正解更难. 其实题目的意思就是,给出一些单词,给这些单词编个号,然后要求其他的单词中是这个单词后缀的词都在这个 ...
- MVC相关问题归纳
问题: 1.How MVC pattern flows 2.对象模型.关系模型 3.OR Framework 4.EF(Entity FrameWork)实体框架 5.模型驱动数据数据驱动模型的两种方 ...
- TreeView CheckBox勾选联动
http://www.cnblogs.com/excellently/p/TreeViewCheckBox.html 在C# Winform项目中用到了TreeView控件,并且需要勾选的功能.父子节 ...
- Day17--Python--面向对象--成员
成员 class Person: def __init__(self, name, num, gender,birthday): # 成员变量(实例变量) self.name = name self. ...