Kernel-Log – Was 3.9 bringt (2): Infrastruktur

Experimentelle Kernel-Funktionen sind jetzt nur noch in den Hilfetexten der Konfigurationsoptionen gekennzeichnet. Linux 3.9 beherrscht "Suspend Freeze" und kann Intel-CPUs durch Kurzzeitschlaf drosseln. Der KVM-Hypervisor unterstützt jetzt ARM-Kerne.

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

Die Linux-Entwickler haben wie geplant die Kernel-Konfigurations-Option CONFIG_EXPERIMENTAL entfernt (u. a. 1, 2). Ursprünglich sollten sich experimentelle Funktionen bei der Kernel-Erstellung nur aktivieren lassen, wenn diese Option gesetzt war. Nach dem Reifen von Funktionen haben die Kernel-Entwickler aber oftmals vergessen, die Abhängigkeit von CONFIG_EXPERIMENTAL zu entfernen, sodass man die Option so gut wie immer aktivieren muss, um einen Kernel für moderne Hardware und Distributionen zu bauen. Das ist auch den Kernel-Entwicklern aufgefallen, daher lassen sie den Ansatz jetzt fallen.

Auf tatsächlich experimentelle Funktionen weisen jetzt nur noch die bei der Konfiguration angezeigten Hilfetexte oder Angaben wie "(EXPERIMENTAL)" in der Kurzbeschreibung hin; das zeigt sich beispielsweise beim Konfigurations-Hilfetext des Btrfs-Dateisystems.

Mehr Infos

Entwicklungsstand

Am Montag den 8. April hat Linus Torvalds die sechste Vorabversion von Linux 3.9 freigegeben. Dabei erwähnte er, alles gehe seinen üblichen Gang; wenn nicht noch etwas unerwartetes auftauche, werde der RC7 daher die letzte Vorabversion sein.

Das deutet auf eine Freigabe von Linux 3.9 rund um Sonntag, den 21. April hin, da Torvalds neue Vorabversionen ungefähr im Wochenrhythmus veröffentlicht. Schon oft haben sich aber kurz vor der Fertigstellung einer neuen Version noch Probleme gezeigt, die die Freigabe um eine Woche oder zwei verzögert haben.

Linux 3.9 beherrscht einen "Lightweight Suspend" oder "Suspend Freeze" genannten Schlafmodus, bei dem der Kernel alle Hardware-Komponenten in ihren tiefsten Schlafzustand schickt. Anders als bei einem Suspend-to-RAM (ACPI S3) wird die Stromversorgung der Komponenten dabei nicht abgeklemmt, daher sind die Bauteile schneller wieder einsatzbereit. Dadurch ist aber auch die Leistungsaufnahme höher als beim Suspend-to-RAM; sie soll allerdings niedriger sein als im normalen Leerlauf, weil der Prozessor tiefer und länger schlafen kann.

Für PCs oder Notebooks ist der Freeze-Zustand eher uninteressant, abgesehen von Spezialfällen wie Systemen, die besonders schnell aus dem Schlaf erwachen müssen, auf Tastendruck oder Netzwerkverkehr reagieren sollen oder Suspend-to-RAM nicht beherrschen. Der Schlafzustand soll aber für manche Smartphones und Tablets interessant sein, die bei dieser Schlafmethode kaum mehr Leistung aufnehmen als bei Suspend-to-RAM.

Zum Kernel stieß auch Intels PowerClamp-Treiber. Ähnlich wie beim Throttling kann er die maximale Leistungsaufnahme bei Intel-Prozessoren begrenzen; der neue Treiber dreht dabei aber nicht am Taktsignal, sondern schickt die Prozessoren kurzzeitig zum Schlafen in einen tiefen C-State. Das Ganze ist aber nicht zum Stromsparen gedacht, sondern zum Begrenzen des Stromverbrauchs – etwa um die Wärmentwicklung von Prozessoren oder den Stromverbrauch von Servern zu drosseln.

Eine recht kleine Änderung am Prozess-Scheduler konnte den Festplattendurchsatz in einem bestimmten Test-Szenario mit Tbench von gut 15 auf rund 250 MByte pro Sekunde steigern, wie der Entwickler im Commit-Kommentar erläutert. Der Testaufbau war allerdings genau darauf ausgelegt, ein als "bouncing cow syndrome" bekanntes Problem auf einem System mit HyperThreading zu reproduzieren. Bei diesem Problem weist der Kernel Prozessen immer wieder anderen Prozessorkernen zu, wenn mehr Prozessorkerne bereit stehen als aktive Prozesse; dadurch "wandern" Prozesse und die Caches der Prozessoren kommen nicht recht zum Zuge.

Bessere Unterstützung für VMware verspricht die Aufnahme der Treiber für VMwares VMCI (Virtual Machine Communication Interface) und die darauf aufbauenden VMCI Sockets (u. a. 1, 2, 3). VMware-Produkte nutzen diese Techniken für die Kommunikation und den Datenaustausch zwischen Wirt und Gast – etwa bei den "Shared Folders". Durch die Treiber im Kernel lassen sich einige solcher Techniken in Zukunft nutzen, ohne dass der Anwender erst selbst Kernel-Treiber übersetzen muss.

Der Kernel-eigene Hypervisor KVM wird die Virtualisierungsfunktionen von Cortex-A15-Prozessoren unterstützen. Damit arbeitet KVM erstmals auch unter ARM-Kernen. Der Xen-Code des Kernels unterstützt ARM seit dem Kernel 3.7, wenn man Linux unter Entwicklerversionen des im Sommer erwarteten Xen-Hypervisors 4.3 einsetzt. Neu im ARM-Code ist auch die Unterstützung für eine "Dummy Virtual Machine Platform", die für Kernel gedacht ist, die als Gast unter KVM oder Xen laufen sollen.

Die Xen-Unterstützung erhielt Treiber, um Prozessoren und Speicher im Betrieb hinzuzufügen (1, 2, 3); ein Entfernen im Betrieb gelingt vorerst nicht. Das in Linux 3.6 aufgenommene und von Qemu 1.3 unterstützte VFIO (Virtual Function I/O) erhielt experimentelle Grundlagen, um Grafikkarten vom Host an Gäste durchzureichen. Der Hyper-V-Code beherrscht jetzt das verbesserte Interrupt-Modell, das Microsoft mit Windows 8 eingeführt hat.

Der für das Komprimieren und Dekomprimieren von LZO zuständige Code wurde aktualisiert und soll dadurch deutlich schneller arbeiten; auf manchen Prozessoren sogar doppelt so schnell, wie es im Commit-Kommentar heißt.

Durch einige Erweiterungen soll der Kernel bereits jetzt die SGI Ultraviolet System 3 (UV3) unterstützen – die dritte, noch in Vorbereitung befindliche Generation von SGIs "Supercomputing Platform" UV. Der Kernel kann nun auch auf Nvidias Tegra 4 arbeiten und ARM-Multiplattformkernel können alles enthalten, um auf OMAP-Platformen zu laufen – etwa dem BeagleBoard. Die Liste der unterstützten CPU-Architekturen ist wieder um zwei Einträge länger geworden, denn Linux läuft jetzt auch auf den ARC-Prozessoren von Synopsys sowie den Prozessorkernen Meta ATP (Meta 1) und HTP (Meta 2) von Imagination.

Der x86-Code unterstützt jetzt die Goldfish Android Virtual Platform – die System-Plattform eines auf Qemu aufbauenden Android-Emulators von Google. Zahlreiche Treiber für diese Plattform stießen ebenfalls zum Kernel; einige von ihnen sind allerdings im Staging-Bereich gelandet, weil sie den Qualitätsansprüchen der Kernel-Entwickler nicht genügen.

Das Tracing-Tools Perf enthält nun eine Testroutine, um die Speicherperformance von NUMA-Systemen zu prüfen. Die Kernel-Entwickler haben zudem bei Tracen verwendete Datenstrukturen geschrumpft, um den Overhead zu reduzieren. Die Änderung war schon zuvor einmal in den Kernel eingezogen, wurde dann aber recht schnell revidiert, weil sie Programme wie Powertop gestört hat; aktuelle Powertop-2-Versionen sollen mit der Änderung kein Problem mehr haben.

Userspace-Programme können Ftrace nun zum Anlegen eines Analyse-Snapshot auffordern, um diesen in Ruhe auslesen zu können. Weitere wichtige Änderungen an der Tracing-Infrastuktur des Kernels listet der Kommentar des Haupt-Git-Merge dieses Bereichs.