Docker CPU 資源限制——CPU固定核功能測試

    Docker使用Linux cgroup來實現資源的限制,對於CPU的限制有兩種方法:node

1.cpusetdocker

    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的權重相應增長。spa

    因爲第二種方式理解上有些繞,且容器真正分到的CPU資源會隨着容器數及其餘容器權重而改變,我的建議並不太適合應用到生產場景中。本文主要分析第一種方式,即cpuset。code

 

測試步驟blog

    一、下載CPU測試image。agileek/cpuset-test給出了一種用於測試CPU的image,功能就是將指定的CPU資源用滿進程

$ docker pull agileek/cpuset-test

    二、測試容器佔用單獨CPU資源

$ docker run -it --rm --cpuset=4 agileek/cpuset-test

    三、另開終端窗口,觀察CPU佔用狀況it

[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

    四、測試容器佔用多個CPUio

$ docker run -it --rm --cpuset=0,2,4,5 agileek/cpuset-test /cpus 4

    五、另開終端窗口,觀察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並無受到影響。

相關文章
相關標籤/搜索