yum install libcgroup libcgroup-tools
/usr/bin/systemctl enable cgconfig /usr/bin/systemctl enable cgred
※ディスクIDは、lsblkで確認
下記は/dev/sda(8:0)を100IOPS でlimitをかける場合
[/etc/cgconfig.conf] group DiskIO_Group { blkio { blkio.throttle.read_iops_device = "8:0 100"; blkio.throttle.write_iops_device = "8:0 100"; } }
[/etc/cgrules.conf] root blkio DiskIO_Group
groupを複数書いておく
[/etc/cgconfig.conf] group DiskIO_Group { blkio { blkio.throttle.read_iops_device = "8:0 100"; blkio.throttle.write_iops_device = "8:0 100"; } } group DiskIO_Group { blkio { blkio.throttle.read_iops_device = "251:0 100"; blkio.throttle.write_iops_device = "251:0 100"; } }
こうするとちゃんと反映される
# cat /sys/fs/cgroup/blkio/DiskIO_Group/blkio.throttle.write_iops_device 8:0 100 251:0 100
反映にはcgconfigとcgredプロセスを再起動で反映されます。
systemctl restart cgconfig && systemctl restart cgred
4k block , count=1000が10秒ほどかかる。
1000 / 100IOPS = 10s
# dd if=/dev/zero of=AAA bs=512 count=100 oflag=direct 100+0 records in 100+0 records out 51200 bytes (51 kB) copied, 0.925756 s, 55.3 kB/s # dd if=/dev/zero of=AAA bs=512 count=1000 oflag=direct 1000+0 records in 1000+0 records out 512000 bytes (512 kB) copied, 9.92528 s, 51.6 kB/s
echo "root blkio DiskIO_Group" >> /etc/cgrules.conf systemctl restart cgred
cgcreate -g blkio:/DiskIO_Group
cgset -r blkio.throttle.write_iops_device="8:0 10" DiskIO_Group
cgget blkio.throttle.write_iops_device DiskIO_Group
# cgget -r blkio.throttle.write_iops_device DiskIO_Group DiskIO_Group: blkio.throttle.write_iops_device: 8:0 10
下記でも確認できる
# cat /sys/fs/cgroup/blkio/DiskIO_Group/blkio.throttle.write_iops_device 8:0 10
cgdelete blkio:/DiskIO_Group