cgroup v2 的控制器列表為空
我正在嘗試了解 cgroups v2 的工作原理。我這樣做了:
mount -t cgroup2 none /mnt/cgroup2
這給了我一個對象列表
/mnt/cgroup2
root@ubuntu-s-1vcpu-1gb-lon1-01:~# ls -la /mnt/cgroup2/ total 4 dr-xr-xr-x 5 root root 0 Sep 2 16:04 . drwxr-xr-x 3 root root 4096 Sep 2 16:05 .. -r--r--r-- 1 root root 0 Sep 2 16:04 cgroup.controllers -rw-r--r-- 1 root root 0 Sep 2 16:04 cgroup.max.depth -rw-r--r-- 1 root root 0 Sep 2 16:04 cgroup.max.descendants -rw-r--r-- 1 root root 0 Sep 2 16:04 cgroup.procs -r--r--r-- 1 root root 0 Sep 2 16:04 cgroup.stat -rw-r--r-- 1 root root 0 Sep 2 16:07 cgroup.subtree_control -rw-r--r-- 1 root root 0 Sep 2 16:04 cgroup.threads drwxr-xr-x 2 root root 0 Sep 2 16:04 init.scope drwxr-xr-x 59 root root 0 Sep 2 16:00 system.slice drwxr-xr-x 3 root root 0 Sep 2 15:59 user.slice
但是,該文件
/mnt/cgroup2/cgroup.controllers
是空的。我認為它應該有控制器列表,這不正確嗎?在這裡閱讀文件:http: //man7.org/linux/man-pages/man7/cgroups.7.html
cgroup 控制器只能安裝在一個層次結構中(v1 或 v2)。如果您將控制器安裝在舊版 v1 層次結構中,則它不會顯示在 cgroup2 層次結構中。此限制記錄在cgroup-v2 - Mounting以及
cgroups(7)
手冊頁中:不能針對多個 cgroup 層次結構安裝同一個控制器。例如,不可能將 cpu 和 cpuacct 控制器都掛載到一個層次結構中,也不能單獨將 cpu 控制器掛載到另一個層次結構中。可以使用完全相同的一組共同安裝的控制器創建多個安裝點。但是,在這種情況下,所有結果都是多個安裝點提供相同層次結構的視圖。
請注意,在許多系統上,v1 控制器會自動掛載在 /sys/fs/cgroup 下;特別是,systemd(1) 會自動創建這樣的掛載點。
要避免這種遺留行為,請使用該
systemd.unified_cgroup_hierarchy=1
選項啟動。根據systemd v233 的 NEWS 條目,此選項將來可能會成為預設選項。為了說明,這些 cgroup 文件系統使用 systemd 239 安裝在 Arch Linux 系統上:
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755) cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate) cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd) cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct) cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset) cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio) cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory) cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids) cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio) cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma) cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer) cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event) cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices) cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
只讀
/sys/fs/cgroup/unified/cgroup.controllers
文件最初是空的。卸下cpu
控制器 (cpu,cpuacct
) 後,cpu
控制器變為可用。memory
不幸的是,即使在解除安裝所有 v1文件系統後,並非所有控制器(如)都可用cgroup
。可用的有:cpu io rdma
使用 引導時
systemd.unified_cgroup_hierarchy=1
,不會掛載 v1 文件系統:cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)
現在可以使用更多控制器:
cpu io memory pids rdma