2.5. Erstellen von Kontrollgruppen
Verwenden Sie den
cgcreate
-Befehl, um Kontrollgruppen zu erstellen. Die Syntax für cgcreate
lautet wie folgt: cgcreate -t
uid:gid -a
uid:gid -g subsystems:path
, wobei gilt:
-t
(optional) — definiert einen Benutzer (durch die Benutzer-ID, uid), der Besitzer dertasks
-Pseudodatei für diese Kontrollgruppe sein soll. Der Benutzer kann Aufgaben zur Kontrollgruppe hinzufügen.Anmerkung
Beachten Sie, dass der einzige Weg zum Entfernen einer Aufgabe aus einer Kontrollgruppe darin besteht, diese Aufgabe in eine andere Kontrollgruppe zu verlegen. Um eine Aufgabe zu verlegen, muss der Benutzer über Schreibzugriff auf die Ziel-Kontrollgruppe verfügen. Schreibzugriff auf die Quell-Kontrollgruppe ist dagegen unerheblich.-a
(optional) — definiert einen Benutzer (durch die Benutzer-ID, uid) und eine Gruppe (durch die Gruppen-ID, gid), der bzw. die Besitzer aller Pseudodateien außertasks
für diese Kontrollgruppe sein soll. Dieser Benutzer kann den Zugriff, den Prozesse in dieser Kontrollgruppe auf Systemressourcen besitzen, ändern.-g
— spezifiziert die Hierarchie, in der die Kontrollgruppe erstellt werden soll, als eine kommagetrennte Liste von subsystems (Subsystemen), die mit diesen Hierarchien verknüpft sind. Falls sich die Subsysteme in dieser Liste in verschiedenen Hierarchien befinden, wird die Gruppe in jeder dieser Hierarchien erstellt. Der Liste der Hierarchien folgt ein Doppelpunkt und der path (Pfad) zur untergeordneten Gruppe relativ zur Hierarchie. Der Pfad darf nicht den Einhängepunkt der Hierarchie enthalten.Beispielsweise heißt die Kontrollgruppe im Verzeichnis/cgroup/cpu_and_mem/lab1/
schlichtlab1
— ihr Pfad ist bereit eindeutig bestimmt, da es maximal eine Hierarchie für jedes Subsystem gibt. Beachten Sie zudem, dass die Gruppe von allen Subsystemen gesteuert wird, die in den Hierarchien existieren, in der die Kontrollgruppe erstellt wird, obwohl diese Subsysteme nicht imcgcreate
-Befehl angegeben wurden — siehe Beispiel 2.5, »cgcreate-Verwendung«.
Da alle Kontrollgruppen in derselben Hierarchie dieselben Controller haben, hat die untergeordnete Gruppe dieselben Controller wie ihre übergeordnete Gruppe.
Beispiel 2.5. cgcreate-Verwendung
Nehmen wir ein System an, auf dem die
cpu
und memory
Subsysteme zusammen unter der cpu_and_mem
-Hierarchie eingehängt sind und der net_cls
-Controller unter einer separaten Hierarchie namens net
. Führen wir nun Folgendes aus:
~]# cgcreate -g cpu,net_cls:/test-subgroup
Der
cgcreate
-Befehl erstellt zwei Gruppen namens test-subgroup
, eine in der cpu_and_mem
-Hierarchie und eine in der net
-Hierarchie. Die test-subgroup
-Gruppe in der cpu_and_mem
-Hierarchie wird gesteuert vom memory
-Subsystem, obwohl wir dies nicht im cgcreate
-Befehl angegeben haben.
Alternative Methode
Um direkt eine untergeordnete Gruppe zur Kontrollgruppe zu erstellen, verwenden Sie den Befehl
mkdir
:
~]# mkdir /cgroup/hierarchy/name/child_name
Zum Beispiel:
~]# mkdir /cgroup/cpuset/lab1/group1