zoukankan      html  css  js  c++  java
  • Docker CPU 资源限制——CPU固定核功能测试

        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资源用满

    $ 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并没有受到影响。

  • 相关阅读:
    php动态拼接变量名,可变变量,动态变量,使用花括号,使用两个$符
    php取整的几种方式,四舍五入,舍去法取整,进一法取整
    分享一张有趣的图,当程序员愿天堂没有代码
    php中函数 isset(), empty(), is_null() 的区别,boolean类型和string类型的false判断
    Linux查看系统当前登录用户的命令,top命令看到users有多个用户登录
    python如何通过windows命令行运行一个python程序文件?
    不要成为积极的废人,重要和紧急的四方格法,成功的四个基本步骤
    php CI如何实现全站静态生成html,动态创建目录
    怎么进入bios设置界面,电脑如何进入BIOS进行设置,怎么进入BIOS的方法集合
    分享几个好用的聚合工具网站,一个网站,解决一堆问题
  • 原文地址:https://www.cnblogs.com/zhenyuyaodidiao/p/5061884.html
Copyright © 2011-2022 走看看