Die Neuerungen von Linux 2.6.39 | heise online

Die Neuerungen von Linux 2.6.39

Der neueste Linux-Kernel bringt einen Treiber für AMDs aktuelle High-End-Grafikchips; Ipsets erleichtern das Aufsetzen und den Betrieb der Firewall; Ext4 und Block Layer beschleunigt; Interrupt-Bearbeitung in Threads; hunderte neue oder überarbeitete Treiber.

vorlesen Druckansicht 9 Kommentare lesen
Lesezeit: 12 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Auch am jetzt freigegeben Kernel 2.6.39 arbeiteten Linus Torvalds und seine Mitstreiter weniger als 70 Tage – ein weiteres Indiz für eine leichte Beschleunigung der Kernel-Entwicklung, denn vor ein oder zwei Jahren vergingen zwischen der Freigabe von zwei Versionen eher 80 bis 90 Tage. Zumindest bei 2.6.39 ging mit der kürzeren Entwicklungsphase auch ein leichter Rückgang bei der Zahl der Neuerungen einher; es gibt aber noch reichlich nennenswerte Änderungen, die Linux schneller oder besser machen.

Das folgende Kernel-Log beschreibt die wichtigsten Verbesserungen des neuen Linux-Version in Kurzform. Von ihnen profitieren nicht nur Server, sondern auch Notebooks und Desktop-PCs. Über die Linux-Kernel der Distributionen landen die Verbesserungen mittelfristig auf dem Gros der Linux-Systeme, weil die Distributions-Kernel auf jenen von Linus Torvalds basieren.

Der Radeon-Treiber des Kernels 2.6.39 unterstützt nun auch die Grafikchips der Cayman-Familie, die AMD unter anderem auf den aktuellen Radeon-HD-Modellen 6790 bis 6970 verbaut (u. a. 1, 2). Mangels DRM-Unterstützung lassen sich deren 2D- und 3D-Beschleunigungsfunktionen aber nicht nutzen; spätere Kernel sollen diese Lücke beseitigen.

Der für Nvidia-GPUs zuständige Grafiktreiber Nouveau beherrscht nun Z-Kompression. Zudem wurde ein Performance-Problem beseitigt, das eine Leistungseinbuße von 10 bis 30 Prozent nach sich gezogen haben soll. Unter den vielen kleinen Änderungen an den Intel-Treibern sind einige, die die Performance in bestimmten Situationen verbessern oder die Leistungsaufnahme neuerer Grafikkerne senken (1, 2, 3).

Zum Staging-Bereich mit seinen noch nicht ausgereiften Treibern stieß ein rudimentäre Grafiktreiber für den unter Linux bislang als sehr problematisch geltenden Grafikkern GMA500. Der steckt in Intels für den Einsatz im Embedded-Markt ausgelegten Chipsatz US15W ("Poulsbo"), den einige Hersteller in Netbooks verbauen.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat die Kernel-Log-Serie "Was Linux 2.6.39 bringt" einen detaillierten Überblick über die Änderungen der Linux-Version 2.6.39 gegeben:

  1. Netzwerk-Treiber und -Infrastruktur
  2. Storage und Dateisysteme
  3. Architektur und Infrastruktur
  4. Treiber

Dieser Artikel zu den Neuerungen von Linux 2.6.39 fasst die wichtigsten der dort genannten Verbesserungen zusammen und gibt zusätzlich noch einen Ausblick auf 2.6.40. Viele Änderungen haben wir in der Serie erheblich ausführlicher beschrieben und dort auch auf weitere Informationsquellen verwiesen; die Artikel der Mini-Serie listen außerdem noch zahlreiche nicht so bedeutende, aber keineswegs unwichtige Änderungen auf.

Am Ende jedes Artikels der Mini-Serie findet sich unter der Überschrift "Die kleinen Perlen" zudem Listen mit etlichen kleineren Neuerungen zu bestimmter Hardware. Der Artikel zu den Treibern etwa verweist auf zahlreiche Patches, die die Unterstützung der Audio-Hardware verschiedener PC-, Notebook- und Mainboard-Modelle verbessern; in den Listen zu den Änderungen im V4L/DVB-Subsystem finden sich zudem einige Produktnamen von TV-Hardware, welche die neue Version des Linux-Kernels nun ansteuern kann.

Nach langer Entwicklung unabhängig vom Kernel stieß nun die Unterstützung für die aktuelle Generation von Ipset zum Linux-Kernel (u. a. 1). Dieses Kommandozeilenprogramm erstellt im Speicher vorgehaltene Tabellen mit IP-Adressen oder TCP/UDP-Ports – etwa eine Liste mit IP-Adressen, die geblockt werden sollen. Der Firewall-Code kann diese Tabellen bei der Paket-Prüfung konsultieren; dazu ist lediglich eine einzige Iptables-Regel nötig, die die zu verwendende Tabelle spezifiziert. Das kann das Aufsetzen und die Pflege einer Firewall erheblich vereinfachen. Die Tabellen sind zudem deutlich einfacher und schneller aktualisierbar, als sich Iptables-Regeln einfügen oder entfernen lassen – das erleichtert Dinge wie das vorübergehende Aussperren eines Angreifers. Darüber hinaus soll der Kernel die Tabellen erheblich flotter verarbeiten als einen vergleichbaren Satz einzelner Iptables-Regeln.

Aufgenommen haben die Kernel-Entwickler den WLAN-Treiber rtl8192cu für die Realtek-USB-WLAN-Bausteine RTL8192CU und RTL8188CU (u.a. 1, 2). Wie schon bei 2.6.37 und 2.6.38 haben die Kernel-Hacker den Code für 802.11n-Chips von Broadcom im Treiber b43 weiter ausgebaut, wodurch dieser nun auch 802.11n-PHYs ab der dritten Generation anspricht (u. a. 1, 2) Einen guten Überblick, welche Broadcom-Chips der Treiber dadurch nun erstmals oder besser unterstützt, liefern die Wiki-Seite zum Treiber. Der Treiber iwlwifi spricht nun auch die WLAN-Chips aus Intels 2000er-Serie an (u. a. 1, 2).

Nachdem die Kernel-Hacker bereits in den letzten Monaten allen auf gängigen Systemen genutzten Bereichen des Kernels die Nutzung des Big Kernel Lock (BKL) ausgetrieben hatten, verschwindet dieser Sperrmechanismus nun ganz; in dem dafür zuständigen und mit "BKL: That's all, folks" betitelten Commit bedankt sich Arnd Bergmann bei den wichtigsten Kernel-Entwicklern, die dies Vorhaben zusammen mit ihm vorangetrieben haben.

Die "Forced Threaded Interrupt Handlers" verlagern die Verarbeitung fast aller Interrupts in Kernel-Threads, wenn man den Kernel mit dem Parameter "threadirqs" startet. Damit kommt eine der letzten wichtigen Funktionen im Hauptentwicklungszweig von Linux an, die der Realtime-Zweig nutzt, um Linux Echtzeit-Fähigkeiten zu verleihen; dort wird die Technik standardmäßig genutzt, um lange Latenzen bei der Abarbeitung von Interrupts zu vermeiden.

KVM beherrscht nun die asynchrone Abarbeitung von Page Faults – das Gast-System kann so vorübergehend einen anderen Thread ausführen, während der Host gerade eine Speicherseite aus dem Auslagerungsspeicher zurückholt, die der aktuelle Thread angefordert hat. Nach der bei 2.6.37 integrierten Basis-Infrastruktur zum Betrieb als Xen-Host (Dom0) folgte mit Kernel 2.6.39 das Netzwerk-Backend, über das die Frontend-Treiber in Xen-Gästen (DomU) mit anderen Systemen kommunizieren. Das Storage-Backend fehlt weiterhin. In den Qemu-Code flossen allerdings kürzlich zahlreiche Änderungen an der Xen-Unterstützung ein – darunter auch ein Storage-Backend. Dadurch sollte der Entwicklerzweig von Qemu zusammen mit dem 39er-Kernel einen sinnvollen Betrieb als Dom0 ermöglichen, was bisher weitere Patches erforderte.

Ext4 nutzt in Zukunft standardmäßig die mblk_io_submit abgekürzten "Multiple Page-IO Submissions", was Performance und Skalierbarkeit erheblich verbessern soll. Der dahinter stehende Code war bei 2.6.37 zum Kernel gestoßen, aber aufgrund von Problemen kurz vor der Fertigstellung dieser Linux-Version in der Voreinstellung lahm gelegt worden. Das weiterhin experimentelle Dateisystem Btrfs beherrscht ab 2.6.39 Batched Discard – eine bei 2.6.37 eingeführte Funktion, um SSDs und mit Hilfe von fstrim ab und zu über ungenutzte Speicherbereiche zu informieren.

Das neue Dateisystem Pstore bietet Zugriff auf "Platform Persistent Storage" – nichtflüchtige und zumeist kleine Speicherbereiche, die manche Systeme mitbringen, damit Betriebssysteme dort im Falle eines Absturzes Daten zur Crash-Analyse ablegen können. Hintergründe dazu liefert LWN.net im Artikel "Persistent storage for a kernel's 'dying breath'".

Jens Axboe hat einige Interna im von ihm betreuten Block-Subsystem erheblich umstrukturiert. Das delegiert einige Aufgaben beim Schreiben eines Geräte-spezifischen Puffer näher an den Code, der die Daten schreiben möchte (u. a. 1, 2). Das soll die Skalierbarkeit steigern und dadurch die Performance beim Einsatz der heute schnellsten Datenträger verbessern. Dieses "New Block Device Plugging Model" war die einzige Änderung, der Torvalds in der Mail zur ersten Vorabversion von 2.6.39 besondere Aufmerksamkeit zukommen ließ; der Ansatz vermeide Sperren in einem viel genutzten Code-Pfad, mache den Code sauberer und sei überhaupt eine "wirklich gute Idee".

Die bei 2.6.38 integrierte Target-Implementierung LIO (Linux-Iscsi.org) haben die Kernel-Hacker um das Modul tcm_loop erweitert, das eine lokale SPC-4-SCSI Emulation für beliebige Raw-Devices ermöglicht. Die Storage-Treiber ahci und ata_piix des 39er-Kernels unterstützen bereits jetzt die SATA-Adapter der "Panther Point"-Chipsätze (1, 2), die Intel vermutlich Anfang 2012 zusammen mit neuen Prozessoren einführen wird. Der AHCI-Treiber des 39er-Kernels spricht jetzt Marvells PCIe-SATA-6G-Controller 88se9125 an (1, 2).

Das SCSI-Subsystem bietet nun bessere Unterstützung für die in der T10-Spezifikation SBC3r26 definierten Schnittstellen zum Logical Block Provisioning. Sie informieren SSDs oder Netzwerk-Speicherlösungen mit Thin Provisioning über das SCSI-Kommandos WRITE SAME und dessen UNMAP-Bit über freigewordene Speicherbereiche (1, 2).

Mehr Infos

Linux-Kernel herunterladen

Neue Linux-Versionen sind über kernel.org erhältlich; dessen Inhalte spiegeln auch zahlreiche Mirror-Server in Deutschland, Österreich und der Schweiz. Linux-Anwender, die sich nicht intensiv mit dem Kernel und dessen Umfeld beschäftigen, sollten neue Linux-Treiber und -Kernel aber nicht auf eigene Faust einspielen, sondern die Kernel ihrer Linux-Distribution verwenden. (...mehr...)

Der USB-Code unterstützt nun USB-3.0-Hubs (1, 2). Zum Audio-Subsystem stieß ein Treiber für die Terratec DMX 6Fire USB; dort landete auch ein FireWire-Audio-Treiber, der das Griffin FireWave Surround Sound System und die LaCie FireWire Speaker anspricht. Neu ist auch ein Treiber für einen via USB 2.0 angebundenen DVB-S/S2-Receiver von Technisat. In den Kernel floss ferner der Gspca-Subtreiber nw80x ein.

Den Staging-Bereich verlassen konnte ein Treiber für SABI. Dabei handelt es sich um ein Samsung-eigenes Interface, über das viele der in den letzten Jahren gefertigten Net- und Notebooks dem Betriebssystem unter anderem mitteilen, wenn der Anwender Funktionstasten betätigt – etwa jene zur Helligkeits- oder Lautstärke-Regelung. Auch für neuere Asus-Notebooks, die WMI für die Funktionstasten-Interaktion mit dem Betriebssystem nutzen, liegt dem 39er-Kernel ein Treiber bei; er ist aus dem WMI-Treiber für EeePCs hervorgegangen.

Torvalds hatte bei der Freigabe der ersten Vorabversion von Linux 2.6.39 schon angedeutet, dass diese Version nur wenige herausragende Neuerungen enthält und angedeutet, es werde ein Release mit soliden, langweiligen Fortschritten. Dennoch bringt auch 2.6.39 einige signifikante Fortschritte.

Mit Ipset etwa dürften viele Sysadmins früher oder später in Kontakt kommen, erleichtert es doch Aufsetzen, Pflege und Betrieb von Firewalls – in einigen auf den Einsatz als Firewall ausgerichteten Linux-Distributionen kamen Ipsets daher schon länger zum Einsatz. Gerade auf großen Systemen dürften auch die Verbesserungen im Block Layer und in Ext4 Auswirkungen zeigen. Und die vielen neuen und aktualisierten Treiber verbessern die Hardware-Unterstützung wieder deutlich – gerade für Hardware, die vor kurzem auf den Markt kam oder in den nächsten Wochen erscheinen soll.

Linux- Version Anzahl Dateien¹ Zeilen
Quelltext²
(Ohne Dokum.)
Entwicklungs-
zeitraum
Anzahl Commits³ Diffstat⁴
2.6.33 31565 12990041
(11564768)
83 Tage 10871 9673 files changed,
 859458 insertions(+),
 479452 deletions(-)
2.6.34 32297 13320934
(11861616)
82 Tage 9443 11154 files changed,
 609854 insertions(+),
 278958 deletions(-)
2.6.35 33316 13545604
(12250679)
77 Tage 9801 8889 files changed,
 691927 insertions(+),
 467252 deletions(-)
2.6.36 34301 13499457
(12539782)
80 Tage 9501 9202 files changed,
 582139 insertions(+),
 628362 deletions(-)
2.6.37 35191 13996612
(13006967)
76 Tage 11446 11104 files changed,
 1093202 insertions(+),
 598350 deletions(-)
2.6.38 35877 14294439
(13294464)
69 Tage 9542 9133 files changed,
 747809 insertions(+),
 455603 deletions(-)
2.6.39 36719 14619185
(13605251)
65 Tage 10268 10985 files changed,
 847537 insertions(+),
 523387 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | wc -l
² find . -type f -not -regex '\./\.git.*' | xargs cat | wc -l (find . -name *.[hcS] -not -regex '\./\.git.*' | xargs cat | wc -l)
³ git-log --no-merges --pretty=oneline v2.6.(x-1)..v2.6.(x) | wc -l
⁴ git diff --shortstat v2.6.(x-1)..v2.6.(x)

Direkt nach der Freigabe von 2.6.39 beginnt nun das ungefähr zwei Wochen lange Merge Window, in dem die Kernel-Entwickler den Großteil der Änderungen für die nächste Kernel-Version in den Hauptentwicklungszweig von Linux integrieren. Für diese erste Phase im Entwicklungszyklus von 2.6.40 haben die Kernel-Hacker bereits zahlreiche Änderungen vorbereitet.

Besonders viel soll sich wieder im Bereich WLAN tun. In den Kernel einfließen soll der Treiber mwifiex für einen 802.11n-Chip von Marvell. Zur Integration vorbereitet ist auch der Treiber rtl8192se für die Realtek-WLAN-Chips RTL8191SE und RTL8192SE; ein Treiber für den RTL8192DE ist in Vorbereitung, schafft die Aufnahme aber wahrscheinlich erst bei 2.6.41. Rausfliegen sollen die unsauberen Staging-Treiber rt2860sta und rt2870sta für WLAN-Chips von Ralink – die von diesem Treiber unterstützten Bausteine sollen mittlerweile ähnlich gut von Treibern angesprochen werden, die sich im Netzwerk-Subsystem des Kernels finden und ihren Ursprung im Rt2x00-Projekts haben (1, 2). Zudem soll ein bei LWN.net beschriebener Just-in-Time-Compiler zum Netfilter-Code stoßen und so den Paket-Filter beschleunigen. Möglicherweise ziehen auch schon in 2.6.40 erste Treiber-Teile zur Unterstützung der Grafikkerne in den Ivy-Bridge-Prozessoren ein, die Intel vermutlich Anfang nächsten Jahres einführen will.

Die nächsten zwei Wochen werden zeigen, welche Verbesserungen Torvalds tatsächlich in den Hauptentwicklungszweig integriert. Wie üblich wird das Kernel-Log in c't und auf heise open über diese und andere wichtige Neuerungen am Linux-Kernel und in dessen Umfeld berichten – dazu zählen auch neue Versionen der Stable-Kernel-Series (2.6.39.y), die in den kommenden Wochen den einen oder anderen Fehler korrigieren dürften, der bei der Arbeit an 2.6.39 übersehen wurde oder nicht rechtzeitig korrigiert werden konnte.

Zudem wird sich das Kernel-Log auf heise open wie üblich im Rahmen einer Artikel-Serie mit dem Titel "Was 2.6.40 bringt" umfassend mit den Neuerungen der nächsten Kernel-Version auseinander setzen. Sofern Torvalds und seine Mitstreiter im üblichen Tempo arbeiten, dürfte Linux 2.6.40 etwa Ende Juli erscheinen; die wichtigsten Änderungen dieser Version wird dann wieder ein Kernel-Log wie dieses auf heise open zusammenfassen.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H Open" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige später meist auch im Kernel-Log erwähnte Themen als "@kernellogauthor" bei Identi.ca und Twitter. (thl) (thl)