我想测量在Docker容器中运行的应用程序的IO(数据读/写到HDD)。因为有更多的容器, 我决定监视相应容器的 blkio 文件。问题是,所有 blkio 文件都没有 在容器中写入大量数据时进行更新。
我在做什么:
docker run -ti fedora /bin/bash
dd if=/dev/urandom of=./outfile bs=1M count=1000
(创建1GB文件)dd
正在运行时,我正在观看其中的所有 blkio 文件
使用/sys/fs/cgroup/blkio/docker/[containerID]/
的{{1}}目录问题在于watch -n 0.2 cat *
完成后,文件在执行过程中都没有更新。
(我仔细检查了dd
,以确保我在看正确的容器。)
为了确保将数据写入磁盘,并且不在操作系统缓冲区中,我在容器中运行了相同的命令,
但我正在查看整个系统containerID
的 blkio 文件。在这种情况下,文件是
在watch -n 0.2 cat /sys/fs/cgroup/blkio*
执行期间和执行之后(操作系统刷新到缓冲区时)进行了更新。
我还将dd
设置为50MB [1],这应该确保将数据写入磁盘并且不缓存在内存中。
我正在使用Fedora 28和Docker 18.03.1-ce。 PC具有32GB RAM和500GB HDD。
为什么IO操作未记录在容器的 blkio 文件中?