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 der tasks-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ßer tasks 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/ schlicht lab1 — 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 im cgcreate-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