cgroup v2 - arosh/arosh.github.com GitHub Wiki

mount を見てみると分かるが、デフォルトでも cgroup v2 はマウントされている。しかし cgroup v1 と cgroup v2 で同じコントローラーを使うことはできない。よって cgroup v2 側でなにも使うことができない。

$ echo "+io" | sudo tee /sys/fs/cgroup/unified/cgroup.controllers
+io
tee: /sys/fs/cgroup/unified/cgroup.controllers: Invalid argument
$

よってブートオプションを設定する。GRUB_CMDLINE_LINUX_DEFAULT は通常起動モード(≠ リカバリーモード)で追加するオプションを指定する。

https://askubuntu.com/a/780545

sudoedit /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT に systemd.unified_cgroup_hierarchy=1 を追加

sudo update-grub
sudo reboot

これで io コントローラーが有効になった。

$ cat /sys/fs/cgroup/cgroup.controllers
cpuset cpu io memory pids rdma
$
$ sudo mkdir /sys/fs/cgroup/foo
$ echo $$ | sudo tee /sys/fs/cgroup/foo/cgroup.procs
824
$ echo '253:0 wbps=1000000' | sudo tee /sys/fs/cgroup/foo/io.max
253:0 wbps=1000000
$ dd if=/dev/zero of=foo bs=4096 count=2560 conv=fsync
2560+0 records in
2560+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 10.5144 s, 997 kB/s
$
$ echo '253:0 rbps=1000000' | sudo tee /sys/fs/cgroup/foo/io.max
253:0 rbps=1000000
$ cat /sys/fs/cgroup/foo/io.max
253:0 rbps=1000000 wbps=1000000 riops=max wiops=max
$ echo 3 | sudo tee /proc/sys/vm/drop_caches
3
$ dd if=foo of=/dev/null bs=4096 count=2560
2560+0 records in
2560+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 10.7862 s, 972 kB/s
$

関連情報