Kernel-Log – Was 2.6.30 bringt (5): Architektur und Infrastruktur

Seite 2: Power-Management und PCI, Tuz und Schnellstart

Inhaltsverzeichnis

Im PCI-Subsystem gab gleich mehrere größere Änderungen, wie der PCI-Subsystem-Verwalter in seinem Git-Pull-Requests festhält. Er hebt unter anderem verbesserte Unterstützung für Hotplugging und MSI (Message Signaled Interrupts) hervor. Zudem bietet das PCI-Subsystem nun alles Nötige für Single Root I/O Virtualization (SR-IOV) – mit ihr lassen sich PCI-Geräte mit Unterstützung für SR-IOV in mehrere virtuelle Geräte aufteilen, die sich virtualisierten Gastsystemen zuweisen lassen.

Nach größeren Änderungen am Code für den Wechsel in und aus systemweiten Schlafzuständen (Suspend und Resume) bei 2.6.29 gab es nun noch weitere Anpassungen, die einige Ecken und Kanten des jungen Designs beseitigen. Speziell die Behandlung der Interrupts haben die Entwickler nochmal überarbeitet, um die Nutzung der Schlafzustände robuster zu machen.

Bereits bei Linux 2.6.28 und 2.6.29 gab es zahlreiche Änderungen am Kernel, die den Startvorgang beschleunigen sollten (Fastboot-Patches). Einige der vielversprechendsten Verbesserungen wurden jedoch aufgrund von Problemen vorübergehend nur genutzt, wenn man sie über einen Kernel-Parameter beim Start explizit aktivierte. Mit 2.6.30 soll der Code nun zum Einsatz kommen. Wie viel schneller das System durch die parallele Initialisierung einiger Kernel-Subsysteme startet, hängt allerdings stark von den jeweiligen Hardware-Komponenten und deren Konfiguration ab.

Tuz machte derweil wieder Platz und überlässt den Job des Linux-Maskottchens wieder dem Pinguin Tux. Erheblich unstrukturiert wurde die Datei Maintainers: Mit Hilfe einiger dort hinzugefügter Informationen ist ein neues Skript in der Lage auszugeben, welche Entwickler für einen bestimmten Bereich oder eine Datei des Kernels zuständig sind.

Größere Umbauarbeiten gab es für Linux 2.6.30 an der Struktur des Code für x86-Systeme, die nun keine "Sub-Architekturen" mehr unterstützen (1, 2). Im Zuge dieser Arbeit entfernten die Entwickler die Unterstützung für 32-Bit-Voyager-Systeme – der Code habe sich seit 2.6.27 ohnehin nicht mehr übersetzen lassen. Möglicherweise wird veränderter Code die Unterstützung für diese etwas spezielle x86-Architektur aber bald wieder nachrüsten. Neu ist die Unterstützung für die Microblaze-Architektur; der Code für die Xtensa-Architektur weiß nun mit den Chips der Stretch-S6000-Familie umzugehen (1, 2).

Im Virtualisierungsbereich ging es diesmal vergleichsweise ruhig zu. Zu einer der größeren Neuerung zählt die Unterstützung für Nested Virtualization bei neueren AMD-CPUs – also das Aufsetzen eines Gastsystems aus einem Gastsystem heraus. Zudem wurden die Debugging-Möglichkeiten von KVM verbessert. Und wie praktisch mit jeder neuen Version wollen die KVM-Entwickler die Performance sowie die Emulation allgemein verbessert haben ("better performance and improved emulation accuracy"). Der Xen-DomU-Code erhielt einige Änderungen. Draußen bleiben musste aber der Dom0-Code – derzeit sieht es auch nicht so aus, als würde er in naher Zukunft aufgenommen werden, denn Torvalds und einige anderen wichtige Kernel-Entwickler haben den zur Aufnahme vorgeschlagenen Code kürzlich nachhaltig kritisiert.

Durch einige Änderungen lassen sich in Zukunft mehr Informationen zum aktuellen Zustand moderner CPUs auslesen, was für Fehlerfindung und Performance-Optimierung nützlich ist (1, 2). Ferner nahmen die Entwickler Infrastruktur zum Debugging von DMA-Transfers auf (1, Dokumentation).

Das Tracing-Framework Ftrace arbeitet nun auch auf IA64-CPUs (Itanium). Neu sind die Trace-Plugins kmemtrace (Speicher), blktrace (Block-Geräte wie etwa Datenträger) und der Workqueue-Tracer. Zahlreiche andere Tracer und Ftrace selbst wurden erweitert und verbessert – Details finden sich im Git-Pull-Requests für die Tracing-Infrastruktur und über die Liste mit weiteren Commits am Ende des Artikels