(八)限制容器的 Block IO
? 前面學習了如何限制容器對記憶體和CPU的使用,本節我們來看 Block IO,Block IO 是另一種可以限制容器使用的資源,Block IO 指的是磁盤的讀寫,docker 可通過設定權重、限制 bps 和 iops 的方式控制容器讀寫磁盤的帶寬,下面分別討論,
? 注:目前 Block IO 限額只對 direct IO(不使用檔案快取)有效,
(1)block IO 權重
? 默認情況下,所有容器能平等地讀寫磁盤,可以通過設定 --blkio-weight 引數來改變容器 block IO 的優先級, --blkio-weight 與 --cpu-shares 類似,設定的是相對權重值,默認為 500,在下面的例子中,container_A 讀寫磁盤的帶寬是 container_B 的兩倍,
docker run -it --name container_A --blkio-weight 600 ubuntu
docker run -it --name container_B --blkio-weight 300 ubuntu
(2)限制 bps 和 iops
bps 是 byte per second,每秒讀寫的資料量, iops 是 io per second,每秒 IO 的次數,
可通過以下引數控制容器的 bps 和 iops:
--device-read-bps,限制讀某個設備的 bps,
--device-write-bps,限制寫某個設備的 bps,
--device-read-iops,限制讀某個設備的 iops,
--device-write-iops,限制寫某個設備的 iops,
下面這個例子限制容器寫 /dev/sda 的速率為 30 MB/s ,我們來看看實驗結果:
root@cuiyongchao:~# docker run -it --device-write-bps /dev/sda:30MB ubuntu
root@ab95a8d0707f:/# time dd if=/dev/zero of=test.txt bs=1M count=1000 oflag=direct
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 33.321 s, 31.5 MB/s
real 0m33.322s
user 0m0.000s
sys 0m0.202s
root@ab95a8d0707f:/#
? 通過 dd 測驗在容器中寫磁盤的速度,因為容器的檔案系統是在 host /dev/sda 上的,在容器中寫檔案相當于對 host /dev/sda 進行寫操作,另外,oflag=direct 指定用 direct IO 方式寫檔案,這樣 --device-write-bps 才能生效,
? 對比未限速的情況:
root@cuiyongchao:~# docker run -it ubuntu
root@9b1d1cf951f2:/# time dd if=/dev/zero of=test.txt bs=1M count=1000 oflag=direct
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB, 1000 MiB) copied, 0.393763 s, 2.7 GB/s
real 0m0.395s
user 0m0.000s
sys 0m0.240s
root@9b1d1cf951f2:/#
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/213786.html
標籤:其他
下一篇:網聯V2X測驗解決方案
