Control Groups oder kurz cgroups sind ein Teil des Linux-Systemkerns, mit dem sich die Nutzung von Ressourcen durch Prozesse beschränken und überwachen lässt. Sie spielen bei Ressourcen-Management und Container-Virtualisierungen eine wichtige Rolle.
Cgroups wurden für das Ressourcen-Management und die Prozess-Isolation unter Linux eingeführt.
Linux brachte von Anfang an verschiedene Mechanismen mit, um die Nutzung von System-Ressourcen durch Prozesse zu kontrollieren. Doch Werkzeuge und Konfigurationsdateien wie nice, ionice, cpulimit und /etc/security/limits.conf funktionieren uneinheitlich und sind heute nicht mehr flexibel genug.Moderne Cloud-Plattformen mit Techniken wie Containerisierung und virtuelle Server erfordern leistungsfähigere Methoden für Ressource-Management und Prozess-Isolation.
Cgroups wurden 2006 von einigen Programmierern bei Google entwickelt, um Lösungen für eine Reihe verschiedener Anwendungsfälle zu liefern. Seit der im Januar 2008 erschienenen Kernel-Version 2.6.24 sind cgroups fester Bestandteil des Linux-Kernels.
Wie funktionieren cgroups?
Prozesse oder Tasks sind unter Linux von vornherein hierarchisch organisiert. Jeder Task muss von einem anderen gestartet werden. Dabei erbt er mehrere Eigenschaften wie Nice-Level und I/O-Priorität des aufrufenden Prozesses. Analog dazu sind Control Groups hierarchisch strukturierte Gruppen von Prozessen. Ein wesentlicher Unterschied ist, dass es mehrere Gruppen-Hierarchien geben kann, während immer nur einen Prozess-Baum existiert.
Mithilfe von cgroups lassen sich zusammengehörige Prozesse gruppieren, beispielsweise nach Arbeitsteams, Software-Containern oder virtuellen Servern. Auf diese Weise können Kontrollgruppen verschiedenen Subsystemen für das Ressource-Management zugeordnet werden. Jedes Subsystem (auch resource controller genannt) entspricht einer vom Kernel verwalteten Ressource.
Zu den wichtigsten Subsystemen gehören:
cpu: begrenzt oder priorisiert die CPU-Nutzung durch die Prozesse in einer Gruppe.
cpusets: legt fest, auf welchen Prozessorkernen die Tasks laufen dürfen.
blkio: limitiert Zugriffe auf Blockgeräte wie Speichermedien.
devices: kontrolliert, welche Hardware-Geräte genutzt werden dürfen.
memory: limitiert den Speicherbedarf.
net_prio: begrenzt den Datendurchsatz von Netzwerkverbindungen.
cpuacct: misst die verbrauchte Prozessorzeit für Analysen und Abrechnungen.
perf_event: ermöglicht Performance-Analysen.
Ressourcen-Management mit cgroups
Control Groups liefern mehrere Methoden zum Einrichten, Konfigurieren und Steuern von Gruppen. Einerseits exportiert der Kernel einen virtuellen Verzeichnisbaum unter „/sys/fs/cgroup/“. Hier lassen sich Gruppen mit klassischen Unix-Befehlen wie „mkdir“, „rmdir“ und „mv“ anlegen, entfernen oder umbenennen. Um Prozesse zu Gruppen und Subsystemen hinzuzufügen, können die PIDs der Task per „echo“ oder „printf“ in entsprechende Dateien geschrieben werden. Auf gleiche Weise lassen sich Limits setzen.
Bequemer ist die Verwaltung per systemd oder libcgroup. Beide liefern Befehle für den Umgang mit cgroups, wie systemd-cgls, systemd-run, systemd-cgtop respektive cgcreate, cgexec und cgclassify. Des Weiteren lassen sich dauerhafte Kontrollgruppen mit Konfigurationsdateien wie /etc/cgconfig.conf oder Systemd-Unit-Files anlegen. Letzteres ist auch für Application-Developer interessant. Sie können für ihre Anwendungen, Systemdienste oder Software-Container Unit-Files mit Voreinstellungen anbieten.
Einsatzbereiche von Control Groups
Cgroups lösen auf einheitliche Weise eine ganze Reihe unterschiedlicher Probleme. Auf privaten PCs oder betrieblichen Workstations lassen sich rechen- und speicherintensive Programme wie Webbrowser, Computer-Algebra-Systeme oder wissenschaftliche Simulationsanwendungen besser kontrollieren. Ebenso ermöglichen sie eine präzise Verteilung der knappen Ressourcen von Smart-Devices, IoT-Geräten und anderen Embedded Devices.
Zur vollen Entfaltung kommen Kontrollgruppen bei Servern und Container-Virtualisierungen. Oft laufen mehrere Dienste wie Webserver, Datenbanken und Applikationsserver auf einem System, und bei virtuellen Hosting-Paketen teilen sich mehrere User dieselbe Hardware. Hier braucht es heute mehr als die rudimentären oder verschwenderischen Methoden der Isolierung und Ressourcen-Verteilung durch chroot-cages und nice respektive virtuelle Maschinen.
Kontrollgruppen liefern ein fein granuliertes System für die Vergabe und Überwachung verschiedener Betriebsmittel. Mithilfe der Accounting-Funktion lassen sich Tarife auf Basis der verbrauchten Ressourcen bei virtuellen Servern und SaaS-Systemen implementieren.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Control Groups können mit Kernel-Namespaces, Capabilities und Sicherheitserweiterungen wie SELinux oder AppArmor kombiniert werden. Obwohl die daraus resultierende Isolation weniger strikt ist als bei vollständiger Virtualisierung, reicht sie in vielen Fällen aus. Container-Technologien wie Docker, Snap, LXC und libvirt basieren alle auf dieser Kombination.