Liste der Controller leer mit cgroup v2

Liste der Controller leer mit cgroup v2

Ich versuche herauszufinden, wie cgroups v2 funktionieren. Ich habe Folgendes gemacht:

mount -t cgroup2 none /mnt/cgroup2

Das gab mir eine Liste von Objekten in/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

Die Datei ist jedoch /mnt/cgroup2/cgroup.controllersleer. Ich dachte, sie sollte die Liste der Controller enthalten, ist das nicht richtig? Hier die Dokumentation lesen:http://man7.org/linux/man-pages/man7/cgroups.7.html

Antwort1

cgroup-Controller können nur in einer Hierarchie (v1 oder v2) gemountet werden. Wenn Sie einen Controller in einer älteren v1-Hierarchie gemountet haben, wird er nicht in der cgroup2-Hierarchie angezeigt. Diese Einschränkung ist dokumentiert incgroup-v2 - Einhängensowie die cgroups(7)Manualpage:

Es ist nicht möglich, denselben Controller in mehreren Kontrollgruppenhierarchien zu mounten. Beispielsweise ist es nicht möglich, sowohl den CPU- als auch den CPUACCT-Controller in einer Hierarchie zu mounten und den CPU-Controller allein in einer anderen Hierarchie zu mounten. Es ist möglich, mehrere Mount-Punkte mit genau demselben Satz gemeinsam gemounteter Controller zu erstellen. In diesem Fall sind jedoch nur mehrere Mount-Punkte die Folge, die eine Ansicht derselben Hierarchie bieten.

Beachten Sie, dass auf vielen Systemen die v1-Controller automatisch unter /sys/fs/cgroup eingehängt werden; insbesondere erstellt systemd(1) solche Einhängepunkte automatisch.

Um dieses veraltete Verhalten zu vermeiden, booten Sie mit der systemd.unified_cgroup_hierarchy=1Option. Diese Option könnte in Zukunft die Standardeinstellung sein, je nachNEWS-Eintrag für systemd v233.

Zur Veranschaulichung werden diese Cgroup-Dateisysteme mit systemd 239 auf einem Arch Linux-System gemountet:

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)

Die schreibgeschützte /sys/fs/cgroup/unified/cgroup.controllersDatei ist zunächst leer. Nach dem Unmounten des cpuControllers ( cpu,cpuacct) wird der cpuController verfügbar. Leider werden nicht alle Controller (wie memory) verfügbar, selbst nachdem alle v1- cgroupDateisysteme unmountet wurden. Verfügbar sind die folgenden:

cpu io rdma

Beim Booten mit systemd.unified_cgroup_hierarchy=1werden keine v1-Dateisysteme gemountet:

cgroup2  on  /sys/fs/cgroup           type  cgroup2  (rw,nosuid,nodev,noexec,relatime,nsdelegate)

Und nun sind noch weitere Controller verfügbar:

cpu io memory pids rdma

verwandte Informationen