无法在 cgroup 上限制 IO当设备存在时说“没有这样的设备”可能有什么问题?

问题描述

我遵循的说明:https://www.kernel.org/doc/html/latest/admin-guide/cgroup-v1/blkio-controller.html

我运行的脚本:

 
 BYTES_PER_SEC=1048576;
 
 MAJOR=259
 MInor=1
 
 echo "device name:"
 udevadm info -rq name /sys/dev/block/$MAJOR:$MInor
 echo ""
 echo "device numbers:"
 echo $MAJOR:$MInor;
 echo ""
 
 sudo mount -t cgroup -o blkio none /sys/fs/cgroup/blkio;
 sudo echo "COMMAND TO BE EXECUTED:";
 sudo echo "$MAJOR:$MInor  $BYTES_PER_SEC";
 sudo echo "$MAJOR:$MInor  $BYTES_PER_SEC" > /sys/fs/cgroup/blkio/blkio.throttle.read_bps_device
 sudo echo "$MAJOR:$MInor  $BYTES_PER_SEC" > /sys/fs/cgroup/blkio/blkio.throttle.write_bps_device

输出

~/Desktop >>> sudo ./test.sh                                                                                                                                                                                   [1]
[sudo] password for brian: 
/dev/nvme0n1p1
device name: 259:1
mount: /sys/fs/cgroup/blkio: none already mounted on /sys/fs/bpf.
COMMAND TO BE EXECUTED:
259:1  1048576
echo: write error: No such device
echo: write error: No such device

不知道哪里出了问题。我也在此处使用 NixOS,因此不确定这是否会实际影响结果。

解决方法

发生错误是因为使用 cgroups 版本 1 限制 IO 的唯一方法是使用物理设备。我上面使用的主要和次要版本号用于分区。您需要为容纳分区的物理设备选择主要和次要编号。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...