====== 07 CentOS cgroupでリソースコントロール ======
[[https://legitwhiz.github.io/technology_memo/Resource_control_using_cgroups(RHEL7).html]]
===== cgroupsのインストール =====
yum install libcgroup libcgroup-tools
===== cgroupsの起動設定 =====
/usr/bin/systemctl enable cgconfig
/usr/bin/systemctl enable cgred
===== QOS =====
※ディスク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
==== cgconfig.confで複数ディスクへ設定する場合 ====
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
===== コマンドラインで実行の場合 =====
==== CGruleを先に設定しておく ====
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
{{tag>centos}}