未应用 Docker IOPS 和读/写限制

未应用 Docker IOPS 和读/写限制

我使用以下命令来测试是否应用了 IOPS 和磁盘读/写限制,但事实并非如此。当我运行命令时,磁盘就会使用 100% 的 IO 和带宽。我想,我尝试改变磁盘,但我不确定应该使用哪个磁盘,因为我有 xvda、xvdf 和 dm0-dm8。

docker run --rm --device-read-bps=/dev/dm-0:1000 --device-write-bps=/dev/dm-0:1000 --device-read-iops=/dev/xvdf:20 --device-write-iops=/dev/xvdf:20 nginx bash -c "time dd if=/dev/zero of=testdocker bs=512k count=1000 oflag=dsync"

它无法正常工作的原因是什么?操作系统是 ubuntu,docker 版本是:Docker 版本 1.13.0,内部版本 49bf474

通过稍微修改命令,我给了它写入测试文件的直接路径,但现在它卡住了,什么也不做,只是挂在那里

docker run --rm -v "/dc:/dc" --device-read-bps=/dev/xvda:1m --device-write-bps=/dev/xvda:1m --device-read-iops=/dev/xvda:100 --device-write-iops=/dev/xvda:100 nginx bash -c "time dd if=/dev/zero of=/dc/testdocker bs=512 count=1000 oflag=dsync"

执行此命令后,IOWAIT 变为 100%,并且 docker 只包含挂起,不执行任何操作。我甚至无法停止它,甚至无法对它执行任何操作。

答案1

控制组 v1 无法限制缓冲 IO,而缓冲 IO 占系统中 IO 的绝大部分。

控制组 V2 可以。如果您使用的是兼容 v2 的内核(并且如果 docker 支持它,因为我不知道它是否支持),则应该使用它。

相关内容