Kernel-Log – Was 2.6.34 bringt (4): Architektur und Virtualisierung

Schnelleres Suspend und Resume, bessere Nutzung der Stromsparmechanismen von I/O-Geräten und verschiedene Optimierungen, die die Performance oder Skalierbarkeit verbessern, sind nur einige der für Linux 2.6.34 vorgenommenen Änderungen an der Infrastruktur des Kernels.

In Pocket speichern vorlesen Druckansicht 4 Kommentare lesen
Lesezeit: 28 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Schnelleres Suspend und Resume, bessere Nutzung der Stromsparmechanismen von I/O-Geräten sowie verschiedene Optimierungen in Hinblick auf Performance und Skalierbarkeit sind nur einige für Linux 2.6.34 vorgenommenen Änderungen an der Infrastruktur des Kernels.

Am vergangenen Sonntag hat Linus Torvalds mit die siebte Vorabversion von Linux 2.6.34 freigegeben. Laut Freigabe-Mail soll dies der letzte RC sein, was auf die Freigabe der nächsten Kernel-Version aus dem Hauptentwicklungszweig Ende dieser oder Anfang nächster Woche hindeutet. Es wäre aber auch nicht das erste Mal, dass Torvalds nach solch einer Aussage doch noch eine weitere Version einschiebt und den Kernel erst einige Tage später veröffentlicht.

In diesem vierten (und vorletzten) Teil der Mini-Serie "Was 2.6.34 bringt" geht es um Neuheiten rund um den Code für die verschiedenen Prozessor-Architekturen, Tracing, Virtualisierung und andere Bereiche der Infrastruktur des Kernels. Die bedeutsamsten Änderungen rund um Netzwerkunterstützung, Dateisysteme und Grafik-Hardware waren Thema der ersten dreiTeile der Serie.

Nachdem Torvalds die "Asynchronous Suspend And Resume"-Patches bei 2.6.33 noch zurückgewiesen hatte, nahm er deren überarbeite Fassung für 2.6.34 ohne Murren auf. Durch sie legt der Kernel bestimmte Systemkomponenten parallel schlafen oder weckt sie simultan; das soll die Einschlaf- und Aufwachzeiten bei der Nutzung des Bereitschaftsmodus (ACPI S3/Suspend-to-RAM) und des Ruhezustands (Hibernate/Suspend-to-Disk) reduzieren. Weitere Hintergründe dazu liefert der LWN.net-Aritkel "Redesigning asynchronous suspend/resume".

Nachdem der Kernel bislang nur rudimentäre Unterstützung zur Nutzung der Stromspartechniken von I/O-Geräten zur Laufzeit bot, wurde diese bei Linux 2.6.34 erheblich überarbeitet und erweitert (u. a. 1, 2, 3); zudem setzt der für solche Aufgaben schon länger im USB-Subsystem enthaltene Code nun auf neuen generischen Funktionen auf. Die neuen Stromsparfunktionen sind in der Standardeinstellung aber deaktiviert.

Neben diesen Änderungen gab es im PCI-Subsystem noch einige andere Änderungen, die die Ressourcen-Zuordnung beeinflussen – der zuständige Subsystem-Maintainer Jesse Barnes gab sich im Haupt-Git-Pull-Request aber optimistisch, dass diese keine Probleme nach sich ziehen wird.

Durch einige maßgeblich von Yinghai Lu entwickelte Änderungen ist der Kernel auf x86-Systemen nicht mehr auf den bislang beim Systemstarts genutzten "bootmem allocator" angewiesen, sodass der x86-Kernel zum Start nur noch drei statt vier verschiedenen Speicher-Zuteilmechanismen benötigt. Verschiedene andere Optimierungen an der Speicherverwaltung sollen Performance und Skalierbarkeit steigern (u. a. 1, 2). Einige dieser Änderungen haben indirekt Probleme verursacht, deren Ursache Torvalds und einige andere Entwickler mehrere Tage in mühevoller Kleinarbeit nachgespürt haben, was die Freigabe des RC3 um eine Woche verzögert hatte; Details zu den Vorgängen und einen tiefen Einblick ins Speichersubsystem liefert der LWN.net-Artikel "The case of the overly anonymous anon_vma".

Erst weit nach Ende des Merge Window stieß der Treiber vmware_balloon zum Kernel, mit dessen Hilfe sich die Menge des Arbeitsspeichers zur Laufzeit anpassen lässt, die VMware-Gastsystemen zur Verfügung steht. Zur Steigerung der Netzwerk-Performance in den Virtualisierungslösungen KVM und Lguest sind die mit 2.6.34 neuen Techniken Vhost-Net und Macvtap interessant, die bereits Thema im ersten Teil der Artikelserie "Was 2.6.34 bringt" waren. Zum KVM-Code stießen ferner erste Teile einer Hyper-V-Emulation.

Wie bereits bei den vorangegangenen Kernel-Versionen gab es auch für 2.6.34 Dutzende Verbesserungen am Tracing Code und den Performance Events, mit denen sich die Vorgänge im Kernel zu Laufzeit analysieren lassen. Die "jump optimization" (1, 2, 3, Dokumentation) etwa soll Kprobes-Code signifikant beschleunigen, wie Ingo Molnar im einem Git-Pull-Request schreibt. In seiner zweiten Bitte um Aufnahme der von ihm gesammelten Patches listet er weitere wichtige Änderungen im Tracing-Bereich. So bietet der Perf-Code nun eine Python-Scripting-Engine (1, Dokumentation) – Hintergründe dazu liefert der LWN.net-Artikel "Scripting support for perf". Zudem unterstützt der Perf-Code nun auch die Anfang des Jahres eingeführten Prozessoren mit Westmere-Kern – zu denen zählen unter anderem die Dual-Core-Prozessoren aus Intels Core-Baureihen i3 und i5.

  • Erheblich erweitert haben die Kernel-Hacker die Unterstützung für die kürzlich vorgestellte Moorestown-Plattform, mit der Intel verstärkt im von ARM-Prozessoren dominierten Bereichen – etwa Smartphones und Slates – Fuß zu fassen versucht.
  • Über eine Änderung an Lkdtm lässt sich nun ein Kernel-Crash erzeugen – etwa um das Verhalten bei einem Systemabsturz zu simulieren.
  • Das noch junge Devtmpfs gilt nicht mehr als experimentell.
  • Die x86-32-Emulation für Itanium-Prozessoren haben die Kernel-Entwickler entfernt, denn sie habe seit Mai 2008 nicht mehr funktioniert, ohne dass sich jemand darüber beschwert habe.
  • Integriert wurde auch eine Änderung, die das kürzlich bekannt gewordenen Performance-Problem bei AMD jüngst eingeführten Prozessoren mit Turbo Core beseitigt; volle Unterstützung für diese den Prozessor bei Teilauslastung hochtaktende Technik soll in 2.6.35 einfließen.

Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den Kernel-Quellen auf Kernel.org. Im Webfrontend liefern normalerweise der Commit-Kommentar und der Patch selbst zahlreiche weitere Informationen zur jeweiligen Änderungen.

Architektur-Code

x86

ARM

Power

Verschiedene andere Architekturen

ACPI

Memory Management

PCI

Power Management

Prozess-Scheduler

Security

Tracing

Virtualisierung

Verschiedenes

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) (thl)