Cgroup v2を試したいのですが、自分のLinuxマシンにインストールされているかどうかわかりません
>> uname -r
4.14.66-041466-generic
Cgroup v2は4.12.0-rc5で使用できるので、使用しているカーネルバージョンで使用できるはずです。
https://www.infradead.org/~mchehab/kernel_docs/unsorted/cgroup-v2.html
ただし、ドキュメントに記載されているメモリインターフェイスファイルがシステムで使用できないため、私のシステムにはcgroup v2が搭載されているようには見えません。
https://www.kernel.org/doc/Documentation/cgroup-v2.txt
私はまだcgroup v1を持っているようです。
/sys/fs/cgroup/memory# ls
cgroup.clone_children memory.kmem.failcnt memory.kmem.tcp.usage_in_bytes memory.memsw.usage_in_bytes memory.swappiness
cgroup.event_control memory.kmem.limit_in_bytes memory.kmem.usage_in_bytes memory.move_charge_at_immigrate memory.usage_in_bytes
cgroup.procs memory.kmem.max_usage_in_bytes memory.limit_in_bytes memory.numa_stat memory.use_hierarchy
cgroup.sane_behavior memory.kmem.slabinfo memory.max_usage_in_bytes memory.oom_control notify_on_release
docker memory.kmem.tcp.failcnt memory.memsw.failcnt memory.pressure_level release_agent
memory.failcnt memory.kmem.tcp.limit_in_bytes memory.memsw.limit_in_bytes memory.soft_limit_in_bytes tasks
memory.force_empty memory.kmem.tcp.max_usage_in_bytes memory.memsw.max_usage_in_bytes memory.stat
フォローアップの質問ブライアンの助けに感謝します。新しい質問を作成する必要がある場合はお知らせください。ここで質問するだけで他の人にも役立つと思います。
1)ドキュメントのコマンドに従って、cgroupコントローラーを追加できません
>> echo "+cpu +memory -io" > cgroup.subtree_control
しかし、「echo:write error:Invalid argument」と表示されました。この手順の前提条件が不足していますか?
2)dockerコンテナーを実行しましたが、dockerデーモンログで「/sys/fs/cgroup/cpuset/docker/cpuset.cpus」が見つからないというメッセージが表示されました。 dockerはまだcgroupv1を期待しているようです。 dockerデーモンでcgroupv2サポートを有効にする最良の方法は何ですか?
docker -v
Docker version 17.09.1-ce, build aedabb7
最も簡単な方法は、疑似ファイルシステムのマウントを試みることです。ある場所にマウントできる場合は、インターフェースを使用してプロセスの管理を試みることができます。
mount -t cgroup2 none $MOUNT_POINT
上記のドキュメントを引用しているようです。見当たらない点の1つは、パスを作成する必要があることです。理由はありません理由あなたmust特定の場所でcgroupリソースを管理します。それは単なる慣習です。
たとえば、ディレクトリ/usr/monkeys
が存在する限り、procfs
を/usr/monkeys
...に完全に提示できます。
$ Sudo mkdir /usr/monkeys
$ Sudo mount -t proc none /usr/monkeys
$ ls -l /usr/monkeys
...
...
-r--r--r--. 1 root root 0 Sep 25 19:00 uptime
-r--r--r--. 1 root root 0 Sep 25 23:17 version
-r--------. 1 root root 0 Sep 25 23:17 vmallocinfo
-r--r--r--. 1 root root 0 Sep 25 18:57 vmstat
-r--r--r--. 1 root root 0 Sep 25 23:17 zoneinfo
$ Sudo umount /usr/monkeys
同じ方法で、cgroup v2疑似ファイルシステムでこれを行うことができます。
$ Sudo mount -t cgroup2 none /usr/monkeys
$ ls -l /usr/monkeys
total 0
-r--r--r--. 1 root root 0 Sep 23 16:58 cgroup.controllers
-rw-r--r--. 1 root root 0 Sep 23 16:58 cgroup.max.depth
-rw-r--r--. 1 root root 0 Sep 23 16:58 cgroup.max.descendants
-rw-r--r--. 1 root root 0 Sep 23 16:58 cgroup.procs
-r--r--r--. 1 root root 0 Sep 23 16:58 cgroup.stat
-rw-r--r--. 1 root root 0 Sep 23 16:58 cgroup.subtree_control
-rw-r--r--. 1 root root 0 Sep 23 16:58 cgroup.threads
drwxr-xr-x. 2 root root 0 Sep 23 16:58 init.scope
drwxr-xr-x. 2 root root 0 Sep 23 16:58 machine.slice
drwxr-xr-x. 59 root root 0 Sep 23 16:58 system.slice
drwxr-xr-x. 4 root root 0 Sep 23 16:58 user.slice
$ Sudo umount /usr/monkeys
次のコマンドを実行できます。
grep cgroup /proc/filesystems
システムがcgroupv2をサポートしている場合は、次のように表示されます。
nodev cgroup
nodev cgroup2
Cgroupv1のみのシステムでは、次のように表示されます。
nodev cgroup