2016-11-17 24 views
7

我將在t2.medium的容器服務中註冊一個新任務。 我看到了cpu參數等於0的示例。 我試圖找出它是什麼以及我需要爲這個任務放置多少個。aws容器服務中'cpu'參數的含義是什麼?

的一切,我可以根據這個問題找到: http://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html?shortFooter=true http://docs.aws.amazon.com/AmazonECS/latest/developerguide/example_task_definitions.html

回答

20

「的CPU單元的數量保留在容器的容器 實例對每個CPU核1024個CPU單元。此參數 指定爲容器預留的CPU的最小數量,並且 容器與 實例上的其他容器共享未分配的CPU單元,其分配量與其他容器具有相同的比例此參數 映射到Create中的CpuShares Docker 遠程API的容器部分和docker運行的--cpu-shares選項。「

t2.medium有2個vCPU,因此它有2,048個可用的CPU單元來安排。如果只想在主機上運行一個容器,則可以預算所有2,048個CPU單元,但不會在該主機上放置其他容器。

集裝箱始終保證在需要時至少獲得預算CPU。此外,關於CPU單元的一個整潔的事情是,如果沒有其他容器佔用資源,容器可以突破其分配的單元。例如,如果在t2.medium上運行兩個任務,每個任務包含1,024個預算CPU單元,則考慮到其他任務完全空閒,每個任務可以單獨突發至2,048個。當您以這種方式開始共享主機時,您可以真正從使用ECS中節省成本節省。

此外,如果所有CPU單元都沒有預算出來,ECS會自動將剩餘的CPU單元按預算CPU單元的比例分配給每個容器。因此,如果有兩個任務在t2.medium上運行,每個CPU有0個CPU單元,則每個容器將有效地獲得1,024個CPU單元,因爲沒有其他容器保留它們。

這裏需要注意的一點是內存的工作原理有所不同;這是一個艱難的限制。如果容器試圖分配比預算更多的內存,那麼任務/容器將退出。你可以低估CPU單位,並且通常會放棄它(因爲容器可以突破它們的供應),但是你需要確保你保持在你的內存限制內。


示例: 如果將其設置爲0,將採取未保留CPU的成比例量。假定這些情況是與2048個CPU單位t2.mediums:

任務#1 - 0 CPU單位, 任務#2 - 0 CPU單位: 在這種情況下,兩個任務#1和任務#2將被給予由於有2,048個未保留單元,所以有1,024個CPU單元。由於CPU單元保留的任務爲1:1,因此它們將獲得可用CPU單元的相同份額。

任務#1 - 0 CPU單位, 任務#2 - 1024 CPU單位: 任務#2將被給予2048個CPU單元和任務#1將因爲它試圖瓜分1024個未使用的CPU單位給出0比例爲0:1,024。

任務#1 - 0 CPU單元: 如果只有一個任務在機器上,它將被賦予全部2,048個CPU單元,因爲所有單元都沒有被使用,它們按照它們的預留比率在容器中分開。

+0

謝謝你幫助我,但我還有一個問題。 如果我將cpu設置爲零,並且我們有默認值,會發生什麼情況? 在此先感謝。 – nightmare

+0

我加了幾個例子。 – louahola

+0

非常感謝你! 現在很明顯。 – nightmare

相關問題