Kernel-Log – Was 2.6.32 bringt (6): Infrastruktur

Dank devtmpfs soll der Linux-Kernel schneller starten und ohne Udev arbeiten. Neu sind Unterstützung für ACPI 4.0 sowie zwei Make-Targets, die eine zum laufenden System passende Kernel-Konfigurationen erzeugen. Änderungen beim Power Management steigern den Datendurchsatz und ermöglichen eine bessere Nutzung der Stromsparmechanismen moderner I/O-Geräte.

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

Der sechste Teil der Serie "Was Linux 2.6.32 bringt" beschreibt die Änderungen an und um die Infrastruktur des Kernels. Die fünf ersten Teile der Serie hatten sich mit den Neuerungen im Netzwerksubsystem, bei Grafik-Hardware, im Bereich Storage und Dateisysteme, bei weiteren Treibern sowie bei Architektur-Code, Virtualisierung und Tracing beschäftigt.

Verschiedene Patches erweitern der Linux-Kernel um Unterstützung für ACPI 4.0. Zusammen mit ihnen stieß auch ein Treiber für Leistungsmessgeräte nach ACPI 4.0 und der ACPI Processor Aggregator Device Driver zum Kernel. Letzterer legt einzelne CPUs schlafen, wenn er via ACPI 4.0 dazu angewiesen wird. Darüber lässt sich beispielsweise die Leistungsaufnahme vorübergehend reduzieren, um das System bei kritischer Stromversorgung oder drohender Überhitzung mit reduzierter Kraft weiterlaufen lassen zu können, statt es abschalten zu müssen. Der Aufnahme des Treiber ging eine längere Diskussion voran, in der Torvalds ein Machtwort zu Gunsten des Treibers sprach – Details dazu liefert ein Artikel bei LWN.net.

Im PCI-Subsystem haben die Kernel-Hacker die VGA-Arbitration-Patches integriert. Deren Code stellt bei Systemen mit mehreren Grafikkarten zusammen mit einem X-Server ab Version 1.7 sicher, dass die jeweils richtige Grafikkarte die ihr zugedachten VGA-Kommandos des X-Servers erhält – das bringt deutlich mehr Flexibilität beim Aufsetzen von Multiseat-Umgebungen. Details dazu finden sich in der Kernel-Dokumentation und zwei älteren Blog-Einträgen von Dave Airlie und Tiago Vignatti. Einige weitere wichtige Änderungen im PCI-Subsystem listet dessen Verwalter Jesse Barnes in seinem Haupt-Patch; darunter Optimierungen für PCI ASPM (Active State Power Management) und bessere Reset-Möglichkeiten für PCIe-Geräte – die dafür verantwortlichen Änderungen finden Sie auch über die Liste am Ende des Artikels.

Einige umfangreichere Änderungen am Power-Management-Code legen die Basis zur besseren Nutzung der zur Laufzeit verwendbaren Stromsparmechanismen moderner I/O-Geräte – Details dazu liefert ein LWN.net-Artikel. Eine ebenfalls bei LWN.net erläuterte Optimierung am Cpuidle-Framework soll vor allem bei größeren Servern den I/O-Durchsatz steigern – teilweise deutlich. Einige weitere Änderungen am Power-Management-Code listet der Haupt-Patch von Rafael J. Wysocki.

Zahlreiche Verbesserungen gab es am für die Zuteilung von Prozessorzeit an Anwendungen zuständigen Scheduler des Kernels (12). So führt der Kernel Kind-Prozesse nach dem Fork nun nicht mehr als erstes aus und setzt die Priorität von Kind-Prozessen auf den Standardwert, sofern das neue Flag "SCHED_RESET_ON_FORK" gesetzt ist – Hintergründe zu diesen beiden Änderungen liefern zwei Artikel bei LWN.net (12).

Einige der Änderungen am Prozess-Scheduler beseitigen zudem Schwächen, die bei Geschwindigkeitsvergleichen mit dem kürzlich von Con Kolivas veröffentlichten und unabhängig vom Kernel entwickelten BFS ("Brain Fuck Scheduler") gefunden wurden. Eines der ausgeräumten Probleme hat das Encoding mit x264 auf Mehrkern-Systemen erheblich verlangsamt – einer der x264-Entwickler erläutert die Hintergründe näher in seinem Blog und nutzt das für einige Empfehlungen zur besseren Zusammenarbeit zwischen Entwicklern.

Sysfs unterstützt nun Security Labels, was Sicherheitsframeworks wie SELinux eine Zugriffskontrolle in dem virtuellen Dateisystem ermöglicht. Einige der wichtigsten Änderungen im Crypto-Bereich fasst der für dies Subsystem zuständige Herbert Xu im Haupt-Patch für 2.6.32 zusammen.

Nach längeren Diskussionen im Sommer schaffte das gelegentlich als "Devfs 2.0" verspottete devtmpfs den Sprung in den Kernel. Mit seiner Hilfe kann der Kernel beim Start eine mit einem Device-Dateisystem bestückte Ramdisk nun selbst anlegen und einbinden – das kann den Systemstart beschleunigen und ermöglicht das Booten ohne eine mit Udev bestückte Initrd.

Das sind aber nur einige der Vorteile des in einem älteren LWN.net-Artikel näher erläuterten devtmps, das dennoch von manchen Kernel-Entwicklern heftig kritisiert wurde – Torvalds gefiel das Konzept jedoch und begrüßte insbesondere, dass der Kernel nun alles zum Systemstart benötige selbst erledigen könne. Direkt nach der Aufnahme fiel allerdings auf, dass Udev nach dem Start weiter nötig sei, um unter anderem die Berechtigungen von /dev/null und /dev/zero zu setzen – durch einen wenig später eingepflegten Patch erledigt der Kernel nun auch das.

Kernel-Tester können mit Hilfe des neuen Make-Target "localmodconfig" nun relativ einfach eine zur eingesetzten Distribution und der jeweiligen Hardware passende Kernel-Konfiguration erstellen, bei der keine unnötigen Module kompiliert werden. Als Ausgangsbasis dient die Konfigurationsdatei des gerade laufenden Kernels; jedoch werden alle Module deaktiviert, die zu diesem Zeitpunkt nicht geladen sind.

Daher fehlen möglicherweise Treiber für Geräte, die beim Aufruf von Make nicht angeschlossen sind – etwa USB-Hardware. Tester könnten so aber beim Erstellen eines Kernels viel Zeit sparen, wie der für diese Änderungen zuständige Kernel-Hacker Steven Rostedt in seinem Patch erläutert. Dort erklärt Rostedt auch die Funktionsweise und das Make-Target "localyesconfig", das eine Kernel-Konfiguration erzeugt, bei der alle zum Aufrufzeitpunkt geladenen Module fest einkompiliert werden.

Viele weiteren nicht ganz so wichtige 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 betreuten 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.

ACPI

Crypto

Security

PCI

Powermanagement

Scheduler

Diverse andere Änderungen

Die vorangegangen Teile der Kernel-Log-Serie "Was Linux 2.6.32 bringt" haben bereits einen detaillierten Überblick über die wichtigsten Änderungen in vielen Bereichen des Linux-Kernels 2.6.32 gegeben, weil das Gros der Änderungen wie vorgesehen in der ersten Phase des Entwicklungszyklus in den Hauptentwicklungszweig einzog. Einige kleinere, zumeist nicht ganz so wichtige Änderungen der Kategorie "Die kleineren Perlen" haben sich aber noch später eingeschlichen. Die wichtigsten von ihnen finden Sie in der folgenden Liste:

Grafik

Netzwerk

Weitere Hintergründe und Informationen rund um die Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Ausgaben des Kernel-Log. (thl) (thl)