Docker CPU 资源限制——CPU固定核功能测试
2015-12-20 21:32
615 查看
Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法:
1.cpuset
CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是第一个CPU)。
2.cpu.shares
CPU shares是相对权重, 设置为一个正整数,代表所分配的相对CPU资源比。在Docker中,使用默认的libcontainer引擎时,可以指定在docker run时指定-c或--cpu-shares=0。当DockerDaemon中增加新的容器时,CPU shares的权重相应减小,当删除容器时CPU shares的权重相应增加。
由于第二种方式理解上有些绕,且容器真正分到的CPU资源会随着容器数及其他容器权重而改变,个人建议并不太适合应用到生产场景中。本文主要分析第一种方式,即cpuset。
测试步骤
1、下载CPU测试image。agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满
2、测试容器占用单独CPU
3、另开终端窗口,观察CPU占用情况
4、测试容器占用多个CPU
5、另开终端窗口,观察CPU占用情况
经过以上的测试步骤,可以看到,当为容器配置某个CPU时,该CPU被占满,但其余的CPU并没有受到影响。
1.cpuset
CPU Set限定容器使用某个固定的CPU核。使用默认的libcontainer引擎时,可以通过--cpuset来指定进程/docker容器在执行时使用某几个固定的CPU。比如0-3或以逗号分割如0,3,4(0是第一个CPU)。
2.cpu.shares
CPU shares是相对权重, 设置为一个正整数,代表所分配的相对CPU资源比。在Docker中,使用默认的libcontainer引擎时,可以指定在docker run时指定-c或--cpu-shares=0。当DockerDaemon中增加新的容器时,CPU shares的权重相应减小,当删除容器时CPU shares的权重相应增加。
由于第二种方式理解上有些绕,且容器真正分到的CPU资源会随着容器数及其他容器权重而改变,个人建议并不太适合应用到生产场景中。本文主要分析第一种方式,即cpuset。
测试步骤
1、下载CPU测试image。agileek/cpuset-test给出了一种用于测试CPU的image,功能就是将指定的CPU资源用满
$ docker pull agileek/cpuset-test
2、测试容器占用单独CPU
$ docker run -it --rm --cpuset=4 agileek/cpuset-test
3、另开终端窗口,观察CPU占用情况
[root@zhenyunode ~]# mpstat -P ALL 5 10 Linux 3.10.0-123.el7.x86_64 (zhenyunode) 2015年12月20日 _x86_64_ (8 CPU) 21时25分17秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 21时25分22秒 all 12.68 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 87.27 21时25分22秒 0 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60 21时25分22秒 1 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60 21时25分22秒 2 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60 21时25分22秒 3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 21时25分22秒 4 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21时25分22秒 5 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80 21时25分22秒 6 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.60 21时25分22秒 7 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00
4、测试容器占用多个CPU
$ docker run -it --rm --cpuset=0,2,4,5 agileek/cpuset-test /cpus 4
5、另开终端窗口,观察CPU占用情况
[root@zhenyunode ~]# mpstat -P ALL 5 10 Linux 3.10.0-123.el7.x86_64 (zhenyunode) 2015年12月20日 _x86_64_ (8 CPU) 21时26分34秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 21时26分39秒 all 50.24 0.00 0.05 0.00 0.00 0.00 0.00 0.00 0.00 49.71 21时26分39秒 0 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21时26分39秒 1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 21时26分39秒 2 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21时26分39秒 3 0.40 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.40 21时26分39秒 4 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21时26分39秒 5 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 21时26分39秒 6 0.60 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.20 21时26分39秒 7 0.40 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.40
经过以上的测试步骤,可以看到,当为容器配置某个CPU时,该CPU被占满,但其余的CPU并没有受到影响。
相关文章推荐
- [置顶] 基于IBM Bluemix的Docker实践教程
- Docker
- 使用docker笔记
- 将 ASP.NET Core 1.0 应用作为 docker 镜像发布 (Linux版)
- sameersbn/gitlab6.9.2实战
- Docker实战(八):Docker安装ElasticSearch环境
- Java 开源博客 Solo 1.3.0 发布 - Docker 支持
- Java 开源博客 Solo 1.3.0 发布 - Docker 支持
- Java 开源博客 Solo 1.3.0 发布 - Docker 支持
- Java 开源博客 Solo 1.3.0 发布 - Docker 支持
- Docker 简介
- 创建Docker基本的debian镜像
- docker 存储池扩容方案
- 在局域网部署自己的Docker私有仓库
- Docker环境下部署Gitlab
- docker使用笔记
- 蘑菇街 私有云Docker实例应用
- Ubuntu 14.04 Docker 草稿
- Docker Swarm
- 【实战】五个Docker监控工具的对比