2

我正在尝试通过使用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 -hls -l /dev/sda5存储设备时是正确的。

而且我仍然可以写入不需要设备主要:次要编号的文件,例如blkio.weight(但抛出相同的错误blkio.weigth_device

知道为什么我得到那个错误吗?

4

1 回答 1

6

不确定您在 RHEL 6.x 内核上使用的是哪种风格/版本的 Linux,由于某种原因这不起作用,但是当我在 RHEL 和其他 Fedora 版本上的自定义内核上编译时它可以正常工作。

要检查您的内核是否支持,请运行lssubsys -am | grep blkio. 检查路径是否可以归档文件blkio.throttle.read_bps_device

但是,这里有一个示例,说明如何持续执行此操作,设置 cgroups 以限制程序不超过 1 Mibi/s:

  1. 获取 MAJOR:MINOR 设备号/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)
  1. 现在,如果您想将程序限制为 1mib/s(将值转换为字节/秒),如下所示。=> 1MiB/s => 1024 kiB/1MiB * 1024 B/s = 1048576 字节/秒

  2. 编辑 /etc/cgconfig.conf 并添加以下条目

group ioload {
  blkio.throttle.read_bps_device = "252:0 1048576" 
  }
}
  1. 编辑 /etc/cgrules.conf

*: blkio ioload

  1. 重新启动所需的服务
`chkconfig {cgred,cgconfig} on;`
`service {cgred,cgconfig} restart`

参考:blkio-controller.txt

希望这可以帮助!

于 2014-07-25T19:10:52.873 回答