我正在尝试使用 cgroups 来限制服务器上的 I/O 写入使用。
这是我的分区表信息:
major minor #blocks name
8 0 10485760 sda
8 1 9437184 sda1
8 2 1047552 sda2
这是我的文件系统结构:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 8.9G 8.4G 37M 100% /
none 1004M 0 1004M 0% /dev/shm
这是我的 cgroups 配置:
mount {
blkio = /cgroup/blkio;
}
group test2 {
blkio {
blkio.throttle.write_iops_device="";
blkio.throttle.read_iops_device="8:0 10485760";
blkio.throttle.write_bps_device="";
blkio.throttle.read_bps_device="8:0 10485760";
blkio.weight="";
blkio.weight_device="";
}
}
当我执行以下读取命令时,它将读取操作限制为仅使用 10 B/s
dd if=file_1 of=/dev/zero
当我执行以下写入命令时,它不会根据配置进行限制
dd of=file_1 if=/dev/zero
我错过了什么?
答案1
你现在可能已经搞清楚了,但根据这篇博文您需要dd
使用 O_DIRECT 标志来打开输出文件,否则缓存会启动并且您的 cgroup 配置变得毫无用处:
dd of=file_1 if=/dev/zero oflag=direct