Die Neuerungen von Linux 2.6.21
Zu den wesentlichen Änderungen des neuen Linux zählen ein renoviertes Zeitmanagement, Verbesserungen an KVM, die VMWare-eigene Virtualisierungstechnik VMI, ALSA System on Chip (ASoC) sowie größere Überarbeitungen am ACPI-Subsystem.
- Thorsten Leemhuis
Die Integration des High Resolution Timers zählt wohl zu den größten Neuerungen der heute nach rund elf Wochen Entwicklungszeit von Linus Torvalds freigegebenen Linux-Version 2.6.21. Doch auch rund um das Dauertrendthema Virtualisierung gab es wieder einmal Erweiterungen; dazu zählen zahlreiche Verbesserungen an KVM (Kernel-based Virtual Machines) sowie die Aufnahme das Virtual Machine Interface (VMI) von VMware. Allerlei Renovierungsarbeiten gab es mit 2.6.21 im ACPI-Subsystem. Zu den wesentlichsten Neuerungen im Treiber-Bereich dürfte das für den Embedded-Bereich interessante ALSA System on Chip (ASoC) zählen – aber wie mit jedem neuen Kernel gab es an den Treibern und anderen Ecken von Linux größere und kleinere Änderungen, über die der folgende Artikel einen groben Überblick bietet.
Tickless
| Linux in Zahlen | |||
|---|---|---|---|
| Linux- Version | Entwicklungs- zeitraum | Diffstat | |
| 2.6.18 | 94 Tage | 8972 files changed, 381890 insertions(+), 217058 deletions(-) | |
| 2.6.19 | 71 Tage | 8040 files changed, 515161 insertions(+), 291784 deletions(-) | |
| 2.6.20 | 66 Tage | 5825 files changed, 262475 insertions(+), 136162 deletions(-) | |
| 2.6.21 | 80 Tage | 6568 files changed, 319232 insertions(+), 175247 deletions(-) | |
Huckepack bringt der High Resolution Timer die Dynamic Ticks mit. Der Kernel kann durch diese Erweiterungen auf modernen Systemen den Timer-Interrupt auf den Zeitpunkt der nächsten absehbaren Aufgabe programmieren. So kann der Prozessor bei einem ansonsten untätigen System in Ruhe bis zum nächsten Einsatz ausspannen und bis zur nächsten Aufgabe oder dem Auftreten eines IRQs in den Stromsparmodus wechseln – bisher musste die CPU zur Abarbeitung des stetig tickenden Timer-IRQs je nach Kernel-Konfiguration Hundert bis Tausend Mal pro Sekunde unnütz aufwachen.
Komplett ist der High Resolution Timer aber noch nicht: Das Programmieren des Timer-Interrupts funktioniert bisher nur auf x86-PCs – Unterstützung für x64 steht jedoch schon für 2.6.22 bereit. Zudem soll der Timer-Interrupt möglicherweise in Zukunft nicht nur bei unbelasteten Systemen, sondern dauerhaft ausgeschaltet werden können; das soll etwa den IRQ-Overhead beim Einsatz von Linux als Gast unter Virtualisierungsumgebungen vermindern.
Virtuell
Nach der Aufnahme der generischen Schnittstelle für verschiedene Virtualisierungslösungen paravirt_ops in Linux 2.6.20 bringt der neue Kernel nun die darauf aufbauende Unterstützung der VMware-Lösung Virtual Machine Interface (VMI) mit. Das noch in der Beta-Phase befindende VMware Workstation 6 beherrscht VMI als Gastgeber. Ein VMI-Gastsystem kann unter der neuen Workstation-Version teilweise Paravirtualisierung nutzen; das verspricht mehr Performance als ein Gastsystemen, das in einer komplett emulierten Umgebung läuft.
Einen Geschwindigkeitsgewinn versprechen auch die ersten in 2.6.21 aufgenommen Teile einer Infrastruktur für den Einsatz von Paravirtualisierung mit KVM – KVM war ebenfalls mit Linux 2.6.20 zum Kernel hinzugestoßen, ist aber anders als viele andere Virtualisierungslösungen auf Prozessoren mit Virtualisierungsfunkionen angewiesen. Ferner gab es Änderungen am KVM-Userinterface; hinzu kam Unterstützung von Gastsystem-Migration zwischen unterschiedlichen Rechnern im laufenden Betrieb. Auf dem KVM-Hostsystem gelingt nun auch Suspend und Gastsysteme lassen sich in SMP-Systemen nachträglich CPUs zuweisen oder abknöpfen. Der führende KVM-Entwickler musste sich jedoch einige recht harsche Worte vom Linux-Vater gefallen lassen, da er die Neuerungen erst verhältnismäßig spät im Entwicklungszyklus zur Integration eingebracht hat.
ACPI
Auch am ACPI-Subsystem gab es größere Überarbeitungen. So wurde der ACPI Table Manager komplett renoviert und dabei vereinfacht; er soll nun nicht nur zuverlässiger als zuvor arbeiten, sondern auch weniger Speicher verbrauchen. Zudem startet der ACPI-Code für 2.6.21 nun den seit langem geplanten Übergang auf das Linux Driver Model – viele der bisher über den ACPI-spezifischen /proc/acpi-Baum liegenden Daten sollten daher zukünftig im allgemeinen Device-Baum im Sysfs unter /sys zu finden sein. Abgeschlossen ist diese Arbeit jedoch noch nicht.
Das neue und erst einmal als experimentell gekennzeichnete ACPI-Modul bay unterstützt Geräte in Laufwerksschächten wie IBMs Ultrabay oder Dells Module Bay und beherrscht auch Hot Plug. Der erstmals aufgenommene Treiber asus-laptop für Asus-Notebooks soll langfristig das bisher eng mit ACPI verknüpfte Modul asus_acpi ablösen. Für Sony-Notebooks gibt es nun Unterstützung durch das Modul sony-laptop, das sony_acpi langfristig ersetzen soll. Entfernt wurde ACPI-Motherboard-Driver – dessen Funktion übernimmt dieser Tage das PnP-Subsystem. Auch der Hotkey-Treiber wurde wie geplant rausgeworfen, da sich nun spezifische Treiber um diese Funktion kümmern sollen. Der Backlight-Treiber, der etwa das Ausschalten der Hintergrundbeleuchtung bei einigen Notebook-Displays ermöglicht, wurde stark überarbeitet.
Die bislang erwähnten Neuerungen sind jedoch nur die größten Rosinen unter den rund 5000 verschiedenen Patches, die in 2.6.21 Einzug fanden.
Weiter: Infrastruktur, Treiber, Ausblick auf 2.6.22
Die Neuerungen von Linux 2.6.21
Infrastruktur
Dem Kernel lässt sich dank zahlreicher Änderungen der "Dynamic kernel command-line"-Serie nun eine längere Parameter-Zeichenfolge beim Start übergeben – bisher durfte sie nicht länger als 256 Byte sein. Für das in 2.6.19 aufgenommene eCryptfs kam das bisher ausgesparte Public-Key-Framework hinzu. Nachdem sich Linux-Software-RAIDs des Levels 5 seit einiger Zeit im laufenden Betrieb vergrößern lassen, gelingt das mit 2.6.21 nun auch bei RAID 6.
Sysfs beherrscht nun Shadow-Directory-Support, was für Virtualisierungslösungen mit Containern/Jails Vorteile bieten soll. Erstmals enthalten ist das Device Resource Management (devres); es soll die Treiber-Programmierung zum Zugriff auf Hardware-Ressourcen vereinfachen und vereinheitlichen. Gleichzeitig verspricht es zuverlässiger zu sein als die bisher meist Treiber-spezifischen Implementierungen. Der für DMA mit ISA-Geräten wichtige Speicherbereich ZONE_DMA ist nun optional – das soll Optimierungen auf auf Architekturen, die diesen Speicherbereich nicht benötigen, möglich machen. IPv4 lässt sich über IPv6 genauso tunneln wie anders herum.
Andere Neuerungen von 2.6.21 verbessern die mit 2.6.20 hinzugestoßene Unterstützung für die Cell-CPU und die USB-Controller der Playstation 3 – ferner kam der Framebuffer-Treiber für die PS3 hinzu, einige andere PS3-spezifische Treiber fehlen jedoch weiterhin. Erstmals kennt 2.6.21 die Celleb-Architektur der Cell-Blades von Toshiba.
Treiber
Zahlreiche Netzwerk-Treiber wie e1000, sky2 wurden aktualisiert; neu dabei sind unter anderem das Modul atl1 für verschiedene, unter anderem auf einigen neueren Mainboards gelegentlich zu findende Netzwerk-Chips von Attansic. Rausfliegen aus dem Kernel soll hingegen bald der durch sky2 und skge ersetzter Treiber sk98lin.
| Auswahl wichtiger Änderungen bei Netzwerk-Treibern | ||
|---|---|---|
| Treiber | Zuständig für | Kurze Beschreibung wichtiger Änderungen |
| atl1 | Attansic 1000M Ethernet Network Driver | Erstmals enthalten |
| cxgb3 | Chelsio Communications T3 10Gb Ethernet | Erstmals enthalten |
| dm9601 | Davicom DM9601 USB Ethernet | Erstmals enthalten |
| e1000 | Intel(R) PRO/1000 Network Driver | Version 7.3.20-k2 |
| qla3xxx | QLogic ISP3XXX Network Driver | Unterstützung des Qlogic 4032 |
| gigaset | Driver for Gigaset 307x | Unterstützung von M101 |
| sc92031 | Silan SC92031 PCI Fast Ethernet Adapter driver | Erstmals enthalten |
| sk98lin | Marvell Yukon Gigabit Ethernet driver | Rausschmiss geplant |
| skge | SysKonnect Gigabit Ethernet driver | Version 1.10 |
| sky2 | Marvell Yukon 2 Gigabit Ethernet driver | Version 1.14 |
Im libata-Subsystem arbeiteten die Entwickler an der ACPI-Unterstützung – das soll den Suspend-/Resume-Support generell wie auch beim Einsatz von Festplatten-Passwörtern verbessern. Aufgrund von größeren Problemen wurde die Unterstützung jedoch teilweise wieder deaktiviert und soll erst mit 2.6.22 richtig zum Einsatz kommen. Zahlreiche ATA-Treiber erfuhren Überarbeitungen und Verbesserungen, darunter Unterstützung für die 966-Southbridges von SiS sowie ein neuer Treiber für den it8213 von ITE. Das Audio-Framework wurden auf die Alsa-Version 1.0.14-rc3 aktualisiert und bringt neben zahlreichen Workarounds für Notebook-Audio-Chips und Unterstützung für die HDA-Codec-Chips von Connexant das für Embedded-Umgebungen interessante ALSA System on Chip (ASoC) mit. Im V4L/DVB-Subsystem wurde das SN9C102-Modul stark überarbeitet und der BTTV-Treiber beherrscht nun cropping; hinzu kamen Treiber für Sigmateks DVB-110 DVB-T oder MSI Mega Sky 580 DVB-T sowie zahlreiche andere DVB-Peripherie. Blackberry-Geräte lassen sich nun über USB automatisch aufladen. Ferner gab es einen neuen Cpufreq-Treiber für VIAs Prozessoren mit der Takt- und Spannungsanpassungstechnik Longhaul.
Ausblick
In den nächsten zwei Wochen nehmen die Entwickler die größten Neuerungen für 2.6.22 auf, um nach der dann anstehenden Veröffentlichung von 2.6.22-rc1 in die rund sechs- bis achtwöchige Stabilisierungsphase überzugehen. An Neuerungen steht für 2.6.22 schon wieder einiges in Wartestellung und dürfte sich zu großen Teilen bereits im von Andrew Morton gepflegten mm-Entwicklerkernel finden.
Darunter befindet sich der von Devicescape in mac80211 umbenannte neue WLAN-Stack, der Huckepack eine Reihe neuer und aktualisierter WLAN-Treiber mitbringt. Das dürfte die Unterstützung für WLAN-Hardware unter Linux deutlich verbessern – ein Grund, warum die in den nächsten Wochen erwarteten neuen Distributionen Ubuntu 7.04 und Fedora den neuen Stack bereits mitbringen wollen. Ob der neue WLAN-Stack es aber schon in 2.6.22, schafft ist noch nicht absehbar.
Die um die Integration buhlenden Virtualisierungstechniken Xen und lguest schafften die Aufnahme in 2.6.21 nicht, haben aber beide wohl gute Chancen, den Sprung in 2.6.22 zu schaffen. Wie es mit dem im mm-Kernel schon lange enthaltenen Reiser4 weitergeht, bleibt ungewiss – ein Reiser4-Fanboy versuchte auf der LKML die Entwickler zur Aufnahme des Dateisystems zu bewegen, stieß mit seiner Art jedoch wie schon einige seiner Vorgänger auf wenig Gegenliebe.
Diskutiert wurde in den vergangenen Wochen auf der Linux Kernel Mailing List (LKML) viel über den Umstieg auf einen neuen Prozess-Scheduler. Zwischendurch sah es sogar so aus, als solle schon die nächste Kernel-Version auf den im wesentlichen von Con Kolivas vorangetriebenen und mittlerweile in "Staircase deadline scheduler" umbenannten RSDL-Scheduler setzen – er soll einfacher gehalten sein und Systemzeit fairer an die laufenden Prozesse verteilen. Bei Tests wurden jedoch einige Settings gefunden, wo der RSDL deutlich schlechter als der aktuelle Scheduler arbeiten soll.
Wenig später stellte dann Ingo Molnar, Entwickler des derzeitigen O(1)-Schedulers, mit dem Modular Scheduler Core and Completely Fair Scheduler (CFS) einen genau wie RSDL von Grund auf neu entwickelten Scheduler vor, der unter anderem Ideen von RSDL übernimmt. CFS und RSDL sind derzeit wohl die prominentesten und am meisten diskutierten Scheduler – es gibt aber noch andere, die in den vergangenen Monaten von verschiedenen Programmierern entwickelt wurden. Den derzeitigen Scheduler dürfte aber nur einer beerben, da sich Torvalds und einige andere Entwickler gegen die Aufnahme mehrere Prozess-Scheduler ausgesprochen haben. Welcher letztendlich das Rennen macht, dürfte sich in den nächsten Wochen während der Entwicklung der Kernel-Revisionen 2.6.22 und 2.6.23 zeigen.
Linux 2.6.21 steht ab sofort über kernel.org zum Download bereit; etwa bzip2 komprimiert als Patch gegen die Vorgänger oder als komplettes Archiv. Bald dürften dann auch die deutschen Spiegelserver nachziehen und den Patch oder das komplette Archiv bereithalten.
Sämtliche Änderungen listet das detaillierte Changelog auf – die wichtigen fasst zudem das Kernelnewbies-Wiki ausführlich zusammen. Es bietet auch einige weiterführende Links zu den jeweils relevanten Änderungen in Quellcode-Verwaltungssystem des Kernels sowie teilweise auch zu detaillierten Beschreibungen der betroffenen Techniken. (thl/c't) (thl)