Kernel-Log – Was 2.6.38 bringt (5): Architektur, Infrastruktur und Virtualisierung

In bestimmten Situationen steigert ein kleiner Patch die Reaktionsgeschwindigkeit von Desktop-Umgebungen spürbar. Die Transparent Huge Pages erleichtern die Speicherverwaltung, was speziell für Virtualisierung oder Server-Software interessant ist.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 38 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

In der Nacht von Dienstag auf Mittwoch hat Linus Torvalds die siebte Vorabversion von Linux 2.6.38 freigegeben. Er erwähnt dabei unter anderem die Korrektur für einen Fehler an Btrfs, der in gewissen Situationen zu Datenverlust führt – erneut gab Torvalds keine Hinweise auf einen Freigabetermin von 2.6.38.

Die Fertigstellung der nächsten Version des Hauptentwicklungszweigs rückt aber dennoch näher, daher will das Kernel-Log seine Mini-Serie "Was 2.6.38 bringt" langsam zu einem Ende bringen und widmet sich im vorletzten Teil den Neuerungen rund um Architektur-Code, Infrastruktur und Virtualisierung. Teil eins und drei hatten sich mit den Änderungen bei Grafik und Netzwerk gewidmet; Teil zwei und vier drehten sich um Dateisysteme und Storage. Das Ende der Serie wird der in einigen Tagen folgende Artikel zu Treibern für Audio-, USB- und Video-Hardware markieren.

Für verhältnismäßig viel Aufsehen sorgte um den Jahreswechsel eine als "Wunderpatch" oder "Autogroup scheduling feature" bekannt gewordene Änderung, welche die Interaktivität von Desktop-Umgebungen und -Anwendungen in bestimmten Situation verbessert. Das gelingt allerdings nicht durch magisch erzeugte CPU-Ressourcen, sondern durch die automatische Gruppierung aller Prozesse einer Session zu einer Cgroup (Control Group) – das sorgt bei Vollauslastung der CPU für eine andere Verteilung der Prozessorzeit, was zu einem reaktionsschnelleren Desktop führen kann, sofern die CPU-lastigen Prozesse in einer anderen Gruppe stecken als die Desktop-Umgebung.

Details zur Funktionsweise liefert ein älteres Kernel-Log und ein Artikel bei LWN.net. Scheduler-Maintainer Ingo Molnar und Linus Torvalds zeigten sich von dem Patch angetan und loben ihn im Haupt-Git-Pull-Request für den Scheduler-Code und der Ankündigung von 2.6.38-rc1.

Die größte Wirkung zeigt sich allerdings bei Bedingungen, wie sie bei Kernel-Hackern häufig auftreten: Das Benutzen der Desktop-Oberfläche, während im Terminal eine CPU-lastige Aufgabe läuft – etwa das Kompilieren eines Kernels. Keine nennenswerten Einfluss hat die Gruppierung in Situationen, wo zwei Desktop-Anwendungen um die Prozessorzeit wetteifern.

In den Standard-Vorgaben für die Kernel-Konfiguration ist die via "CONFIG_SCHED_AUTOGROUP" einschaltbare Funktion deaktiviert; möglicherweise werden sie auch nicht alle Distributionen einschalten, da die SysV-Init- und Upstart-Alternative Systemd eine ähnliche, allerdings flexiblere Funktion bietet.

Durch die neuen Transparent Huge Pages (THP) handhabt der Kernel große Speicherseiten deutlich flexibler und kann sie in bestimmten Situationen sogar automatisch verwenden (u. a. 1, 2, 3); das sollte langfristig die umständliche und nicht sonderlich flexible Einbindung via HugeTblFs unnötig machen. Speziell bei großen Datenbanken oder der Virtualisierung verbessern große Speicherseiten die Performance, weil sie Kernel und Prozessor die Speicherverwaltung erleichtern und einige Funktionseinheiten moderner CPUs zum Zug kommen, die sonst ungenutzt blieben.

THP wurde maßgeblich vom Red-Hat-Entwickler Andrea Arcangeli vorangetrieben; frühe Versionen des Codes setzt Red Hat bereits beim im vergangen November eingeführte Red Hat Enterprise Linux 6 ein, wo THP als eine der wichtigsten Neuerungen hervorgehoben wurde. Details zur Technik und ihren Vorteilen liefern die zugehörige Dokumentation oder der LWN.net-Artikel "Transparent huge pages in 2.6.38". Einige kurz vor der Aufnahme der THP-Patches von VM-Hacker Mel Gorman durchgeführte Benchmarks vergleichen THP mit dem HugeTblFs und einem Kernel, der keine großen Speicherseiten nutzt. Hintergründe und Vorteile der Technik liefert Arcangeli in den Präsentationsfolien und der Videoaufzeichnung eines Vortrags auf dem KVM Forum 2010.

THP fand über den von Andrew Morton gepflegten MM-Tree den Weg in 2.6.38 und umging den Linux-Next genannten Entwicklerzweig, in dem die Subsystem-Verwalter die Arbeit an der jeweils übernächsten Version koordinieren. Das führte zu Unmut, da einige (recht kurzfristig beseitigte) Fehler so erst nach der Aufnahme in den Hauptentwicklungszweig ans Licht kamen; Morton erklärte daraufhin, er bereite die Integration in den des MM-Kernels in Linux-Next bereits vor, der den früher sehr wichtigen MM-Kernel in vielen Bereichen abgelöst hat.

Nach dem bei 2.6.37 integrierten Xen-Dom0-Support zogen einige Grundlagen für Xen-Backend-Treiber in den Kernel ein – die zum sinnvollen Betrieb einer Linux-Dom0 benötigten Backend-Treiber wurden aber nicht rechtzeitig fertig und folgen vermutlich bei 2.6.39. Über den "Userspace Grant Access Device Driver" können Xen-Gäste nun Speicherseiten mit einem anderen teilen. Der HVM X2APIC Support soll ferner die Interrupt-Verarbeitung beschleunigen.

Die KVM-Entwickler wollten ihren Hypervisor um "Asynchronous Page Faults" bereichern, aber Torvalds gefielen einige Aspekte der Patches nicht, sodass die KVM-Entwickler sie nochmal überarbeitet wollen. Als wesentlichste Neuerung an KVM verbleibt so die Unterstützung für die Transparent Huge Pages und die Flush-By-Asid genannte Virtualisierungserweiterungen von AMDs Prozessoren der Bulldozer-Familie, die Mitte des Jahres erwartet werden.