Kapitel 4. Ressourcenverwaltung

Kontrollgruppen CPU-Obergrenze

Der Completely Fair Scheduler (CFS) im Linux-Kernel ist ein proportionaler Anteils-Scheduler, der die CPU-Zeit proportional zwischen Gruppen von Aufgaben verteilt, abhängig von deren Priorität/Gewichtung. Aufgrund der arbeitssparenden Eigenschaft des Schedulers kann in CFS eine Gruppe von Aufgaben einen größeren Anteil der CPU-Zeit erhalten, falls genügend unbenutzte CPU-Zyklen im System zur Verfügung stehen.

Allerdings gibt es folgende Anwendungsfälle in Unternehmen, bei denen es nicht wünschenswert ist, einen größeren CPU-Anteil an eine Gruppe von Aufgaben zu vergeben:
Pay-Per-Use
In Unternehmenssystemen, die mehrere Kunden bedienen, müssen Anbieter von Cloud-Diensten eine festgesetzte Menge an CPU-Zeit an den virtuellen Gast vergeben, basierend auf dem vereinbarten Service-Level.
Service-Level-Garantien
Kunden verlangen einen Prozentsatz der CPU-Ressource ohne Serviceunterbrechung für jeden virtuellen Gast.
In diesen Fällen muss der Scheduler eine Obergrenze auf den CPU-Ressourcenverbrauch einer Aufgabengruppe anwenden, falls diese ein vorgegebenes Limit übersteigt. In der Regel wird dies erreicht, indem die Aufgabengruppe gedrosselt wird, sobald diese ihre zugewiesene CPU-Zeit ausgeschöpft hat.
Das Erzwingen von Kontrollgruppen CPU-Obergrenzen ist eine sehr wichtige Ergänzung im Red Hat Enterprise Linux Feature-Repertoire, insbesondere für die oben genannten Anwendungsfälle. Die Funktionalität zum Erzwingen von CPU-Obergrenzen wird vom Credit Scheduler in Xen bereitgestellt sowie im VMware ESX Scheduler.
Verbesserte Kontrollgruppen CPU-Controller-Skalierbarkeit auf SMP-Systemen

Red Hat Enterprise Linux 6 aktivierte Kontrollgruppen in der Standardkonfiguration, und libvirt erstellte eine Kontrollgruppe pro Gastmodell. Auf umfangreichen SMP-Systemen beeinträchtigte eine steigende Anzahl an Kontrollgruppen die Leistung. In Red Hat Enterprise Linux 6.2 dagegen wurde die Kontrollgruppen CPU-Skalierbarkeit wesentlich verbessert, so dass es nun möglich ist, Hunderte von Kontrollgruppen ohne Leistungseinbußen gleichzeitig zu erstellen und auszuführen.

Zusätzlich zur verbesserten Skalierbarkeit wurde nun auch ein einstellbarer /proc-Parameter namens dd sysctl_sched_shares_window hinzugefügt, mit einem Standardwert von 10 ms.
Kontrollgruppen I/O-Controller Leistungsverbesserung

Der Aufbau des Kontrollgruppen I/O-Controllers wurde verbessert, um die Verwendung von Sperren innerhalb des I/O-Controllers zu verringern, was zu einer verbesserten Leistung führt. Zudem unterstützt der I/O-Controller nun Statistiken pro Kontrollgruppe.

Kontrollgruppen Speicher-Controller Leistungsverbesserung

Red Hat Enterprise Linux 6.2 verbessert den Speicherverbrauchs-Overhead auf dem Speicher-Controller, indem der Zuweisungs-Overhead für das page_cgroup-Array um 37% reduziert wurde. Zusätzlich wurde der direkte page_cgroup-to-page-Zeiger entfernt, was die Leistung des Speicher-Controllers verbessert.

Standardwert für die CFQ group_isolation Variable

Der Standard für die CFQ group_isolation-Variable wurde von 0 auf 1 geändert (/sys/block/<device>/queue/iosched/group_isoaltion). Nach umfangreichen Tests und Benutzerhinweisen konnte festgestellt werden, dass ein Standardwert von 1 sinnvoller ist. Bei der Einstellung 0 werden alle I/O-Queues Teil der Root-Kontrollgruppe, nicht Teil derjenigen Kontrollgruppe, zu der die Applikation gehört. Infolgedessen erfolgt für Applikationen keine Dienstunterteilung.

Anmerkung

Weitere Informationen über Ressourcenverwaltung und Kontrollgruppen finden Sie im Red Hat Enterprise Linux 6.2 Handbuch zur Ressourcenverwaltung.