GUADEC 2020: Linux-Systemressourcen scheibchenweise an Prozesse vergeben

Mehr Leistung für den Desktop: Auf der Gnome-Konferenz zeigte eine Präsentation die Priorisierung von Benutzerprozessen mit Cgroups und den Slices von Systemd.

In Pocket speichern vorlesen Druckansicht 13 Kommentare lesen
GUADEC 2020: Linux-Systemressourcen scheibchenweise an Prozesse vergeben

(Bild: Screenshot / events.gnome.org)

Lesezeit: 4 Min.
Von
  • David Wolski

Auf Linux-Systemen mit etlichen Hintergrund- oder auch Serverprozessen erfolgt die Zuordnung verfügbarer Systemressourcen und CPU an interaktive Benutzersessions nicht immer optimal. Ist auf dem System zu viel los, reagieren Programme auf dem Desktop und die Desktopumgebung selbst zunehmend träge.

Zur Gnome Konferenz GUADEC 2020, welche dieses Jahr online stattfindet, präsentierte Benjamin Berg, ein Gnome-Entwickler aus dem Fedora-Umkreis, eine Methode, Benutzersessions speziell für den Gnome-Desktop per Cgroups und Systemd zu priorisieren. Sein Konzept sieht vor, Benutzern eines Linux-Systems einen Teil der verfügbaren Systemressourcen über die Slices von Systemd zu garantieren, um in diesem Fall den Gnome-Desktop in der Benutzersession auch unter hoher Gesamtlast flott und reaktionsfreudig zu halten.

Slices machen Gebrauch von Cgroups im Linux-Kernel, die eine absolute, vordefinierte Zusicherung von Ressourcen an Prozesse und deren Subprozesse erlauben. Der Ansatz von Benjamin Berg ist dazu für Gnome maßgeschneidert und bezieht nach der Anmeldung von Usern an Gnome alle deren Prozesse mit ein.

Üblicherweise kümmert sich der Scheduler des Linux-Kernels unter Berücksichtigung der Priorität der Prozesse und nach seinem eigenen Regelset um die Zuweisung von Speicher, CPU- und I/O-Leistung. Die Priorität kann manuell über die Befehle "nice" und "renice" angepasst werden. Dieses schon ziemlich alte Konzept ist allerdings eher für Hintergrund- sowie Serverprozesse praktikabel und auf ganze Prozessgruppen, aus der eine Benutzersession besteht, schlecht anwendbar. Zudem dürfen Benutzer ihre Prozesse mit "nice" nur zurückstufen, sie ohne root-Rechte aber nicht priorisieren oder ihnen gar einen festen, absoluten RAM-Anteil reservieren.

Die seit der Kernel-Version 2.6.24 verfügbaren Cgroups erlauben dagegen eine detaillierte Ressourcen-Limitierung oder -Zuweisung an Prozesse und auch deren Abschottung von anderen. Letztere Fähigkeiten haben Cgroups vor allem im Kontext von Container-Laufzeitumgebung popularisiert. Vordefinierte Cgroups-Regeln sind zum Ressourcen-Management aber auch auf dem Linux-Desktop interessant und können dafür sorgen, dass angemeldeten Benutzern Desktop-Oberfläche und gestartete Programme auch unter hoher Systemlast nicht verhungern.

Nutzt man nun die "Slices" von Systemd, um Prozesshierarchien Ressourcen per Cgroups zu garantieren, so tritt dieses als Ressourcen-Manager auf und erspart eine umfangreiche Modifikation von GUI und Programmen des Session-Managers. Zudem verlangt die optionale Ergänzung per Systemd wenig Umbauten am Linux-System. Systemd liefert über sein Target "graphical-session" und ein Slice für den grafischen Desktop auch schon das nötige, wenn auch noch frühe Grundgerüst zum Session-Management für Linux-Desktops.

Bergs Ansatz fasst die relevanten Gnome-Prozesse in einem Slice zusammen. Speicher- und CPU-Lastverteilung funktionieren dabei schon jetzt zuverlässig. Für Fedora steht der Systemd-Daemon "uresourced" zum Testen zur Verfügung, der eine Beispielkonfiguration für die Gnome-Shell mitbringt und angemeldeten Usern auch 250 MB Speicher garantiert.

Eine Demonstration beim Vortrag zeigte bereits, dass die Gnome-Session vor Seitenflattern (Thrashing) geschützt ist, Benutzeranmeldungen per SSH weniger Priorität für den Zugriff auf Systemressourcen genießen und von anderen Sessions gezündete Fork-Bomben den grafischen Desktop nicht mehr komplett in die Knie zwingen.

GUADEC in Zeiten von SARS-CoV-2: Die jährliche Konferenz findet 2020 nur online statt, unter Verwendung von BigBlueButton und Rocket.Chat, die das Team der Gnome-Foundation selbst hostet.

(Bild: Screenshot / events.gnome.org)

Benjamin Berg weist aber darauf hin, dass die Ermittlung und Zusicherung von I/O-Leistung noch nicht gut klappt und deshalb in "uresourced" vorerst noch deaktiviert ist. Denn diese erfordert die genauere Auswertung von Indikatoren, welche stark vom Dateisystem und den zu erwarteten Latenzen des Datenträgers abhängig sind. Aktuell erlaubt hier lediglich BTRFS eine Vorabberechnung von Latenzen über Vergleiche mit anderen Prozessen und eine garantierte, relative Latenz für Dateisystemzugriffe.

Vorgeschlagen ist die Aufnahme von "uresourced" beziehungsweise dem überarbeiteten Nachfolger schon für Fedora 33, das Ende Oktober 2020 erwartet wird. Details nennt das Fedora-Wiki.

(ovw)