我无法让cgroup blkio节流子组中进程的iops。我使用的是CentOS 7,3.10.0-229.我创建了cgroup /sys/fs/cgroup/blkio/user.片/test1 1,然后执行
echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/test1/blkio.throttle.read_iops_devicewrite_iops_device也是如此。8:32对应于/dev/sdc的HDD。然后,我使用压力-ng在/srv/hdd-c上读取和写入驱动器。
cgexec -g blkio:user.slice/test1 stress-ng --temp-path /srv/hdd-c --hdd 15 -t 180和
cgexec -g blkio:user.slice/test1 stress-ng --temp-path /srv/hdd-c --readahead 15 -t 180我确认了启动的30个进程是在blkio:user.片/test1 1组中使用ps eo pid,user,args,cgroup运行的。
当我执行iostat 5时,sdc的tps数量是400到600,这与我在test1 cgroup之外运行它们时相同。如果我执行echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/blkio.throttle.{read|write}_iops_device并在user.slice或user.slice/test1 cgroup中运行它们,则得到相同的结果。但是,如果我使用echo 8:32 10 > /sys/fs/cgroup/blkio/blkio.throttle.{read|write}_iops_device在blkio的根处节流,然后运行压力-ng进程,则iostat 5显示sdc的tps为10-11。
blkio节流只在根级工作吗?手册页似乎并没有说明这一点。
发布于 2017-04-17 16:24:20
因此,我从这个问题的答案中学到的问题是,内核缓冲绕过了blkio系统。使用没有缓冲和指向的fio,我可以使用echo 8:32 10 > /sys/fs/cgroup/blkio/user.slice/blkio.throttle.{read|write}_iops_device将iops节流到设备上,达到每秒10次。
发布于 2019-08-14 14:18:59
我得到了和你一样的结果,但发现如果我用
Blkio.throttle.{读-写}_bps_device
这将限制设备被用作文件系统时的吞吐量。
https://serverfault.com/questions/842833
复制相似问题