限制容器對CPU的使用 - 天天5分鐘玩轉 Docker 容器技術(28)

上節學習瞭如何限制容器對內存的使用,本節咱們來看CPU。docker


默認設置下,全部容器能夠平等地使用 host CPU 資源而且沒有限制。ubuntu

Docker 能夠經過 -c 或 --cpu-shares 設置容器使用 CPU 的權重。若是不指定,默認值爲 1024。學習

與內存限額不一樣,經過 -c 設置的 cpu share 並非 CPU 資源的絕對數量,而是一個相對的權重值。某個容器最終能分配到的 CPU 資源取決於它的 cpu share 佔全部容器 cpu share 總和的比例。線程

換句話說:經過 cpu share 能夠設置容器使用 CPU 的優先級code

好比在 host 中啓動了兩個容器:內存

docker run --name "container_A" -c 1024 ubuntu資源

docker run --name "container_B" -c 512 ubuntu容器


container_A 的 cpu share 1024,是 container_B 的兩倍。當兩個容器都須要 CPU 資源時,container_A 能夠獲得的 CPU 是 container_B 的兩倍。二維碼

須要特別注意的是,這種按權重分配 CPU 只會發生在 CPU 資源緊張的狀況下。若是 container_A 處於空閒狀態,這時,爲了充分利用 CPU 資源,container_B 也能夠分配到所有可用的 CPU。im

下面咱們繼續用 progrium/stress 作實驗。

  1. 啓動 container_A,cpu share 爲 1024: 

    --cpu 用來設置工做線程的數量。由於當前 host 只有 1 顆 CPU,因此一個工做線程就能將 CPU 壓滿。若是 host 有多顆 CPU,則須要相應增長 --cpu 的數量。

  2. 啓動 container_B,cpu share 爲 512: 

  3. 在 host 中執行 top,查看容器對 CPU 的使用狀況: 

    container_A 消耗的 CPU 是 container_B 的兩倍。

  4. 如今暫停 container_A: 

  5. top 顯示 container_B 在 container_A 空閒的狀況下可以用滿整顆 CPU: 

CPU限額就討論到這裏,下一節咱們將學習如何限制容器對 Block IO 帶寬資源的使用。

二維碼+指紋.png

相關文章
相關標籤/搜索