Der März konnte mit dem Release des 2.6.38 aufwarten, die interessantesten Neuerungen sind Thema dieses Kernelrückblicks. Dieser ist, neben vielen anderen interessanten Beiträgen, in der aktuellen Ausgabe von freiesMagazin enthalten.
Linux 2.6.38
Einige Tage Abwesenheit waren für Torvalds der Hauptgrund, noch den -rc8 [1] zu veröffentlichen. Ein neues Merge Window, während dessen er keine Pull Requests bearbeiten kann, hält er für sinnlos. Immerhin kamen noch einige Fehlerkorrekturen auch für schon länger bekannte Probleme hinzu, die noch mal eine Woche getestet werden konnten.
Am 17. März wurde dann nach einer Entwicklungszeit von nur 69 Tagen der Linux Kernel 2.6.38 [2] freigegeben. Damit hat .38 die bisherige durchschnittliche Dauer von 80 Tagen stark unterboten; es bleibt abzuwarten ob dies einen Trend darstellt oder nur einen Ausreißer. Dennoch hat der neue Kernel einiges zu bieten, gerade auch im Desktop-Bereich. Allem voran sind die bereits viel gerühmten automatischen Task-Gruppen nun mit an Bord (siehe „Der November im Kernelrückblick“, freiesMagazin 12/2010 [3]). Diese Methode, die verfügbare Rechenzeit des Prozessors zu verteilen, soll insbesondere bei einem System unter Last dafür sorgen, dass das Gerät noch auf Eingaben des Anwenders reagiert. Auch rechenintensive Aufgaben wie zum Beispiel das Kompilieren eines Linux-Kernels sollen noch Luft lassen, damit der Nutzer nebenher den Browser bedienen oder seine E-Mails lesen kann. Verbesserungen an der Dateisystem-Abstraktionsschicht VFS, die Anwendungen eine einheitliche Schnittstelle für die Arbeit mit den verschiedenen Dateisystemen bietet, sollen ebenfalls positive Auswirkungen auf die Leistung insbesondere bei Mehrkern-Systemen haben. Hier wurde „dcache_lock“, ein nicht sehr effizienter Locking-Mechanismus, durch „RCU-based path lookup“ ersetzt, was die Skalierbarkeit auf Mehrkern-CPUs erhöht, aber auch die Prozesse bei einzelnen Kernen beschleunigt.
Neue Dateisysteme sind auch diesmal nicht mit von der Partie; btrfs wurde jedoch mit mehr als nur einigen Fehlerkorrekturen bedacht. Das Dateisystem unterstützt nun den LZO (Lempel-Ziv-Oberhumer) zur Komprimierung, ein nicht sehr stark komprimierender, jedoch sehr schneller Algorithmus. Im Vergleich zu zlib, das auf dem verbreiteten deflate-Algorithmus aufbaut, lässt sich damit bei Dateisystemoperationen bis zu 50 % Zeit sparen, manchmal, aufgrund der geringeren Datenmengen, sogar gegenüber unkomprimierten Dateisystemen. Eine weitere Neuerung ist die Fähigkeit, Schnappschüsse als Read-Only (nur lesen) zu markieren. Tritt in einem btrfs-Dateisystem ein Fehler auf, so wird es nun gezwungenermaßen neu als Read-Only eingehängt.
„B.A.T.M.A.N.“ hat nichts mit dem Namen des aktuellen und der beiden Vorgänger-Kernel (siehe „Der Oktober im Kernelrückblick“, freiesMagazin 11/2010 [4]) zu tun, sondern bedeutet „Better Approach To Mobile Adhoc Networking“ (deutsch: „Verbesserter Ansatz für mobile Sofort-Netzwerke“). Es stellt ein Protokoll zum Aufbau von Drahtlos-Netzwerken dar, die ohne vorab existierende Infrastruktur auskommen müssen, sondern auf die daran beteiligten Teilnehmer, zumeist vermutlich Notebooks, zur Übermittlung der Netzwerk-Kommunikation setzen. Angedachte Anwendungsfälle sind zum Beispiel die Herstellung von notdürftigen Kommunikationswegen nach Naturkatastrophen oder die Umgehung von Zensurmaßnahmen – beides Szenarien, die leider zum Veröffentlichungszeitpunkt für 2.6.38 äußerst aktuell waren [5] [6].
An der Netzwerkfront wurde die Behandlung ausgehender Pakete optimiert. Bereits in 2.6.35 wurden „Receive Packet Steering“ und „Receive Flow Steering“ eingeführt (siehe „Der August im Kernelrückblick“, freiesMagazin 09/2010 [7]), die die Bearbeitung eingehender Netzwerk-Pakete im ersten Fall alle möglichst gleichmäßig auf die im System vorhandenen CPUs verteilen und im zweiten zusammenhängende Datenströme der CPU zuweisen, die dafür zuständige Anwendungen ausführen. „Transmit Packet Steering“ ordnet nun einer CPU, die Pakete versendet, jeweils eine Warteschlange zu, über die diese dann versendet werden. Wirklich von Nutzen ist diese Funktion allerdings nur dort, wo mehrere Prozessoren und auch mehrere Netzwerk-Schnittstellen zur Verfügung stehen, wie zum Beispiel in Netzwerk-Hardware oder vernetzten Hochleistungsrechnern.
Zum Schluss bringt der neue Kernel auch gleich noch Unterstützung für AMDs Fusion-Plattform [8] mit. Diese vereint Prozessor und Grafikkern auf einem Chip und soll unter anderem in Tablet-PCs, aber auch Netbooks und kleinen Desktops zum Einsatz kommen, wo es auf geringe Maße, wenig Stromverbrauch und Abwärme ankommt.
Eine vollständige Auflistung der Neuerungen, insbesondere an der Treiber-Front, liefert die englischsprachige Seite Kernel Newbies [9], die mittlerweile für jeden neuen Kernel eine eigene Treiber-Seite [10] pflegt.
Linux 2.6.39
Das Merge Window für 2.6.39 ist bereits offen und bisher wurden schon einige Änderungen von Torvalds aufgenommen. Bemerkenswert ist darunter ein Pull Request von Arnd Bergman mit dem Kommentar „Total BKL removal, finally“ (deutsch: Vollständige Entfernung des BKL, endlich“) [11]. Dahinter verbergen sich eine Reihe Patches, die die letzten Spuren des Big Kernel Lock tilgen.
Android und GPL
Android-Schöpfer Google steht bereits von Seiten Oracles aufgrund der Nutzung von Java in Android unter Beschuss, da kommt auch noch aus der Kernel-Entwickler-Gemeinde der Vorwurf des Verstoßes gegen die GPL. Stein des Anstoßes war die von Google entwickelte Bibliothek „Bionic“, die Quelltext aus Header-Dateien des Linux-Kernels enthalten soll und damit unter GPL lizenziert werden müsse, anstatt unter der derzeit verwendeten BSD-Lizenz. Torvalds widersprach dem jedoch in einem Interview [12]: Die Bionic-Bibliothek nutze lediglich Schnittstellen zum Kernel und dies stelle in keiner Weise ein abgeleitetes Werk nach der GPL dar.
Die Entwicklung des Linux-Kernels läuft in dem Versionsverwaltungssystem Git ab. Dieses zeichnet sich durch die Möglichkeit aus, aus einem Hauptentwicklungszweig einfach einen eigenen abzutrennen, Änderungen aus dem originären in den eigenen einzufügen und diesen dann bei Bedarf wieder mit dem Hauptentwicklungszweig zusammenzuführen.
Dies muss allerdings von einem der Betreuer des Hauptzweiges ausgeführt werden. Ein „Pull Request“ ist die Bitte eines Entwicklers an diesen Betreuer, die Änderungen in den Ursprungszweig zu übernehmen. Im Falle der Linux-Entwicklung erfolgt dies mittels einer Mail an die Entwickler-Mailingliste, deren Betreff zum Beispiel so aussieht: „[GIT PULL] Total BKL removal, finally“ Daraufhin nimmt der Hauptentwickler, beim Linux-Kernel, Linus Torvalds, einen Merge („Verschmelzung“) vor, der den zeitweise abgetrennten Entwicklungszweig wieder mit dem Ursprung zusammenführt.
Links
[1] http://lkml.org/lkml/2011/3/8/11
[2] http://lkml.org/lkml/2011/3/14/508
[3] http://www.freiesmagazin.de/freiesMagazin-2010-12
[4] http://www.freiesmagazin.de/freiesMagazin-2010-11
[5] http://de.wikipedia.org/wiki/T%C5%8Dhoku-Erdbeben_2011
[6] http://de.wikipedia.org/wiki/B%C3%BCrgerkrieg_in_Libyen_2011
[7] http://www.freiesmagazin.de/freiesMagazin-2010-09
[8] http://de.wikipedia.org/wiki/Accelerated_Processing_Unit
[9] http://kernelnewbies.org/Linux_2_6_38
[10] http://kernelnewbies.org/Linux_2_6_38-DriversArch
[11] http://www.heise.de/open/meldung/Linus-Torvalds-Android-verstoesst-nicht...
