限制容器的 Block IO - 天天5分钟玩转 Docker 容器技术(29)

前面学习了如何限制容器对内存和CPU的使用,本节咱们来看 Block IO。docker

Block IO 是另外一种能够限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可经过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。ubuntu

注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。缓存

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    spa

docker run -it --name container_B --blkio-weight 300 ubuntu code

限制 bps 和 iops

bps 是 byte per second,每秒读写的数据量。
iops 是 io per second,每秒 IO 的次数。 orm

可经过如下参数控制容器的 bps 和 iops:
--device-read-bps,限制读某个设备的 bps。
--device-write-bps,限制写某个设备的 bps。
--device-read-iops,限制读某个设备的 iops。
--device-write-iops,限制写某个设备的 iops。 内存

下面这个例子限制容器写 /dev/sda 的速率为 30 MB/sci

docker run -it --device-write-bps /dev/sda:30MB ubuntu

咱们来看看实验结果:

136.png

经过 dd 测试在容器中写磁盘的速度。由于容器的文件系统是在 host /dev/sda 上的,在容器中写文件至关于对 host /dev/sda 进行写操做。另外,oflag=direct 指定用 direct IO 方式写文件,这样 --device-write-bps 才能生效。

结果代表,bps 25.6 MB/s 没有超过 30 MB/s 的限速。

做为对比测试,若是不限速,结果以下:

137.png

其余参数的使用方法相似,留给你们本身练习。

下一节咱们讨论实现容器的底层技术。 

二维码+指纹.png

相关文章
相关标签/搜索