Viel bewegt – Die Neuerungen von Linux 2.6.27

Seite 5: Noch mehr neue Treiber

Inhaltsverzeichnis

Die bislang erwähnten Neuerungen bei Infrastruktur und Treibern sind die, die für einen Großteil der Linux-Anwender relevant sind – bevor dieser Artikel jedoch auf andere für die Linux-Entwicklung wichtige Vorgänge während der 2.6.27-Entwicklung eingeht und von da über ein Kurzfazit zu einem Ausblick auf 2.6.28 übergeht, sollen im folgenden zahlreiche weitere, alles andere als unwichtige Neuerungen bei Treibern und Infrastruktur Erwähnung finden. So haben die Kernel-Hacker das Aufwachen aus dem Bereitsschaftsmodus (ACPI S3) bei Systemen beschleunigt, die den AHCI-Treiber zum Ansprechen der Systemdatenträger nutzen. Ein anderer Patch an eben diesem Treiber hat den Datendurchsatz beim Autor der Änderung um durchschnittlich zehn Prozent gesteigert. Ferner ist die Unterstützung für Enclosure Management im AHCI-Treiber neu, was das Auffinden von (defekten) Festplatten im Server-Rack erleichtern kann.

Treibereien In der Unmenge der für Linux 2.6.27 vorgenommenen Änderungen finden sich eine Unmenge an Patches, die die zahlreichen in den Linux-Quellen enthaltenen Treiber verändern. Diese Patches verbessern die Hardware-Unterstützung, erweitern den Funktionsumfang oder korrigieren schlichtweg Fehler. Die in den nebenstehenden Absätze auf dieser und den vorangegangenen Seiten erwähnten Treiberneuerungen sind nur die allerwichtigsten; viele weitere solcher Änderungen finden sich am Ende des Artikels in zwei thematisch grob sortierten Listen mit Kurzbeschreibungen der jeweiligen Änderung (1, 2). Diese verlinken zum jeweiligen Commit im Webinterface des Verwaltungssystems für den Linux-Quellcode, wo sich in der Regel weitere Informationen zu den Hintergründen der jeweiligen Änderung sowie der Patch selbst findet.

Größere Umstrukturierungen gab es bei 2.6.27 am Quellcode für den Direct Rendering Manager (DRM). Durch sie soll soll sich der für 2.6.28 oder 2.6.29 geplante GPU-Memory-Manager GEM und das Kernel-based Modesetting (KMS) besser integrieren lassen. Mit 2.6.27 zum Linux-Kernel hinzugestoßen ist ferner der Treiber hso für HSDPA/HSUPA-Karten von Option sowie der Input-Treiber bcm5974 für die Touchpads im Macbook Air und Pro Penryn. Den Treiber für Intels I/OAT (I/O Acceleration Technology) erweiterten die Kernel-Hacker um Unterstützung für die I/OAT-Spezifikation 3.0. Zahlreiche Änderungen gab es auch an den Treibern für FireWire-Hardware.

Linux 2.6.27 bringt zudem bereits jetzt Unterstützung für die Audio- und Storage-Einheiten von Intels Ibex-Peak-Chipsätzen mit (1, 2, 3), obwohl diese nach derzeitigen Informationen erst im dritten Quartal 2009 zusammen mit den bislang unter den Codenamen Lynnfield und Havendale bekannten Nehalem-CPUs für Mainstream-Desktops in den Handel kommen sollen. Und auch für die ersten, in den kommenden Wochen erwarteten Core-i7- und Xeon-CPUs mit Nehalem-Kern gab es bereits einige Änderungen wie die Unterstützung bei Oprofile und coretemp.

Einige Treiber sind mit 2.6.27 allerdings auch rausgeflogen – etwa die i2c-Treiber, i2c-i810, i2c-prosavage und i2c-savage4, die andere Treiber seit Längerem ersetzen. Auch für den jetzt entfernten OSS-Treiber trident gibt es schon länger einen moderneren Treiber im Kernel. Rausgeflogen ist auch der angeschlagene ISDN-Treiber auerswald, dessen Aufgaben mittlerweile ein auf libusb aussetzender Treiber im Userspace erledigt.

Nach Jahren der Entwicklung haben die Lockless-Pagecache-Patches (1, 2, 3) inklusive der get_user_pages (1, 2, 3, 4, 5, 6) von Novell-Entwickler Nick Piggin endlich den Weg in den Hauptentwicklungszweig gefunden; die Patches beschleunigen einige Vorgänge im Speichersubsystem, was sich gerade auf großen Systemen positiv auf die Performance auswirken soll. Einige zumeist von SGI-Entwicklern eingebrachte Änderungen sollen ferner dafür sorgen, dass Linux auf Systemen mit bis zu 4096 CPUs rundläuft (1, 2).

Neu im Hauptentwicklerzweig ist das Debugging- und Test-Framework Ftrace (Function Tracer). Es unterstützt Linux- und System-Entwickler bei der Suche nach Codebereichen, in denen das System bei der Arbeit viel Zeit verbringt – diese Hot-Spots lassen sich dann gezielt optimieren, um Performance oder Reaktionsgeschwindigkeit zu steigern. Das Frontend für das ältere Sysprof (System-wide Linux Profiler) lässt sich über ein Ftrace-Plugin weiter nutzen (1, 2, 3, 4, 5). Neu bei 2.6.27 ist auch das teilweise auf Ftrace aufsetzende und von Intel- und Nouveau-Entwicklern gestartete Mmiotrace (1, 2, 3, Dokumentation), mit dem sich Memory Mapped IO (MMIO) verfolgen lässt. Das ist etwa für Debugging oder Reverse Engineering interessant – eben genau dafür hatten die Entwickler des Grafiktreibers Nouveau Mmiotrace entwickelt, um den proprietären Nvidia-Treiber für Linux bei der Arbeit besser beobachten zu können. Neu ist ferner auch die Tracing-Infrastruktur Tracehooks, auf die das seit Langem um die Aufnahme in den offiziellen Kernel buhlende Utrace in Zukunft aufsetzen soll.

Wer häufiger Kernel konfiguriert und kompiliert, wird an dem mit 2.6.27 aufgenommenen Tool Diffconfig Gefallen finden, mit dem sich zwei Kernel-Konfigurationsdateien komfortabel vergleichen lassen. Speziell für Programmierer von Userspace-Anwendungen mit mehreren Threads dürften zahlreiche von Ulrich Drepper eingebrachte Patches interessant sein. Sie rüsten neue Syscalls nach, mit denen sich einige bekannte Sicherheitsrisiken bei POSIX file descriptors umschiffen lassen. Drepper, der die Standard-C-Library Glibc verwaltet, beschreibt die Hintergründe der Änderungen sowie die geplante Nutzung in der Glibc detailliert in seinem Blog; auch LWN.net hatte sich vor Monaten schon ausführlich mit den damals noch in Planung befindlichen Patches beschäftigt.

Mit 2.6.27 wieder dabei ist die SMP-nice for group scheduling genannte Änderung am Completely Fair Scheduler (CFS) – die war ursprünglich schon für 2.6.26 vorgesehen, musste dann aber wegen Qualitätsmängeln vorübergehend wieder weichen. Der Ruhezustand lässt sich durch einige Änderungen (1, 2) nun auch über kexec ausführen – das Ganze nennen die Entwickler khibernation und soll einige Vorteile im Vergleich zur bisherigen Methode mit Software-Suspend (Swsusp) bieten, ist aber noch recht experimentell.

Die Kernel-Entwickler haben für 2.6.27 ferner zahlreiche Verbesserungen an der Virtualisierungslösung KVM aufgenommen – darunter die nicht ausschließlich, aber vorwiegend für Virtualisierungslösungen wie KVM interessanten mmu-notifiers. Neu dabei ist auch die Unterstützung für die Hypervisor-Schnittstelle paravirt_ops auf der IA64-Architektur von Intels Itanium (1, 2, 3, Dokumentaiton) sowie die zur Migration von Gästen auf andere Hostsysteme nötige Save/Restore-Unterstützung in Xen. Auch die Xen-DomU-Unterstützung für x86-64-Systeme ist erstmals dabei (1, 2, 3, 4, ) – bislang unterstützte der im Kernel seit 2.6.23 enthaltene Xen-Code nur den Betrieb eines x86-32-Linux unter einem Xen-Hypervisor.

Die Crypto-Unterstützung im Kernel beherrscht nun die Algorithmen RIPEMD-128 und RIPEMD-160 (1, 2) und arbeitet bei der Hash-Erzeugung auf Wunsch asynchron. Weiter vorangetrieben haben die Kernel-Hacker die Zusammenlegung von Quellcodedateien, die sich für x86-32- und x86-64-Systeme ähneln. Der Filter für SCSI-Kommandos lässt sich bei 2.6.27 nun pro Gerät individuell und zur Laufzeit vom Systemadministrator konfigurieren; bislang war dieser starr und erlaubte dem Anwender zwar das Ansprechen von Brennern und Co., aber eben nichts, womit Anwender potenziell Schaden hätten anrichten können.

Über die verbesserte Infrastruktur für hugetbl (Huge Tables) lassen sich nun auch die von neueren AMD-Prozessoren unterstützten Gigabyte-Pages nutzen (1, 2); damit sich parallel zu diesen auch die mittelgroßen Page-Größen noch nutzen lassen gab es einige Änderungen an der der hugetbl-Infrastruktur (1, 2, 3, 4). Neu ist ferner die Unterstützung für AMDs IOMMU (1, 2, 3, 4).

Nicht nur all die Verbesserungen und neuen Features, sondern auch einige Aufräumarbeiten und Umstrukturierungen sind indes für die zahlreichen laut diffstat während der 2.6.27-Entwicklung veränderten Zeilen Quellcode mitverantwortlich. Rausgeflogen ist etwa die seit Längerem nicht mehr gepflegte Unterstützung für die v850-Architektur. Beinahe 4 MByte groß ist zudem der Patch, der wie erwartet das Verzeichnis arch/ppc/ entfernt – um die verschiedenen derzeit unterstützten Power- und PowerPC-Architekturen kümmert sich nun ausschließlich der bereits unter arch/powerpc/ zu findende Code. Erheblich beigetragen zu den vielen neuen und entfernten Zeilen Quellcode haben auch Umstrukturierungen beim MIPS-Code sowie zahlreiche Patches, die die Include-Dateien für einige der unterstützen Architekturen im Quellcode-Baum umherschieben (siehe etwa Commits für ARM, IA64, Power oder Sparc). Mit aktivierter Rename-Detection in Git zeigt diffstat daher etwas weniger Änderungen an.