use*_*905 2 io operating-system linux-kernel cgroups
我正在尝试使用cgroup blkio控制器来控制 I/O 带宽。
Cgroup已经设置并挂载成功,即调用 grep cgroup /proc/mounts
返回:
....
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
...
Run Code Online (Sandbox Code Playgroud)
然后我在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
Run Code Online (Sandbox Code Playgroud)
我的设备主要:次要编号在使用df -h和ls -l /dev/sda5用于存储设备时是正确的。
而且我仍然可以写入不需要设备主要:次要编号的文件,例如blkio.weight(但会引发相同的错误blkio.weigth_device)
知道为什么我收到那个错误吗?
不确定您使用的是哪种风格/版本的 Linux,在 RHEL 6.x 内核上,由于某种原因这不起作用,但是当我在 RHEL 和其他 Fedora 版本上编译自定义内核时它没有任何问题。
要检查您的内核是否支持,请运行lssubsys -am | grep blkio. 如果可以归档文件,请检查路径blkio.throttle.read_bps_device
但是,这里是一个如何持久执行此操作的示例,设置 cgroups 以限制程序不超过 1 Mibi/s:
/proc/partitionsRun Code Online (Sandbox Code Playgroud)`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 并添加以下条目
Run Code Online (Sandbox Code Playgroud)group ioload { blkio.throttle.read_bps_device = "252:0 1048576" } }
*: blkio ioload
Run Code Online (Sandbox Code Playgroud)`chkconfig {cgred,cgconfig} on;` `service {cgred,cgconfig} restart`
希望这可以帮助!