无法写入cgroup blkio文件

无法写入cgroup blkio文件,io,linux-kernel,operating-system,cgroups,Io,Linux Kernel,Operating System,Cgroups,我试图通过使用cgroup blkio控制器来控制I/O带宽 Cgroup已成功设置和装载,即调用grep Cgroup/proc/mounts 返回: .... cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0 ... 然后我在blkio文件夹中创建一个新文件夹,并写入文件blkio.throttle.read\u bps\u device,如下所示: 1. mkdir user1; cd user1 2. echo "8:5

我试图通过使用cgroup blkio控制器来控制I/O带宽

Cgroup已成功设置和装载,即调用
grep Cgroup/proc/mounts

返回:

....
cgroup /sys/fs/cgroup/blkio cgroup rw,relatime,blkio 0 0
...
然后我在
blkio
文件夹中创建一个新文件夹,并写入文件
blkio.throttle.read\u bps\u device
,如下所示:

1. mkdir user1; cd user1
2. echo "8:5 10485760" > blkio.throtlle.read_bps_device
----> echo: write error: Invalid argument
My device major(我的设备主设备):使用存储设备的
df-h
ls-l/dev/sda5
得出的次要编号是正确的

我仍然可以写入不需要设备主设备:次设备号的文件,例如
blkio.weight
(但是对于
blkio.weigth_设备
,会引发相同的错误)


知道我为什么会出现这个错误吗?

不确定您在RHEL 6.x内核上使用的是哪种风格/版本的Linux,由于某种原因,这不起作用,但是当我在RHEL和其他Fedora版本上编译自定义内核时,它起作用了,没有任何问题

要检查内核是否支持,请运行
lssubsys-am | grep blkio
。如果您可以将文件
blkio.throttle.read\u bps\u设备归档,请检查路径

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

  • /proc/partitions
  • 现在,如果您想将程序限制为1mib/s(将值转换为字节/s),如下所示。=>1MiB/s=>1024 kiB/1MiB*1024 B/s=1048576字节/秒

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

  • 编辑/etc/cgrules.conf
  • *:blkio ioload

  • 重新启动所需的服务
  • 参考:


    希望这有帮助

    问题是我使用了/dev/sda5作为设备名,而实际上必须使用物理设备名(与分区逻辑设备相反)。现在,当我指定/dev/sda的:id时,它就工作了。
    lssubsys
    命令对于理解我的内核是否支持该功能非常有用。谢谢
       `cat /proc/partitions | grep vda` 
         major minor  #blocks  name
         252        0   12582912 vda  --> this is the primary disk (with MAJOR:MINOR -> 8:0)
    
    group ioload {
      blkio.throttle.read_bps_device = "252:0 1048576" 
      }
    }
    
    `chkconfig {cgred,cgconfig} on;`
    `service {cgred,cgconfig} restart`