当进程具有输出重定向时,如何限制/监视 cgroup 进程的 blkio

当进程具有输出重定向时,如何限制/监视 cgroup 进程的 blkio

我对 cgroup blkio 控制器有一些疑问。
我想限制特定进程的 IOPS。此过程使用 IO 重定向将 stdout 内容写入文件。我尝试将进程放入cgroup中。但是,cgroup 似乎没有捕获进程上的 IO 操作,因此无法限制 IOPS。

我做了一个小实验来模拟这个过程。这就是我所做的:

cgexec -g blkio:/dummy_group --sticky dd bs=1 if=/dev/zero of=/dev/stdout count=30000000 > /tmp/test

我计划使用 dd 生成一个 30MB 的文件,将其输出到 stdout,然后重定向到该文件。我预计写操作应该记录在 cgroup 统计信息中。但是,当我读取“/cgroup/blkio/dummy_group/blkio.throttle.io_serviced”文件时,“写入”数字没有改变!

然后我使用 cp 命令执行了类似的任务,“写入”编号确实发生了变化:

cgexec -g blkio:/dummy_group --sticky cp /tmp/test /tmp/test2

我想知道为了实现这个目标我是否做错了什么。监视和限制使用 IO 重定向执行 IO 的进程的正确方法是什么?

谢谢。

相关内容