Kernel-Log: Flinker mit Prozessgruppen

Trends & News | Kernel-Log

Durch die automatische Gruppierung von Prozessen sollen Videos in Zukunft nicht mehr ruckeln und die Desktop-Oberfläche bedienbar bleiben, auch wenn viele Prozesse die CPU gehörig ins Schwitzen bringen. Derweil schreitet die Entwicklung von 2.6.37 voran und neue Stable-Kernel bringen Korrekturen für die Vorgänger. 2.6.35 hat indes sein Lebensende erreicht.

In der vergangenen Woche sorgte ein nur zirka 200 Zeilen umfassender Patch für Gesprächsstoff in Linux-Kreisen. Er soll die Interaktivität von Desktop-Applikationen in bestimmten Situationen, bei denen die CPU voll ausgelastet wird, erheblich steigern. Begonnen hatte die Diskussion um den Ansatz der Code-Änderung bereits vor einem Monat; verstärkte Aufmerksamkeit erhielt eine überarbeitete Version des Patches, nachdem Torvalds sie vor einer Woche in sehr deutlichen Worten lobte und davon sprach, dass sein System beim Kompilieren eines Kernels deutlich interaktiver sei.

Die bessere Reaktionsgeschwindigkeit erreicht der Patch, indem er für mit setsid() erstellte Sessions (etwa Daemonen, echte Terminals oder Pseudo-TTYs wie Xterm) automatisch eine eigene, über Cgroups verwaltbare Prozessgruppe erstellt und dadurch beeinflusst, wie der Prozess-Scheduler die verfügbare Prozessorzeit verteilt. Am besten lässt sich das mit einem vereinfachten Beispiel verdeutlichen, bei dem ein Multimedia-Player ein Video auf einer Single-Core-System wiedergibt, während man parallel in einem Xterm einen Kernel mit 9 simultanen Jobs (make -j 9) kompiliert.

Im Normalfall würde der Scheduler jedem Job 10 Prozent der Zeit zuteilen. Das ist unter Umständen zu wenig für eine flüssige Video-Wiedergabe. Wenn die Desktop-Oberfläche Tastatur- und Mauseingaben verarbeiten soll, müsste auch sie sich noch dazwischenquetschen, sodass die Zeit dann durch elf Prozesse aufgeteilt würde.

Durch den Patch landen die im Pseudo-Terminal gestarteten Compiler-Prozesse in einer eigenen Gruppe; die Prozesse der Desktop-Umgebung und der darüber gestartete Multimedia-Player stecken in einer anderen. Sofern in beiden Gruppe Prozesse laufen, die die CPU voll fordern, gewährt der Prozess-Scheduler jeder Gruppe 50 Prozent der Prozessorzeit. Innerhalb der Gruppe wird die Zeit wieder gerecht verteilt – jeder Compiler-Job erhält dann nicht mehr 10, sondern nur noch 5,6 Prozent der CPU-Zeit. Dadurch steht der Gruppe mit Desktop und Video-Player mehr Rechenzeit zur Verfügung, was für eine flüssige Video-Wiedergabe ausreichen sollte und noch genug Luft lässt, damit die Desktop-Oberfläche flott auf Eingaben via Maus und Tastatur reagiert.

Bei flotten CPUs dürfte die Player-Software allerdings die ihr zur Verfügung stehende CPU-Zeit gar nicht komplett verwenden und daher die Kontrolle an den Scheduler zurückgeben, wenn es gerade nichts weiteres zu tun gibt. Der verteilt die Zeit dann an andere Jobs, sodass die Gruppe mit den Prozessen zum Kompilieren des Kernels letztendlich mehr als 50 Prozent der CPU-Zeit erhält – das Kompilieren sollte dadurch nicht viel länger dauern als ohne die automatische Gruppierung.

Dieses Verhalten lässt sich aber auch bei älteren Kerneln und ohne den Patch konfigurieren. Dazu sind bei konfigurierten CPU-Cgroups lediglich zwei Aufrufe in den Startdateien der Bash nötig, wie Pulseaudio- und Systemd-Entwickler Lennart Poettering erklärt. Eine vergleichbare Lösung direkt in Systemd hält er für eleganter und flexibler als die automatische Gruppierung durch den Kernel. Den dazu nötigen Code implementierte Poettering wenige später und integrierte ihn in Systemd, damit es zusammen mit einer Erweiterung für das Gnome-Terminal die Gruppen ähnlich anlegt, wie es der Kernel-Patch auch tun würde. Ted Ts'o ('tytso') merkte an, dass man die Spezifikation für Desktop-Dateien sogar so anpassen könnte, dass auch andere Applikationen automatisch eine eigene Gruppe erhalten können.

Über die Vor- und Nachteile der beiden Ansätze und ihrer Implementierungsdetails wurde in einer langen Diskussion teilweise recht harsch gestritten. Auch Torvalds sparte an einigen Stellen nicht mit deutlichen Worten, brachte die Diskussion aber später auch wieder zur Ruhe, indem er erklärte, dass nichts dagegen spricht, beide Ansätze zu verfolgen.

Genau darauf scheint es zumindest derzeit hinauszulaufen, denn der Verwalter des Prozess-Schedulers hat angedeutet, den Kernel-Patch zur Auto-Gruppierung für 2.6.38 zu integrieren; dabei hat er aber ein Problem im Code gefunden, an dessen Beseitigung noch gearbeitet wird. Die Auto-Gruppierung lässt sich durch eine Konfigurationsoption ein- und ausschalten, sodass Distributionen, die ausschließlich auf die Systemd-Lösung setzen wollen, die zuständigen Kernel-Funktionen problemlos deaktivieren können.

Den meisten Anwendern dürfte ohnehin egal sein, welche der beiden Ansätze nun unter der Haube arbeitet – Hauptsache, die Desktop-Oberfläche reagiert flott und Videos und ruckeln nicht, selbst wenn andere Prozesse die CPU ins Schwitzen bringen.

Zum Start dieser Arbeitswoche hat Linus Torvalds die dritte Vorabversion von Linux 2.6.37 veröffentlicht und sich in der begleitenden Freigabe-Mail erfreut darüber gezeigt, dass es so ruhig gewesen sei – dass also die anderen Kernel-Hacker relativ wenig Änderungen zur Aufnahme eingesandt haben.

Am Montag Abend folgte Greg Kroah-Hartman und gab vier neue Stable-Kernel frei: 2.6.27.56, 2.6.32.26, 2.6.35.9 und 2.6.36.1. Einige Korrekturen für die 36er-Reihe hat er hat er außen vor gelassen und für 2.6.36.2 aufgehoben. Die 35er-Reihe hat mit 2.6.35.9 jetzt ihr "End of Life" erreicht und soll keine weitere Updates erhalten; Anwender dieser Kernel-Serie sollen daher auf den Kernel 2.6.36 umsteigen, schreibt Kroah-Hartman in der Freigabe-Mail zu dieser Version.

Kernel

  • Die Linux-Foundation hat kürzlich das Web-Seminar "Introduction to Btrfs with Chris Mason" online gestellt, dass nach einer Registrierung kostenlos abrufbar ist. Im Webinar zu dem als "Next Generation File System for Linux" eingestuften Dateisystems gibt Btrfs-Hauptentwickler Chris Mason einen Überblick über einige der jüngst fertiggestellte Entwicklungen und erläutert die RAID-5 und RAID-6-Fähigkeiten näher.
  • Christoph Hellwig gibt in dem "XFS status update for October 2010" einen Überblick über die jüngsten Entwicklungen rund um XFS und geht dabei auch auf die Neuerungen ein, die für die Linux-Version 2.6.37 integriert wurden.
  • Anfang des Monats flammte auf der LKML nochmal kurz eine Diskussion rund um die Änderungen auf, die im Android-Kernel stecken, aber nicht Bestandteil des offiziellen Kernels sind. Der langjährige und derzeit bei Google beschäftigte Kernel-Hacker Ted 'tytso' Ts'o schrieb in dem Rahmen, dass auch die Kernel der Enterprise-Distributionen von Red Hat oder Novell/Suse zahlreiche Patches enthielten, die nie in den offiziellen Kernel eingeflossen sind, ohne dass es vergleichbare Diskussionen gibt. Journalisten und Blogger hätten die Diskussionen zu einer Kontroverse aufgebauscht und ihr eine Bedeutung verliehen, die sie nicht verdient.

X-Server und Co.

  • AMD hat vergangene Woche die Version 10.11 seiner als Catalyst oder Fglrx bekannten proprietären Grafiktreiber zum Download bereit gestellt, diesmal jedoch keine begleitenden Release Notes veröffentlicht.
  • Ein Nvidia-Mitarbeiter hat kürzlich in einem offiziellen Linux-Support-Foren auf nvnews.net erklärt, das Unternehmen plane keine Unterstürzung der X-Server-Alternative Wayland.
  • Wayland-Entwickler Kristian Høgsberg hat den bisher unter der MIT-Lizenz stehenden Code für libwayland-server und libwayland-client unter die LGPLv2 gestellt.

Kernel-Umland ("Plumbing layer"), Userland-Treiber, Entwicklertools, ...

  • Thomas Gleixner und Ingo Molnar haben kürzlich das Tracing-Programm 'trace' vorgestellt, mit dessen Hilfe sich Vorgänge im System besser untersuchen lassen sollen als mit existierenden Tools.
  • Lennart Poettering gibt in einem Blog-Eintrag einen Überblick über den aktuellen Stand der Systemd-Entwicklung und listet viele jüngst vorgenommene Änderungen. So enthält die SysV-Init- und Upstart-Alternative nun eine eigenen Readahead-Implementation und unterstützt Btrfs-Defragmentation, was die Boot-Zeit insbesondere auf älteren Systemen verbessern soll. Poettering hat zudem den vierten Teil seiner Serie "Systemd für Administratoren" veröffentlicht.
  • Michael Kerrisk hat die man-pages 3.31 freigegeben, die einen weiteren Syscall von getrlimit und ein Flag von Inotify erläutern, die bei Linux 2.6.36 eingeführt wurden. In seinem Blog hat Kerrisk zudem sein kürzlich erschienenes Buch "The Linux Programming Interface" (TLPI) beworben, dessen Quellen zum kostenlosen Download bereitstehen.
  • Douglas Gilbert hat die Version 1.06 des als "hdparm for SCSI disks" umschriebenen Sdparm veröffentlicht.
  • M. Tim Jones gibt in dem bei IBM Developerworks erschienen Artikel "Virtual networking in Linux" einen Überblick über die Möglichkeiten zur Netzwerkkonfiguration im Virtualisierungsumfeld.
  • Über die Webseiten der Linux Plumbers Conference sind die Präsentationsfolien von vielen der Konferenz-Vorträgern erhältlich. Im "Kernel-Report" gibt LWN.net-Gründer und Chef Jonathan Corbet einen guten Überblick über die jüngsten und in naher Zukunft erwarteten Entwicklungen des Linux-Kernels. Die neusten Verbesserungen für die Tracing-Tools des Kernels fasst Arnaldo Melo in "Perf Tools: Recent Improvements" zusammen. Rafael Wysocki liefert in "Runtime Power Management in the PCI Subsystem" Hintergründe rund um die in letzter Zeit durchgeführten Kernel-Änderungen, mit denen sich die zur Laufzeit verwendbaren Stromsparmechanismen von PCI-Geräten nutzen lassen.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl).

Kommentare

Kommentare lesen (51 Beiträge)

Anzeige
Anzeige