docker 的資源分配

內存分配

-m 或者--memory :分配內存

--memory-swap:分配臨時內存

docker run -it -m 200M --memory-swap=400M ubuntu :給ubuntu分配200兆內存和400M臨時內存,默認分配可調控內存不能小于內存分配額,如果只給-m的參數(shù),則memory-swap默認是兩倍。

壓力測試

命令:progrium/stress

docker run -it -m 200M --memory-swap=300M progrium/stress --vm 1 --vm-byte 280M

--vm 分配一個線程

--vm-byte 線程的內存大小

--cpu 分配cpu數(shù)量

這里解釋一下關于壓力測試progrium/stress,他不是跑在docker中的,而是跑在host上面。而且這里有個坑,我查閱書籍的時候發(fā)現(xiàn)書上對這點都沒有細致講解,僅僅打印一條命令。讓我以為他們之間內部是有某種聯(lián)系將壓測是打在了docker上面,其實不是。progrium只是代替docker顯示數(shù)據(jù)跑滿的情況下顯示數(shù)據(jù)而已

cpu資源分配

默認情況下,所有docker都不會對cpu進行搶占,但是呢如果出現(xiàn)cpu吃緊,每個docker都去搶占資源了,所以這里docker研發(fā)者也是考慮到位了的

-c 或者 --cpu-share : 進行配置權重分配

docker run --name " a" -c 1024 ubuntu docker run --name "b" -c 512 ubuntu

這里解釋一下:當cpu空閑是,這個分配時不起作用的,因為如果b容器運行資源/訪問比較大,就很可能所占的cpu是大于a的,但是當兩個訪問都大的時候,a就是兩倍b的cpu資源。1024只是一個量的比較,不做具體數(shù)值。

測試:

progrium 很直觀的能看見docker運行情況,但是網上都沒什么教程。我們這里來測試一下。

docker run --name "a" -c 1024 -it progrium/stress --cpu 2

docker run --name "b" -c 512-it progrium/stress --cpu 2

此時你去細看的話(用top)你就會發(fā)現(xiàn)兩核的cpu幾乎都被跑滿,而且a的占用量是b的兩倍。但是如果只有a或者b在高壓的跑的話,cpu會被a或者b跑滿

Block帶寬資源分配

block io 是一種限制容器使用資源的方式,block io 指的是磁盤的讀寫,docker可以通過設置權重,限制bps,iops方式控制容器讀寫磁盤的帶寬。

--blkio-weight :和--share-cpu類似,默認值是500,通過權重來進行比較

bps:byte per second :每秒讀取數(shù)據(jù)量

iops :io per second :每秒讀取io的次數(shù)

--device-read-bps? ?/demo/a:20MB

--device-write-bps? /demo/a:20MB

--device-read-iops??/demo/a:20MB

--device-write-iops??/demo/a:20MB

示例:docker run -it --device-write-bps /demo/a:20MB ubuntu

表示次容器對容器映射目錄 即 host 的/demo/a 目錄讀寫速度限制在20mb/s

用處:一般是沒啥作用的,但是對性能有極致要求的人來說有不一樣了,如果一個數(shù)據(jù)庫的docker 和webdocker 放在同一臺host上面,那么他們的讀寫是可以進行按需求配置的

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容