我尝试使用 cgroup blkio 控制器来控制I / O带宽。
已成功设置并装入Cgroup,即调用grep cgroup /proc/mounts
返回:
....
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
...
然后我在blkio
文件夹中创建一个新文件夹并写入文件blkio.throttle.read_bps_device
,如下所示:
1. mkdir user1; cd user1
2. echo "8:5 10485760" > blkio.throtlle.read_bps_device
----> echo: write error: Invalid argument
我的设备专业:使用df -h
和ls -l /dev/sda5
作为存储设备的次要编号是正确的。
我仍然可以写入不需要设备主要文件的文件:次要编号,例如blkio.weight
(但是blkio.weigth_device
会抛出相同的错误)
知道我为什么会收到这个错误吗?
答案 0 :(得分:4)
在RHEL 6.x内核上,不确定您使用的是哪种Linux /版本的Linux,由于某种原因这不起作用,但是当我在RHEL上的自定义内核和其他Fedora版本上编译时,它没有任何效果的问题。
要检查内核是否支持,请运行lssubsys -am | grep blkio
。如果可以归档文件blkio.throttle.read_bps_device
但是,这是一个如何持久执行此操作的示例,设置一个cgroup以限制程序不超过1 Mibi / s:
/proc/partitions
`cat /proc/partitions | grep vda` major minor #blocks name 252 0 12582912 vda --> this is the primary disk (with MAJOR:MINOR -> 8:0)
现在,如果要将程序限制为1mib / s(将值转换为bytes / s),如下所示。 => 1MiB / s => 1024 kiB / 1MiB * 1024 B / s = 1048576字节/秒
编辑/etc/cgconfig.conf并添加以下条目
group ioload { blkio.throttle.read_bps_device = "252:0 1048576" } }
*:blkio ioload
`chkconfig {cgred,cgconfig} on;` `service {cgred,cgconfig} restart`
希望这有帮助!