Linux
如何檢查我的機器上是否安裝了 cgroup v2?
我想嘗試 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
後續問題 感謝 Brian 的幫助。如果我應該創建一個新問題,請告訴我,但我認為如果我只是在這裡問我的問題可能對其他人有幫助。
- 我無法按照文件中的命令添加 cgroup 控制器
>> echo "+cpu +memory -io" > cgroup.subtree_control
但是,我得到“迴聲:寫入錯誤:無效參數”。我是否缺少此步驟的先決條件?
- 我執行了一個 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
我看到您引用了上面的文件。您可能缺少的一點是仍然需要創建路徑。沒有理由必須在任何特定位置管理 cgroup 資源。這只是慣例。
例如,只要目錄存在,您就可以完全呈現
procfs
在…/usr/monkeys``/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