docker cpu是什么,讓我們一起了解一下?
當我們在一臺設備上運行多個Docker時,我們會對一個Docker容器的使用進行限制,避免其使用過多的系統硬件資源,而造成其他的容器“餓死”的現象。在Docker的使用中,我們通過使用cgroup來對Docker的容器資源使用進行限制。
Docker對容器CPU的限制可以分為三種,即相對份額限制、絕對使用限制以及CPU核心控制。
CPU相對份額限制:
所謂CPU相對份額限制,指的是給Docker的鏡像分配一個“份額”,使得當CPU資源緊張時,不同的Docker鏡像之間對CPU資源的競爭大致上是按照這個份額的比例來進行使用的。
CPU絕對使用限制:
不同與CPU的份額相對限制,Docker還支持一種“硬性”的對CPU資源的限制。我們都知道,現代操作系統為了保證多程序多任務的運行,對CPU的使用采取了分片的策略,CPU在使用時會不斷的從一個任務切換到另一個任務,每次獲得CPU資源的進程實際上就是獲得了CPU的使用權,或者說獲得了CPU分片。
CPU核心控制:
除了上述對CPU的使用限制外,現代的計算機一般是多核CPU,因此,我們有時還希望一個Docker容器能夠固定在一個CPU上運行。這對于NUMA(即非一致存儲訪問結構)的服務器尤為有用,而對于簡單的單核服務器則沒有任何作用。
在Docker容器運行時,我們可以使用參數–cpuset來綁定CPU,使得該Docker容器只在固定的CPU上運行。
容器CPU設置
默認設置下,所有容器可以平等地使用主機 CPU 資源并且沒有限制。docker?可以通過-c或–cpu-shares設置容器使用 CPU 的權重。如果不指定,默認值為 1024。
與內存限額不同,通過-c設置的 cpu share 并不是 CPU 資源的絕對數量,而是一個相對的權重值。某個容器最終能分配到的 CPU 資源取決于它的 cpu share 占所有容器 cpu share 總和的比例。通過 cpu share 可以設置容器使用 CPU 的優先級。
比如在 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。
以上就是小編的分享,希望可以幫助到大家。