Die Neuerungen von Linux 2.6.23

Dank eines neuen Scheduler soll Linux 2.6.23 flotter und fairer agieren als seine Ahnen und bringt neben den Virtualisierungstechniken Xen und Lguest zudem haufenweise frische Treiber sowie Optimierungen unter der Oberfläche mit.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 20 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Trotz Ferienzeit und der jährlichen Konferenz wichtiger Kernel-Entwickler haben Torvalds und seine Mannen in den vergangenen dreizehn Wochen wieder eine Linux-Version mit reichlich größeren und kleineren Neuerungen fertig gestellt. Die erstmals enthaltenen Virtualisierungstechniken Xen und Lguest sowie der frisch entwickelte Scheduler dürften die von Linux-Fans wohl am meisten beachteten Änderungen zur Vorversion sein. Die überarbeiteten oder neu hinzu gestoßenen Treiber – etwa der erste auf dem mit 2.6.22 eingeführten WLAN-Stack basierende Treiber für Realtek-USB-WLAN-Hardware – und zahlreiche Verbesserungen an der Infrastruktur dürften aber mindestens von ebenso großer Bedeutung sein.

Linux in Zahlen
Linux-
Version
Entwicklungs-
zeitraum
Anzahl
Patches
Diffstat
2.6.1894 Tage63238972 files changed, 381890
insertions(+), 217058 deletions(-)
2.6.1971 Tage66858040 files changed, 515161
insertions(+), 291784 deletions(-)
2.6.2066 Tage47685825 files changed, 262475
insertions(+), 136162 deletions(-)
2.6.2180 Tage50166568 files changed, 319232
insertions(+), 175247 deletions(-)
2.6.2274 Tage65267620 files changed, 519591
insertions(+), 266699 deletions(-)
2.6.2393 Tage66627203 files changed, 406268
insertions(+), 339071 deletions(-)

Nach den zahlreichen im ersten Halbjahr dieses Jahres geführten Diskussionen um "den besten neuen Prozess-Scheduler für Linux" machte Torvalds direkt nach der Veröffentlichung von 2.6.22 seinen Standpunkt klar und nahm den Completely Fair Scheduler (CFS) in den Entwicklerzweig von 2.6.23 auf. Er regelt zukünftig, wann und wie oft ein Programm Prozessorzeit bekommt.

CFS stammt von Red-Hat-Mitarbeiter Ingo Molnar, der bereits den alten, während der Linux-2.5-Entwicklung integrierten O(1)-Scheduler programmiert hatte, der nun CFS weichen musste. Im Unterschied zu seinem Vorgänger verfolgt CFS einen strikt "fairen" Ansatz: zwei mit der gleichen Priorität um den Prozessor konkurrierende Prozesse sollten jeweils 50 Prozent der zur Verfügung stehenden CPU-Zeit bekommen. Mit diesem Ansatz reagieren manche Systeme laut Angaben von Testern bei der Benutzung einiges flotter als mit dem alten Scheduler. Mit dem konnte es durchaus passieren, dass ein im Hintergrund arbeitender Prozess viel Prozessorzeit bekam und so den X-Server oder die Desktop-Oberfläche erst nach einer kleinen Verzögerung zum Zuge kommen ließ – in Folge dessen fühlte sich das System zäh an.

Das Konzept des strikt fairen Ansatzes stammt vom lange vor CFS entwickelten Staircase-CPU-Scheduler – dessen Programmierer Con Kolivas wird auch in den Credits von CFS auch für die Idee gewürdigt. Als sich jedoch abzeichnete, dass nicht Kolivas Scheduler, sondern CFS das Rennen machen würde, zeigte sich Kolivas tief enttäuscht. Da es auch einige andere seiner Ideen für Linux nicht in den offiziellen Kernel geschafft haben, hat er sich mittlerweile von der Mitarbeit am Linux-Kernel öffentlichkeitswirksam zurückgezogen und auch seine CK-Kernel-Serie eingestellt.

Einige Fans seines Scheduler beklagten die Entscheidung für CFS und das Vorgehen der Kernel-Entwickler – Torvalds verteidigte seine Entscheidung in verschiedenen Mails detailliert. Das ganze ähnelte fast den Diskussionen um das Reiser4-Dateisystem, wo ebenfalls einige zuvor auf der Linux Kernel Mailinglist nie gesehene Reiser4-Fans auftauchten und kritisieren, dass die Kernel-Entwickler nicht die von Ihnen bevorzugte Technik integrieren.

Abgeschlossen ist die CFS-Entwicklung wohl noch lange nicht – noch nach der Vorstellung von 2.6.23-rc1 zogen zahlreiche Korrekturen und kleinere Verbesserungen in den Entwicklerzweig ein, aus dem nun 2.6.23 hervorging. Für 2.6.24 stehen schon wieder weitere Patches bereit, die unter anderem den Overhead des Scheduler reduzieren sollen, um die Performance zu steigern. Mit dem Really Fair Scheduler oder DeskOpt 005 (completely unfair scheduling ;) ) tauchten weitere Scheduler-Ideen auf, die wohl auch die weitere CFS-Entwicklung beeinflussen dürften.

Auch Xen hat endlich den Sprung in den offiziellen Linux-Kernel geschafft – zweieinhalb Jahre später, als es sich die Xen-Entwickler ursprünglich erhofft hatten. Bevor die Kernel-Entwickler zu diesem Schritt bereit waren, mussten die Xen-Entwickler aber ihre Virtualisierungsumgebung massiv abspecken. So ermöglicht der nun integrierte Code nur das Übersetzen eines DomU-Kernels, der in einem unprivilegierten Gastsystem unter Kontrolle des Xen-Hypervisors und eines Dom0-Kernels arbeitet. Um eben diese beiden Gastgeber-Teile zu erstellen, sind nach wie vor die Xen-Quellen und spezielle Kernel-Patches erforderlich.

Neben Xen integrierten die Entwickler auch Lguest, mit dem sich Linux-Kernel unter einem anderem paravirtualisiert betreiben lassen. Der Mini-Hypervisor war im Rahmen der paravit_ops-Programmierung eigentlich zu Testzwecken entwickelt worden, der Ansatz fand jedoch schnell Anklang. Der Verwalter des Hypervisors will die Code-Basis jedoch auch in Zukunft klein und einfach halten. Einige Entwickler arbeiten jedoch bereits daran, Ideen und Teile von lguest als KVM-Lite in die mit 2.6.20 aufgenommenen Virtualisierungslösung KVM (Kernel-based Virtual Machine) zu integrierten. Sie ist bisher auf Prozessoren mit Virtualisierungsfunktionen angewiesen ist und nutzt Paravirtualisierung nur in einigen wenigen Bereichen zur Performance-Steigerung. Auch an KVM selbst wurde geschraubt, das Gastsystemen nun auf Wunsch mehrere virtuelle Prozessoren bereitstellt. KVM ist zudem nicht mehr auf PAE angewiesen.

[Weiter: Userspace-Treiber, Suspend]

Ferner lässt sich PAE nun unabhängig von HIGHMEM64G aktiveren – etwa um den No-Execute-Speicherschutz ("NX-Bit") nutzen zu können, ohne das in 32-Bit-x86-Kerneln Overhead zur Verwaltung von mehr 4 GByte Arbeitsspeicher entsteht. Die Entwickler integrierten ferner Unterstützung für die K10-Architektur der kürzlich vorgestellten Quad-Code-Prozessoren von AMD.

Der in Assembler geschriebene Code zur Initialisierung von x86- und x86_64-Systemen wurde mit 2.6.23 durch C-Code ersetzt. Der soll einfacher wartbar sein als der bisherige Assembler-Code – auf exotischen Konfigurationen oder Hardware-Komponenten dürfte sich mit dem neuen Code aber möglicherweise noch der ein oder andere Bug zeigen. So gibt es ein bekanntes Problem mit Grub vor 0.93 – so alte Grub-Versionen dürfte aber nur noch eher älteren Linux-Distributionen beiliegen, denen auch andere für aktuelle Kernel nötige Dinge fehlen.

Ebenfalls erstmals enthalten ist UIO (Userspace-I/O, ehemals Industrial-I/O) – ein Framework für Treiber, bei dem der Kernel einen Teil der Hardware-Ansteuerung einem im Userspace arbeitenden Programm überträgt. Da der Kernel diese Schnittstelle explizit für normale Software freigibt, müsste der Userspace-Teil laut UIO-Dokumentation genau wie andere unter Linux laufenden Software nicht unter unter einer GPL2-kompatiblen Lizenz stehen. Ganz so einfach soll das ganze laut Alan Cox jedoch nicht sein.

In erster Linie sollen UIO-Treiber wohl proprietäre Treiber aus dem Embedded-Bereich ersetzen, die deren Entwickler häufig weder offenlegen noch über mehrere Kernel-Versionen hinweg pflegen. DMA-Transfer ermöglicht UIO bislang nicht; es eignet sich daher nicht, um große Datenmengen schnell mit dem Kernel auszutauschen, und ist so für Grafik- oder Storage-Treiber untauglich. Die Probleme mit proprietären Treibern für Grafikkarten wird UIO also erst einmal nicht lösen können.

Ferner wurden die "On-demand readahead" Patches aufgenommen. Sie ersetzen den bisher für das spekulative vorausschauende Lesen nötigen Code, sollen aber einfacher im Aufbau und flexibler für Verbesserungen sein. Derzeit bietet der neue Code in ungefähr die gleiche Performance wie der alte; zukünftige Erweiterungen sollen einen Performance-Vorteil bieten. Mehr Geschwindigkeit und bessere Platzierung der Dateien auf dem Datenträger sollen Verbesserungen an XFS und Ext4 bringen – letzteres bleibt aber weiterhin als experimentelles Dateisystem gekennzeichnet und dürfte vor der Fertigstellung noch zahlreiche weitere Änderungen über sich ergehen lassen müssen.

Dank USB-Persist sollen die Treiber jetzt auch nach einem Ruhezustand ein USB-Gerät weiter ansprechen, als sei nichts gewesen – wichtig für ins Dateisystem eingehängte USB-Datenträger, die sich durch die vorübergehende Stromunterbrechung sonst verwirren lassen. Der Ansatz von USB-Persist ist unter den Entwicklern aber umstritten; das Feature ist daher als experimentell gekennzeichnet und der Informationstext in der Kernel-Konfiguration warnt explizit über die möglichen Gefahren der Technik.

Bleibt das Display beim Aufwachen aus dem Suspend-to-RAM (ACPI S3) dunkel, kann der Kernel zukünftig die Fehlersuche erleichtern und durch einen Piepton deutlich machen, dass er aus dem Schlafmodus vom System wieder erweckt wurde. Ferner gab es – wieder einmal – einige interne Umstrukturierungen im Standby- und Hibernate-Handling. Beim Mounten einen CIFS-Dateisystems lassen sich die Unix Extensions nun deaktivieren – etwa wenn die lokalen Gruppen- und Benutzer-IDs nicht mit denen auf dem Server übereinstimmen.

Wenn der Kernel einen Fehler ("OOPS") feststellt, markiert er sich in Zukunft selbst als tainted – jeder Fehler kann Seiteneffekte nach sich ziehen, die im Kontext dieses Fehlers nicht mehr zu debuggen sind. Der mit 2.6.22 eingeführte SLUB-Allocator ist nun der Standard-Memory-Allocator. Dank der im Rahmen der "Memory fragmentation avoidance patches" eingezogenen Veränderungen kann der Kernel nun manche Speicherblöcke im Arbeitsspeicher verschieben und so auch nach längerem Betrieb wieder größere zusammenhängende freie Speicherbereiche schaffen.

Ein Dokument im Kernel-Tree erklärt nun explizit, wie Programme über das Sysfs am besten Informationen abgreifen, ohne aufgrund von Änderungen mit zukünftigen Kernel-Versionen in Probleme zu laufen. Im Chaos um die Bezeichnungen für 32- und 64-Bit-Architekturen mit x86-Befehlssatz bezeichnen die Entwickler die vormals als IA-32 geführte 32-Bit-x86-Architektur nun x86-32 – die mit 64-Bit-x86-Ausfürhungen AMD64 und IA32e/EM64T laufen weiterhin als x86-64. Erstmals direkt im Kernel enthalten sind auch japanische und chinesische Übersetzungen einiger grundlegender Dokumente der Kernel-Dokumentation. Die Kernel-Ausgaben selbst oder sich häufiger ändernde Dokumentation sollen hingegen nicht übersetzt werden, da diese sich laut zahlreichen Entwickler nur schwer würde aktuell halten lassen.

Nicht nur anhand der PCI-IDs, sondern auch mit Hilfe der DMI-Informationen kann der Kernel in Zukunft zusammen mit Udev die für das jeweilige System zuständigen Module anfordern. Dadurch sollen dann etwa Notebook-spezifische Treiber wie asus-laptop oder thinkpad_acpi auf den von ihnen unterstützten Geräten automatisch laden.

Neben all diesen Änderungen an der Infrastruktur gab es zahlreiche weitere bei den Treibern; für 2.6.24 stehen zudem schon wieder zahlreiche neue Patches bereit – darunter eine massive Unordnung im Sourcecode für die x86- und x86-64-Architektur. [Weiter: Treiber, 2.6.24 und danach]

Treiber
Geeignet für
Neuerungen/Neu unterstützte Hardware
Storage-Hardware
3w-9xxx3Ware Hostadapter3Ware 9690SA
ahci
SATA-Hostadapter verschiedener Hersteller
Marvell 6145
areca
Areca HostadapterZahlreiche Korrekturen, die die Zuverlässigkeit verbesseren sollen
iop-admaIntel IOP Series RAID enginesErstmals enthalten
pata_marvell
Marvell-PATA-ChipsMarvell 6145
qla2xxx Qlogic-Hostadapter
ISP25XX
sata_mv
Marvell-SATA-Chips
Hightpoint RocketRaid 1740/1742
sata_promiseSATA- und PATA-Hostadpater von Promise
SATA Hotplug
Netzwerk
ax88796Asix AX88796 network controllerErstmals enthalten
forcedeth Nvidia-Chipsätze
Nvidia MCP73
phylib Library für verschiedene PHY-Bausteien
88E1112 phy
r8169 Realtek-Gigabyit-Chips
Verbesserungen aus den von Realtek gewarteten Treibern (1, 2)
sky2
Marvell-Gigabit-Chips
Marvell Yukon Extreme/ 88e8071
zd1211rw WLAN-Hardware mit ZyDAS ZD1211
Siemens Gigaset USB Stick 54 und weitere
Audio
snd-hda-intel
HDA-Soundtreiber für Chipsätze verschiedener Hersteller
zahlreiche Workarounds für verschiedene Mainboards und Noteooks (unter anderem für Thinkpad X61/T61); Unterstützung für neuere Intel iMacs, Analog Devices AD1882 und AD1884 / AD1984 sowie Realtek ALC268 und Nvidia MCP73/77
Framebuffer
lxfbAMD Geode LX Ersmals enthalten
nvidiafbNvidia-Grafikkerne
Unterstützung für GeForce 7600
radeonfb
Radeon-Grafikkerne von AMD/ATI
Add support for Radeon Xpress 200M
Hardware Monitoring/Super I/O
abituguru3 Abit uGuru-ChipsUnterstützung für neuere Chips
dme1737 SMSC DME1737, Asus A8000Erstmals enthalten
lm93
National Semiconductor LM93Erstmals enthalten
Verschiedenes
fujitsu_tsFujitsu serial touchscreens
Erstmals enthalten
longhaul
Cpufreq-Treiber für VIA-CPus
Verschiedene Verbesserungen
sony-laptop Sony-Notebooks
Fn-tasten auf Vario-C-Serie
xpad
Gamepads verschiedener Hersteller Xbox 360 gamepad

Mit dem Modul rtl8187 für Realtek-USB-WLAN-Chips integrierten die Entwickler den ersten WLAN-Treiber, der auf dem mit 2.6.22 eingeführten WLAN-Stack Mac80211 aufsetzt. An letzterem gab es einige kleinere Verbesserungen. So wie es aussieht, wollen die Entwickler für 2.6.24 zahlreiche weitere, von den aktuellen Distributionen teilweise schon ausgelieferte Mac80211-Treiber in den offiziellen Kernel aufnehmen; darunter iwl3945 (Intel IPW3945), iwl4965 (Intel IPW4965), p54 (Intersil Prism54), rt2x00 (Ralink WLAN-Hardware) und b43 (Broadcom WLAN-Chips) .

Im Netzwerk-Subsystem stieß mit macvlan ein neuer Treiber hinzu, mit dem sich virtuelle Netzwerkgeräte mit eigenen Mac-Adressen erzeugen lassen.

Die Audio-Treiber und das sie umgebende Subsystem sind jetzt auf einem Stand irgendwo zwischen den Alsa-Versionen 1.0.14 und 1.0.15rc1 – wie mit praktisch jeder Kernel-Version kamen mit den neuen Alsa-Treibern zahlreiche Workarounds für einzelne, nicht vollständig Standard-konforme Notebooks und Mainboards hinzu oder werden auf ihnen nun, sofern nötig, automatisch aktiviert.

Neu dabei ist der Treiber dvb-usb-af9005 für DVB-T-USB-Stricks wie die erste Revision der Cinergy T USB XE von Terratec. Im Vergleich zu 2.6.22 sind auch die PATA-Treiber für AMDs SB700 und Intels ICH8M erstmals enthalten – die fanden aber zwischenzeitlich auch den Weg in die Stable-Kernel 2.6.22.x, sodass deren Anwender diesmal schon in den Genuss besserer Hardware-Unterstützung kamen, bevor der neue Kernel fertiggestellt wurde.

Nachdem der Kernel bereits seit Version 2.6.20 Unterstützung für die Cell-Architektur der Playstation 3 (SP3) mitbringt, enthält Linux 2.6.23 nun auch endlich alle wichtigen Treiber für die die Sound- und Netzwerk-Chips sowie die BD/DVD-, Flash- und die Festplatten-Controller der Spielkonsole. Zudem beherrscht Linux auf der PS3 nun auch von Haus aus kexec und die seit Firmware 1.80 verfügbaren HDMI-RGB-Full-Range-Ausgabe. Im libata-Subsystem gab es einige Verbesserungen an den Treibern und erste Teile der Unterstützung für SATA-Port-Multiplier stießen hinzu. Das libsas-Framework für Serial Attached SCSI spricht nun auch SATA-Platten mit und ohne NCQ an.

Während Hardware-Hersteller ihre Windows-Treiber meist kaum mehr groß verbessern, wenn die Hardware vom Markt verschwindet, muss man Vergleichbares unter Linux nicht fürchten – das zeigt unter anderem das mit Linux 2.6.16 aufgenommene EDAC-Framework (Error Detection And Correction), das nun auch einen Treiber für den legendären BX-Chipsatz mitbringt. Letzterer war rund um die Jahrtausendwende lange Jahre auf vielen Desktop-Mainboards für Pentium 2 oder 3 zu finden – mittlerweile kommt er allenfalls noch bei Industrie- oder Embedded-Systemen zum Einsatz. Auch für neuere Intel-Chipsätze wie den 975X bringt 2.6.23 erstmals EDAC-Treiber mit.

Rausgeschmissen aus dem Kernel wurden zahlreiche der teilweise schon länger nicht mehr funktionierenden Treiber für separate oder auf Soundkarten integrierten Storage-Controller aus der Anfangszeit der CD-ROM-Laufwerke. Auch einige durch Alsa-Treiber abgelöste Audio-Treiber wurden wie geplant entfernt – darunter etwa auch der emu10k1-Treiber für Creatives SoundBlaster der Live-Serie. Die Treiber warnen allerdings bereits seit 2.6.20 nicht mehr ohne Tricks zu aktivieren.

Den Raw-Treiber zum Zugriff auf Datenträger unter Umgehung des Kernel-Caches wollen die Entwickler hingegen nicht mehr tilgen – eine Emulationsschicht stellt das alte Raw-Interface für Anwendungen weiter bereit und nutzt den für diesen Zweck mittlerweile vorgesehenen Device-Zugriff mittels O_DIRECT. Ferner tilgten die Entwickler die ACPI-Unterstützung aus speedstep-centrino – er ist zukünftig nur noch für ältere Speedstep-Implementation zuständig, während sich acpi-cpufreq um neuere Systeme kümmert. Entfernt wurde zwischenzeitlich auch der Netzwerktreiber sk98lin, da mit skge und sky2 bereits seit längerem zwei Alternativ-Treiber bereitstehen – kurz vor Toresschluss nahmen die Entwickler sk98lin jedoch erneut auf, da wohl manche Hardware mit den neueren Treiber nicht zuverlässig arbeitet.

Nach der Veröffentlichung von 2.6.23 beginnt nun die zirka zwei Wochen lange Phase, in der Torvalds und seine Mitstreiter die größten Änderungen für die nächste Kernel-Version aufnehmen; darauf folgt bis zur Veröffentlichung von 2.6.24 der normalerweise zirka acht Wochen dauernde Abschnitt, in dem sich die Entwickler auf die Beseitigung von Fehlern konzentrieren.

Zahlreiche Programmierer haben bereits Patches vorbereitet, die sie in 2.6.24 gerne integriert sehen. Viele davon sind bereits zu Testzwecken in der mm-Entwicklerkerneln von Andrew Morton enthalten oder auf dem Radarschirm des seit einigen Wochen gepflegten Linux Weather Forecast der Linux-Foundation verzeichnet.

Erneut hoffen die x86-64-Portierung der High Resolution Timer und die darauf aufsetzenden Dynamic Ticks auf die Integration in den Kernel, nachdem diese Erweiterungen für 2.6.23 noch ausgespart wurden. Ebenso erging es dem unter anderem mit Red Hat Enterprise Linux 5 ausgelieferten Utrace, dessen Entwickler nun ebenfalls auf die Aufnahme im nächsten Linux-Entwicklungszyklus hoffen – der Wetterbericht der Linux-Foundation prognostiziert Utrace aber mittlerweile erst für 2.6.25.

Auch nach der Aufnahme von Lguest und Xen dürfte es bei den Virtualisierungstechniken weitere Neuerungen geben, die nun aber eher evolutionär als revolutionär ausfallen dürften. Mit den Xen-Teilen, die nicht in 2.6.23 aufgenommen wurden, Lguest64, der x86-64-Varianten von Lguest, und KVM-Lite, einem Lguest-Ableger, ist noch genug Code in Umlauf, der früher oder später in den Kernel einziehen dürfte. Ferner basteln auch die Entwickler der chroot-Umgebungen nutzenden Container-Virtualisierungslösungen Linux-VServer und OpenVZ an einer gemeinsamen Basis für ihre Techniken im Kernel – Teile davon ziehen aber nach und nach eher unbemerkt in den offiziellen Kernel ein.

Vom Linux-Vater und vielen anderen wohlwollend empfangen wurde hingegen der Ansatz, die Kernel-internen Architektur-Verzeichnisse für die i386- und x86-64-Portierungen zu vereinen. Das Umherschieben und anschließende Zusammenlegen der zahlreichen Zeilen Quellcode dürfte jedoch nicht ganz einfach sein und wohl nicht ganz ohne Kollateralschaden vonstatten gehen – am Ende erhoffen sich die Entwickler aber einfacher wartbaren Code. Der Verwalter der x86-Architektur ist davon allerdings nicht überzeugt und sprach sich gegen die Zusammenlegung aus – Torvalds deutete allerdings an, seine Einwände übergehen zu wollen. (thl/c't)


Linux 2.6.23 steht ab sofort über kernel.org zum Download bereit; etwa bzip2 komprimiert als Patch gegen 2.6.22 oder als komplettes Archiv. Bald dürften dann auch die deutschen Spiegelserver nachziehen und den Patch oder das komplette Archiv vorhalten.

Sämtliche Änderungen der neuen Linux-Version listet das detaillierte Changelog auf. Einen im Wesentlichem als Aufzählung umgesetzten Überblick der wichtigen Neuerungen der von 2.6.23 bietet das Kernelnewbies-Wiki. Genau wie dieser Artikel bietet es auch zahlreiche Links zu weiterführender Dokumentation oder den einzelnen während der Kernel-Entwicklung in das Quellcode-Verwaltungssystem integrierten Patches, deren Beschreibung meist genauerer Informationen zu den Änderungen und ihren Hintergründen preis geben. (thl)