亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

Docker 限制容器可用的CPU的方式

2024-09-01 13:53:54
字體:
來源:轉載
供稿:網友

默認情況下容器可以使用的主機 CPU 資源是不受限制的。和內存資源的使用一樣,如果不對容器可以使用的 CPU 資源進行限制,一旦發生容器內程序異常使用 CPU 的情況,很可能把整個主機的 CPU 資源耗盡,從而導致更大的災難。本文將介紹如何限制容器可以使用的 CPU 資源。

本文的 demo 中會繼續使用《Docker: 限制容器可用的內存》一文中創建的 docker 鏡像 u-stress 進行壓力測試,文中就不再過多的解釋了。

限制可用的 CPU 個數

在 docker 1.13 及更高的版本上,能夠很容易的限制容器可以使用的主機 CPU 個數。只需要通過 --cpus 選項指定容器可以使用的 CPU 個數就可以了,并且還可以指定如 1.5 之類的小數。接下來我們在一臺有四個 CPU 且負載很低的主機上進行 demo 演示:

docker,限制,容器,cpu

通過下面的命令創建容器,--cpus=2 表示容器最多可以使用主機上兩個 CPU:

$ docker run -it --rm --cpus=2 u-stress:latest /bin/bash

然后由 stress 命令創建四個繁忙的進程消耗 CPU 資源:

# stress -c 4

我們先來看看 docker stats 命令的輸出:

docker,限制,容器,cpu

容器 CPU 的負載為 200%,它的含義為單個 CPU 負載的兩倍。我們也可以把它理解為有兩顆 CPU 在 100% 的為它工作。
再讓我們通過 top 命令看看主機 CPU 的真實負載情況:

docker,限制,容器,cpu

哈哈,有點大跌眼鏡!實際的情況并不是兩個 CPU 負載 100%,而另外兩個負載 0%。四個 CPU 的負載都是 50%,加起來容器消耗的 CPU 總量就是兩個 CPU 100% 的負載。

看來對于進程來說是沒有 CPU 個數這一概念的,內核只能通過進程消耗的 CPU 時間片來統計出進程占用 CPU 的百分比。這也是我們看到的各種工具中都使用百分比來說明 CPU 使用率的原因。

嚴謹起見,我們看看 docker 的官方文檔中是如何解釋 --cpus 選項的:

Specify how much of the available CPU resources a container can use.

果然,人家用的是 "how much",不可數的!并且 --cpus 選項支持設為小數也從側面說明了對 CPU 的計量只能是百分比。
看來筆者在本文中寫的 "CPU 個數" 都是不準確的。既然不準確,為什么還要用?當然是為了容易理解。況且筆者認為在 --cpus 選項的上下文中理解為 "CPU 個數" 并沒有問題(有興趣的同學可以讀讀 --cpus 選項的由來,人家的初衷也是要表示 CPU 個數的)。

雖然 --cpus 選項用起來很爽,但它畢竟是 1.13 才開始支持的。對于更早的版本完成同樣的功能我們需要配合使用兩個選項:--cpu-period 和 --cpu-quota(1.13 及之后的版本仍然支持這兩個選項)。下面的命令實現相同的結果:

 

復制代碼 代碼如下:
$ docker run -it --rm --cpu-period=100000 --cpu-quota=200000 u-stress:latest /bin/bash

 

這樣的配置選項是不是讓人很傻眼呀!100000 是什么?200000 又是什么? 它們的單位是微秒,100000 表示 100 毫秒,200000 表示 200 毫秒。它們在這里的含義是:在每 100 毫秒的時間里,運行進程使用的 CPU 時間最多為 200 毫秒(需要兩個 CPU 各執行 100 毫秒)。要想徹底搞明白這兩個選項的同學可以參考:CFS BandWith Control。我們要知道這兩個選項才是事實的真相,但是真相往往很殘忍!還好 --cpus 選項成功的解救了我們,其實它就是包裝了 --cpu-period 和 --cpu-quota。

指定固定的 CPU

通過 --cpus 選項我們無法讓容器始終在一個或某幾個 CPU 上運行,但是通過 --cpuset-cpus 選項卻可以做到!這是非常有意義的,因為現在的多核系統中每個核心都有自己的緩存,如果頻繁的調度進程在不同的核心上執行勢必會帶來緩存失效等開銷。下面我們就演示如何設置容器使用固定的 CPU,下面的命令為容器設置了 --cpuset-cpus 選項,指定運行容器的 CPU 編號為 1:

$ docker run -it --rm --cpuset-cpus="1" u-stress:latest /bin/bash

再啟動壓力測試命令:

# stress -c 4

然后查看主機 CPU 的負載情況:

docker,限制,容器,cpu

這次只有 Cpu1 達到了 100%,其它的 CPU 并未被容器使用。我們還可以反復的執行 stress -c 4 命令,但是始終都是 Cpu1 在干活。

再看看容器的 CPU 負載,也是只有 100%:

docker,限制,容器,cpu

--cpuset-cpus 選項還可以一次指定多個 CPU:

$ docker run -it --rm --cpuset-cpus="1,3" u-stress:latest /bin/bash

這次我們指定了 1,3 兩個 CPU,運行 stress -c 4 命令,然后檢查主機的 CPU 負載:

docker,限制,容器,cpu

Cpu1 和 Cpu3 的負載都達到了 100%。

容器的 CPU 負載也達到了 200%:

docker,限制,容器,cpu

--cpuset-cpus 選項的一個缺點是必須指定 CPU 在操作系統中的編號,這對于動態調度的環境(無法預測容器會在哪些主機上運行,只能通過程序動態的檢測系統中的 CPU 編號,并生成 docker run 命令)會帶來一些不便。

設置使用 CPU 的權重

當 CPU 資源充足時,設置 CPU 的權重是沒有意義的。只有在容器爭用 CPU 資源的情況下, CPU 的權重才能讓不同的容器分到不同的 CPU 用量。--cpu-shares 選項用來設置 CPU 權重,它的默認值為 1024。我們可以把它設置為 2 表示很低的權重,但是設置為 0 表示使用默認值 1024。
下面我們分別運行兩個容器,指定它們都使用 Cpu0,并分別設置 --cpu-shares 為 512 和 1024:

$ docker run -it --rm --cpuset-cpus="0" --cpu-shares=512 u-stress:latest /bin/bash$ docker run -it --rm --cpuset-cpus="0" --cpu-shares=1024 u-stress:latest /bin/bash

在兩個容器中都運行 stress -c 4 命令。

此時主機 Cpu0 的負載為 100%:

docker,限制,容器,cpu

容器中 CPU 的負載為:

docker,限制,容器,cpu

兩個容器分享一個 CPU,所以總量應該是 100%。具體每個容器分得的負載則取決于 --cpu-shares 選項的設置!我們的設置分別是 512 和 1024,則它們分得的比例為 1:2。在本例中如果想讓兩個容器各占 50%,只要把 --cpu-shares 選項設為相同的值就可以了。

總結

相比限制容器用的內存,限制 CPU 的選項要簡潔很多。但是簡潔絕對不是簡單,大多數把復雜東西整簡單的過程都會丟失細節或是模糊一些概念,比如從 --cpu-period 和 --cpu-quota 選項到 --cpus 選項的進化。對于使用者來說這當然是好事,可以減緩我們的學習曲線,快速入手。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲理论片在线观看| 亚洲精品久久久一区二区三区| 国产一区二区日韩精品欧美精品| 成人久久一区二区| 欧美大片免费看| 久久久伊人欧美| 久久这里有精品视频| 69av成年福利视频| 欧美午夜女人视频在线| 成人免费淫片aa视频免费| 伊人伊人伊人久久| 91影院在线免费观看视频| 日韩美女视频免费在线观看| 91tv亚洲精品香蕉国产一区7ujn| 亚洲xxxx做受欧美| 精品人伦一区二区三区蜜桃网站| 欧美国产亚洲精品久久久8v| 国产精品网站视频| 久久久久久久久91| 亚洲欧美日韩一区二区三区在线| 成人午夜一级二级三级| 欧美裸体xxxx极品少妇软件| 久久国产视频网站| 国内精品国产三级国产在线专| 欧美高清理论片| 欧美日韩国产一区二区三区| 欧美成人黑人xx视频免费观看| 精品国产福利视频| 韩国国内大量揄拍精品视频| 孩xxxx性bbbb欧美| 成人在线中文字幕| 91在线直播亚洲| 91地址最新发布| 久久韩剧网电视剧| 欧美在线观看视频| 久热精品在线视频| 一本色道久久综合狠狠躁篇怎么玩| 国产精品美乳在线观看| 亚洲精品欧美一区二区三区| 色伦专区97中文字幕| 日韩av不卡在线| 一本一道久久a久久精品逆3p| 久久精品男人天堂| 欧美xxxwww| 亚洲欧美日韩久久久久久| 黑人精品xxx一区一二区| 国产精品夜色7777狼人| 欧美精品在线免费| 一区二区三区视频在线| 国产精品电影久久久久电影网| 成人做爰www免费看视频网站| 色综合色综合久久综合频道88| 久久免费视频在线| 国产精品88a∨| 日韩精品在线观看一区| 欧美日韩中文字幕日韩欧美| 性欧美长视频免费观看不卡| 欧美老少配视频| 一本色道久久综合亚洲精品小说| 久久成人在线视频| 深夜福利国产精品| 欧美大尺度电影在线观看| 成人精品视频99在线观看免费| 欧美性猛交xxxx偷拍洗澡| 欧美第一页在线| 91麻豆桃色免费看| 久久久人成影片一区二区三区观看| 国产精品视频yy9099| 日韩中文字幕在线看| 久久夜色撩人精品| 亚洲男女自偷自拍图片另类| 久久999免费视频| 亚洲电影免费观看高清| 欧美激情aaaa| 成人久久18免费网站图片| 日韩欧美在线视频日韩欧美在线视频| 伊人久久久久久久久久| 欧美性xxxx在线播放| 亚洲人成在线一二| 精品无人区乱码1区2区3区在线| 日韩欧美在线观看视频| 伊人男人综合视频网| 午夜美女久久久久爽久久| 日韩美女在线观看| 成人免费大片黄在线播放| 国模精品视频一区二区| 91av福利视频| 国产成人自拍视频在线观看| 欧美裸体男粗大视频在线观看| 欧美激情日韩图片| 91在线色戒在线| 精品久久久久久国产| 91大神在线播放精品| 成人av色在线观看| 国产精品www色诱视频| 91视频九色网站| 国语自产偷拍精品视频偷| 国产99视频精品免视看7| 欧美日韩在线看| 亚洲精品不卡在线| 日本在线观看天堂男亚洲| 亚洲性日韩精品一区二区| 色综久久综合桃花网| 日韩欧美极品在线观看| 欧美国产乱视频| 日韩美女在线观看| 69久久夜色精品国产7777| 亚洲激情自拍图| 欧美高清视频在线播放| 国产一区二中文字幕在线看| 精品国内产的精品视频在线观看| 亚洲欧美色图片| 欧美在线一区二区三区四| 青青青国产精品一区二区| 欧美激情在线观看| 久久香蕉国产线看观看av| 久久国产精品免费视频| 久久网福利资源网站| 成人av电影天堂| 6080yy精品一区二区三区| 中文字幕成人精品久久不卡| 亚洲色图av在线| 欧美裸体男粗大视频在线观看| 美女视频久久黄| 一区二区日韩精品| 久久久中精品2020中文| 成人免费在线网址| 国产精品一区二区久久国产| 亚洲欧洲一区二区三区久久| 亚洲日本中文字幕免费在线不卡| 亚洲欧洲高清在线| 欧美一级高清免费| 亚洲男人的天堂网站| 欧美激情区在线播放| 欧美极品美女电影一区| 欧美精品在线播放| 亚洲第一综合天堂另类专| 久久久久国产精品www| 日韩一二三在线视频播| 韩剧1988免费观看全集| 久久久综合av| 久久精品国产精品亚洲| 国产精品久久久av久久久| 日韩av中文字幕在线| 免费91麻豆精品国产自产在线观看| 性欧美xxxx| 国语自产精品视频在线看抢先版图片| 日韩av在线看| 亚洲理论电影网| 久久青草精品视频免费观看| 国产精品观看在线亚洲人成网| 91成人天堂久久成人| 成人免费看吃奶视频网站| 亚洲自拍偷拍区| 久久久久久久久国产精品| 日韩久久精品成人| 欧美极品少妇与黑人| 欧美激情久久久| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲区中文字幕| 日韩欧美在线看| 色999日韩欧美国产| 亚洲精品久久久久久久久久久久久| 亚洲毛片在线免费观看|