使用 cgroups 限制 I/O 写入使用

使用 cgroups 限制 I/O 写入使用

我正在尝试使用 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

相关内容