So prüfen Sie, ob eine cgroup in Linux konfiguriert ist

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") subgraph Lab Skills linux/ls -.-> lab-558700{{"So prüfen Sie, ob eine cgroup in Linux konfiguriert ist"}} linux/cat -.-> lab-558700{{"So prüfen Sie, ob eine cgroup in Linux konfiguriert ist"}} end

Auflisten von cgroups mit cat /proc/cgroups

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.

Prüfen der cgroup-Mountpunkte in /sys/fs/cgroup

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.

Überprüfen der cgroup-Konfiguration mit cat /etc/cgconfig.conf

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.