溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker如何實(shí)現(xiàn)CPU資源限制

發(fā)布時(shí)間:2021-12-13 16:14:31 來源:億速云 閱讀:262 作者:小新 欄目:服務(wù)器

這篇文章主要介紹了Docker如何實(shí)現(xiàn)CPU資源限制,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一: 描述

Windows系統(tǒng)使用

--cpu-period int                 限制 CPU CFS 的周期,范圍從 100ms~1s,即[1000, 1000000]

--cpu-quota int                 限制 CPU CFS 配額,必須不小于1ms,即 >= 1000

-c, --cpu-shares int           CPU 共享權(quán)值(相對權(quán)重)

--cpuset-cpus string          允許使用的 CPU 集,值可以為 0-3,0,1

--cpuset-mems string        只對 NUMA 系統(tǒng)有效

三:命令說明

1.默認(rèn)情況下,所有的容器得到同等比例的 CPU 周期。在有多個(gè)容器競爭 CPU 時(shí)我們可以設(shè)置每個(gè)容器能使用的 CPU 時(shí)間比例。這個(gè)比例叫作共享權(quán)值,通過-c或--cpu-shares設(shè)置。Docker 默認(rèn)每個(gè)容器的權(quán)值為 1024。不設(shè)置或?qū)⑵湓O(shè)置為 0,都將使用這個(gè)默認(rèn)值。系統(tǒng)會(huì)根據(jù)每個(gè)容器的共享權(quán)值和所有容器共享權(quán)值和比例來給容器分配 CPU 時(shí)間。

假設(shè)有三個(gè)正在運(yùn)行的容器,這三個(gè)容器中的任務(wù)都是 CPU 密集型的。第一個(gè)容器的 cpu 共享權(quán)值是 1024,其它兩個(gè)容器的 cpu 共享權(quán)值是 512。第一個(gè)容器將得到 50% 的 CPU 時(shí)間,而其它兩個(gè)容器就只能各得到 25% 的 CPU 時(shí)間了。如果再添加第四個(gè) cpu 共享值為 1024 的容器,每個(gè)容器得到的 CPU 時(shí)間將重新計(jì)算。第一個(gè)容器的CPU 時(shí)間變?yōu)?33%,其它容器分得的 CPU 時(shí)間分別為 16.5%、16.5%、33%。

必須注意的是,這個(gè)比例只有在 CPU 密集型的任務(wù)執(zhí)行時(shí)才有用。在四核的系統(tǒng)上,假設(shè)有四個(gè)單進(jìn)程的容器,它們都能各自使用一個(gè)核的 100% CPU 時(shí)間,不管它們的 cpu 共享權(quán)值是多少。

在多核系統(tǒng)上,CPU 時(shí)間權(quán)值是在所有 CPU 核上計(jì)算的。即使某個(gè)容器的 CPU 時(shí)間限制少于 100%,它也能使用各個(gè) CPU 核的 100% 時(shí)間。

2.docker提供了–cpu-period、–cpu-quota兩個(gè)參數(shù)控制容器可以分配到的CPU時(shí)鐘周期。–cpu-period是用來指定容器對CPU的使用要在多長時(shí)間內(nèi)做一次重新分配,而–cpu-quota是用來指定在這個(gè)周期內(nèi),最多可以有多少時(shí)間用來跑這個(gè)容器。跟–cpu-shares不同的是這種配置是指定一個(gè)絕對值,而且沒有彈性在里面,容器對CPU資源的使用絕對不會(huì)超過配置的值。

cpu-period和cpu-quota的單位為微秒(μs)。cpu-period的最小值為1000微秒,最大值為1秒(10^6 μs),默認(rèn)值為0.1秒(100000 μs)。cpu-quota的值默認(rèn)為-1,表示不做控制。

舉個(gè)例子,如果容器進(jìn)程需要每1秒使用單個(gè)CPU的0.2秒時(shí)間,可以將cpu-period設(shè)置為1000000(即1秒),cpu-quota設(shè)置為200000(0.2秒)。當(dāng)然,在多核情況下,如果允許容器進(jìn)程需要完全占用兩個(gè)CPU,則可以將cpu-period設(shè)置為100000(即0.1秒),cpu-quota設(shè)置為200000(0.2秒)


四:測試

agileek/cpuset-test 鏡像是一種用于測試CPU的image,功能就是將指定的CPU資源用滿。

docker pull agileek/cpuset-test

1.    docker run -it --cpuset-cpus="1,3" agileek/cpuset /bin/bash

表示容器中的進(jìn)程可以在cpu 1和cpu 3 上執(zhí)行

2.    docker run -it --cpuset-cpus="0-2" agileek/cpuset /bin/bash

表示容器中的進(jìn)程可以在cpu 1,cpu 2,cpu 3 上執(zhí)行

3.   docker run -ti --rm --name mytest -c 1024 agileek/cpuset-test

打開一個(gè)新的端口,監(jiān)控容器CPU占用情況
mpstat -P ALL 5 10

Docker如何實(shí)現(xiàn)CPU資源限制

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Docker如何實(shí)現(xiàn)CPU資源限制”這篇文章對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI