Einführung
In diesem Lab lernen Sie, wie Sie prüfen können, ob cgroups (Control Groups) auf Ihrem Linux-System konfiguriert sind. Cgroups sind ein leistungsstarkes Kernelfeature zur Verwaltung und Kontrolle der Ressourcenauslastung von Prozessen.
Sie erreichen dies, indem Sie die verfügbaren cgroup-Subsysteme mit cat /proc/cgroups auflisten, die cgroup-Mountpunkte in /sys/fs/cgroup untersuchen und die cgroup-Konfigurationsdatei /etc/cgconfig.conf überprüfen. Diese Schritte geben Ihnen einen umfassenden Überblick über die cgroup-Konfiguration Ihres Systems.
Cgroups mit cat /proc/cgroups auflisten
In diesem Schritt lernen Sie, wie Sie die verfügbaren cgroup-Subsysteme auf Ihrem Linux-System auflisten können. Cgroups (Control Groups) sind ein Feature des Linux-Kernels, das es Ihnen ermöglicht, Prozesse in hierarchische Gruppen zu organisieren und deren Ressourcenverbrauch (CPU, Arbeitsspeicher, Datenträger-E/A, Netzwerk usw.) zu kontrollieren.
Stellen Sie sich cgroups als eine Möglichkeit vor, bestimmte Anwendungen oder Benutzer in Bezug auf ihre Ressourcenverwendung zu beschränken oder Ressourcen zuzuweisen. Dies ist entscheidend für die effektive Verwaltung von Systemressourcen, insbesondere in Umgebungen wie Containern oder Cloud Computing.
Das /proc-Dateisystem ist ein virtuelles Dateisystem, das Informationen über Prozesse und andere Systeminformationen bereitstellt. Die Datei /proc/cgroups enthält Details zu den cgroup-Subsystemen, die von Ihrem Kernel unterstützt werden.
Um die verfügbaren cgroup-Subsysteme anzuzeigen, verwenden Sie den cat-Befehl. Der cat-Befehl ist ein grundlegendes Linux-Werkzeug, das zum Anzeigen des Inhalts von Dateien verwendet wird.
Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist. Sie können dies tun, indem Sie auf das Xfce Terminal-Symbol auf der linken Seite Ihres Desktops klicken.
Geben Sie jetzt den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste:
cat /proc/cgroups
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
#subsys_name hierarchy num_cgroups enabled
cpuset 0 1 1
cpu 0 1 1
cpuacct 0 1 1
blkio 0 1 1
memory 0 1 1
devices 0 1 1
freezer 0 1 1
net_cls 0 1 1
perf_event 0 1 1
net_prio 0 1 1
hugetlb 0 1 1
pids 0 1 1
rdma 0 1 1
Lassen Sie uns die Ausgabe analysieren:
#subsys_name: Der Name des cgroup-Subsystems (z. B.cpu,memory,blkio). Jedes Subsystem kontrolliert einen bestimmten Ressourcentyp.hierarchy: Die ID der Hierarchie, an die das Subsystem angehängt ist. In dieser Ausgabe sind alle Subsysteme an die Hierarchie 0 angehängt, was die standardmäßige einheitliche Hierarchie in neueren Linux-Distributionen ist.num_cgroups: Die Anzahl der derzeit innerhalb der Hierarchie dieses Subsystems erstellten cgroups.enabled: Gibt an, ob das Subsystem im Kernel aktiviert (1) oder deaktiviert (0) ist.
Diese Ausgabe zeigt Ihnen, welche Ressourcenkontrollfunktionen auf Ihrem System verfügbar und aktiv sind. Das Verständnis dieser Subsysteme ist der erste Schritt beim Erlernen der Ressourcenverwaltung mit cgroups.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
Cgroup-Mounts in /sys/fs/cgroup prüfen
Im vorherigen Schritt haben Sie die verfügbaren cgroup-Subsysteme gesehen. Jetzt wollen wir untersuchen, wo diese cgroups im Dateisystem gemountet sind. Unter Linux werden cgroups normalerweise über ein virtuelles Dateisystem zugänglich gemacht, das in der Regel unter /sys/fs/cgroup gemountet ist.
Das /sys-Dateisystem ist ein weiteres virtuelles Dateisystem, das eine Schnittstelle zu Kerneldatenstrukturen bereitstellt. Es wird oft zur Konfiguration und Überwachung von Hardware und Kernelfeatures verwendet. Das Verzeichnis /sys/fs/cgroup ist der Standard-Mountpunkt für das cgroup-Dateisystem.
Um den Inhalt dieses Verzeichnisses anzuzeigen und zu verstehen, wie die cgroup-Hierarchien organisiert sind, verwenden Sie den ls-Befehl. Der ls-Befehl listet den Inhalt eines Verzeichnisses auf.
Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist.
Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste:
ls /sys/fs/cgroup
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
cgroup.controllers cgroup.max.depth cgroup.max.descendants cgroup.stat cgroup.subtree_control cgroup.threads cpu cpu.stat cpu.pressure cpuset cpuset.cpus cpuset.mems cpuset.stat io io.stat io.pressure memory memory.stat memory.pressure memory.swap.max memory.high memory.low memory.min memory.swap.current memory.current memory.events memory.events.local pids pids.current pids.max systemd user.slice
Diese Ausgabe zeigt die Verzeichnisse und Dateien innerhalb des /sys/fs/cgroup-Verzeichnisses. In Systemen, die die einheitliche cgroup-Hierarchie (cgroup v2) verwenden, sehen Sie Dateien wie cgroup.controllers, cgroup.stat und Verzeichnisse, die den gemounteten Controllern entsprechen (z. B. cpu, memory, io, pids).
Jedes dieser Verzeichnisse (z. B. cpu, memory usw.) repräsentiert einen cgroup-Controller. Innerhalb dieser Verzeichnisse finden Sie Dateien, mit denen Sie die Ressourcenlimits für Prozesse innerhalb dieser cgroup konfigurieren und überwachen können.
Beispielsweise würden Sie, wenn Sie in das cpu-Verzeichnis wechseln, Dateien finden, die sich auf die CPU-Ressourcenkontrolle beziehen.
Schauen wir uns schnell den Inhalt des cpu-Verzeichnisses mit ls an:
ls /sys/fs/cgroup/cpu
Sie könnten eine Ausgabe wie die folgende sehen:
cgroup.controllers cgroup.events cgroup.freeze cgroup.max.depth cgroup.max.descendants cgroup.stat cgroup.subtree_control cgroup.threads cpu.max cpu.stat cpu.weight cpu.pressure
Diese Dateien (z. B. cpu.max, cpu.weight) werden verwendet, um CPU-Limits und Prioritäten für cgroups festzulegen.
Das Verständnis der Struktur von /sys/fs/cgroup ist der Schlüssel für die Arbeit mit cgroups, da hier direkt mit ihnen interagiert wird.
Klicken Sie auf Weiter, um mit dem nächsten Schritt fortzufahren.
Cgroup-Konfiguration mit cat /etc/cgconfig.conf überprüfen
In den vorherigen Schritten haben Sie sich mit den verfügbaren cgroup-Subsystemen und ihren Mountpunkten im Dateisystem vertraut gemacht. Jetzt schauen wir uns eine häufige Konfigurationsdatei für cgroups an: /etc/cgconfig.conf.
Während cgroups direkt über das /sys/fs/cgroup-Dateisystem verwaltet werden können, werden Konfigurationsdateien wie /etc/cgconfig.conf oft verwendet, um cgroup-Hierarchien und Anfangseinstellungen beim Systemstart zu definieren. Diese Datei gehört zum cgroup-tools-Paket, das Hilfsprogramme zur Verwaltung von cgroups bereitstellt.
Die Datei /etc/cgconfig.conf wird vom cgconfig-Dienst (falls installiert und aktiviert) gelesen, um cgroup-Hierarchien einzurichten und Controller beim Booten anzuhängen. Das Betrachten dieser Datei kann Ihnen einen Einblick in die Konfiguration der cgroups auf Ihrem System geben.
Sie werden erneut den cat-Befehl verwenden, um den Inhalt dieser Konfigurationsdatei anzuzeigen.
Öffnen Sie Ihr Terminal, wenn es noch nicht geöffnet ist.
Geben Sie den folgenden Befehl in das Terminal ein und drücken Sie die Eingabetaste:
cat /etc/cgconfig.conf
Sie sollten eine Ausgabe ähnlich der folgenden sehen (der genaue Inhalt kann je nach Systemkonfiguration variieren):
#
## A sample configuration file for cgconfig.
#
## The file contains two sections:
## mount: defines the hierarchy and where to mount it.
## group: defines the cgroup and its parameters.
#
## Example:
#
#mount {
## cpuset = /cgroup/cpuset;
## cpu = /cgroup/cpu;
## cpuacct = /cgroup/cpuacct;
## memory = /cgroup/memory;
## devices = /cgroup/devices;
## freezer = /cgroup/freezer;
## net_cls = /cgroup/net_cls;
## blkio = /cgroup/blkio;
#}
#
#group staff {
## perm {
## task {
## uid = staff;
## gid = staff;
## }
## admin {
## uid = staff;
## gid = staff;
## }
## }
## cpu {
## cpu.shares = 1000;
## }
## memory {
## memory.limit_in_bytes = 256M;
## }
#}
#
#group / {
## cpu {
## cpu.shares = 1024;
## }
#}
In dieser Beispielausgabe können Sie auskommentierte Abschnitte (#) sehen, die zeigen, wie Sie Mountpunkte für verschiedene Controller definieren und cgroup-Gruppen (wie staff) mit bestimmten Ressourcenlimits (z. B. cpu.shares, memory.limit_in_bytes) erstellen können.
Wenn die Datei leer ist oder nur Kommentare enthält, bedeutet dies, dass cgroup-Hierarchien und Anfangsgruppen nicht über diese spezifische Datei konfiguriert werden. In modernen Systemen übernimmt systemd oft die Verwaltung von cgroups, indem es die einheitliche Hierarchie unter /sys/fs/cgroup verwendet.
Auch wenn diese Datei auf Ihrem System nicht aktiv für die Konfiguration verwendet wird, ist es wichtig, über ihre Existenz und ihren Zweck Bescheid zu wissen, um zu verstehen, wie cgroups verwaltet werden können.
Sie haben nun die verfügbaren cgroup-Subsysteme, ihre Mountpunkte im Dateisystem und eine häufige Konfigurationsdatei untersucht. Dies gibt Ihnen ein grundlegendes Verständnis davon, wie cgroups auf einem Linux-System strukturiert und möglicherweise konfiguriert sind.
Klicken Sie auf Weiter, um dieses Lab abzuschließen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie prüfen können, ob cgroups auf einem Linux-System konfiguriert sind. Sie haben begonnen, indem Sie den Befehl cat /proc/cgroups verwendet haben, um die vom Kernel unterstützten verfügbaren cgroup-Subsysteme aufzulisten. Dabei haben Sie die Ausgabespalten wie subsys_name, hierarchy, num_cgroups und enabled verstanden. Dieser Schritt hat Ihnen einen Einblick in die aktiven Ressourcenkontrollmechanismen gegeben.
Als Nächstes haben Sie die cgroup-Mountpunkte überprüft, indem Sie das Verzeichnis /sys/fs/cgroup untersucht haben, das der Standardort ist, an dem cgroup-Hierarchien gemountet werden. Schließlich haben Sie die Datei /etc/cgconfig.conf geprüft, um zu sehen, ob irgendwelche dauerhaften cgroup-Konfigurationen definiert sind. Diese Datei existiert jedoch möglicherweise nicht oder wird nicht auf allen Systemen verwendet, insbesondere nicht auf denen, die auf systemd zur cgroup-Verwaltung setzen. Diese Schritte zeigen insgesamt, wie Sie das Vorhandensein und die grundlegende Konfiguration von cgroups auf einem Linux-System feststellen können.



