Der Mai im Kernelrückblick

Der Mai sah die Veröffentlichung von 2.6.34 und den Beginn der Entwicklung des Nachfolgers, genug Stoff für einen neuen Kernelrückblick. Dieser ist, neben vielen anderen interessanten Themen, in der aktuellen Ausgabe von freiesMagazin enthalten.

Noch vor Veröffentlichung der Maiausgabe von freiesMagazin stellte Torvalds 2.6.34-rc6 [1] zur Verfügung. Er hat Änderungen an der Standardkonfiguration (defconfig) für die PowerPC-Architektur im Gepäck und einen zusätzlichen Befehl für den GEM (Graphics Execution Manager) des Grafiktreibers i915. Das neue Kommando PIPE_CONTROL soll eine bessere Verwaltung des Zwischenspeichers ermöglichen. Ganz nebenbei wird PIPE_CONTROL auch von aktuelleren Grafikchipsätzen vorausgesetzt. Unter den neuen Treibern ist auch ipeth, der Tethering mit einem Apples iPhone ermöglichen soll, es also als Modem nutzbar macht. Die siebte Vorabversion wurde dann schon mit den Worten Ich glaube, das ist der letzte -rc angekündigt und konnte auch nur kleinere Korrekturen bieten [2]. Auch der Patch zur darauf folgenden finalen Version 2.6.34 [3] enthielt eher unscheinbare Korrekturen, die über alle Bereiche verteilt waren.

Zu denen neuen Dateisystemen, die vom Linux-Kernel unterstützt werden, zählen nun Ceph und LogFS. Ceph ist ein Netzwerk-Dateisystem, das die Dateien als auch die Metadaten so über die zu einem Cluster zusammengeschlossenen Rechner verteilt, dass kein Single Point of Failure [4] auftritt. Es kann Datenmengen bis in den Petabyte-Bereich (1 Petabyte entspricht 1000 Terabyte) hinein verwalten und soll dabei noch gut skalieren. Die Server laufen als Daemons, der in den Kernel eingeführte Teil stellt lediglich die Client-Komponente für den Zugriff auf Ceph-basierte Cluster dar.

LogFS dagegen zielt klar auf den Einsatz auf einem einzelnen System ab. Als logstrukturiertes Dateisystem ist es für die Anwendung mit Flash-basierten Speichermedien gedacht. Seine Eigenart, neue oder geänderte Dateien an den bereits beschriebenen Bereich anzufügen und erst alte Daten zu überschreiben, wenn alle Blöcke belegt sind, lastet Flash-Speicher besonders gleichmäßig aus und sorgt damit für eine höhere Lebensdauer des Speichers.

Auch Btrfs hat einige Neuerungen erfahren. So kann nun festgelegt werden, welcher Snapshot oder welches Subvolume standardmäßig in das System eingehängt werden soll. Die Werkzeuge zum Arbeiten mit dem Dateisystem wurden erneuert. Btrfs wartet nun das Beenden aller aktiven Schreibvorgänge ab, bevor es einen Snapshot erstellt. Weiterhin wurde die „experimental“-Markierung von FS-Cache entfernt, das Zugriffe auf Netzwerkdateisysteme wie z.B. NFS durch Zwischenspeichern beschleunigt. Es kann damit nun auch offiziell von den Distributoren eingesetzt werden.

KVM (Kernel-based Virtual Machine) wurde mit einem schnelleren Netzwerk ausgestattet. „vhost-net“ [5] wurde in den Kernel aufgenommen, um den Weg virtueller Netzwerkpakete abzukürzen. Bislang mussten diese, um von einer virtuellen Maschine in die andere zu kommen, den Umweg über den Userspace zu nehmen, nun können diese dank vhost-net direkt im Kontext des Kernels bearbeitet und damit schneller zugestellt werden.

Längere Akku-Laufzeiten könnte eine Verbesserung der Suspend/Resume-Funktionen bringen. So können Geräte nun zeitgleich in den Schlafmodus geschickt oder wieder daraus geweckt werden, wodurch sich die Einschlaf- und Aufwachzyklen verkürzen. Nutzer von Systemen mit mehreren Grafikchipsätzen profitieren von der Möglichkeit, die aktive GPU (Graphics Processing Unit) im laufenden Betrieb umzuschalten. Dies ist insbesondere bei Notebooks interessant, die eine leistungsstarke Karte für z.B. 3D-Anwendungen mitbringen und eine eher schwächere Grafik für den energiesparenden Betrieb. Einen Haken hat die Sache dennoch: Der X-Server, also die grafische Oberfläche, muss für den Umschaltvorgang neu gestartet werden, hier wird der fliegende Wechsel nicht unterstützt.

Apropos Grafik: Nouveau, der freie Treiber für Nvidia-Grafikkarten, kommt nun ohne die proprietäre Firmware für die NV50-Chipsätze aus. Das neue Programm „ctxprogs“ kann die Firmware für diese Karten zur Laufzeit erzeugen. Und die neue Chipsatz-Generation aus dem Hause ATI, Evergreen (Radeon HD 5xxx), wird nun ebenfalls in Grundzügen unterstützt. Wichtige Funktionen wie die 3D-Beschleunigung wurden noch nicht implementiert. Derzeit sollte von einer Nutzung durch den Anwender abgesehen werden.

VMware hat auch einen Beitrag zum Linux-Kernel geleistet, allerdings nicht ganz uneigennützig. Der „VMWare-Balloon-Treiber“ kommt zum Einsatz, sobald das System in einer virtuellen Maschine, unter VMWare, betrieben wird. Dann kooperiert er mit dem Virtualisierer, indem er Arbeitsspeicher, der eigentlich der virtuellen Maschine zur Verfügung steht, belegt und dadurch die Nutzung durch das Host-System ermöglicht.

Darüber hinaus kamen wieder viele neue Treiber hinzu oder wurden verbessert; einen guten Überblick verschafft die Seite Kernel Newbies [6].

Das Merge Window für 2.6.35 wurde im Mai geöffnet und mit 2.6.35-rc1 [7] auch schon wieder geschlossen. Torvalds habe noch nicht alle Anfragen zur Aufnahme von Änderungen in das offizielle Kernel-GIT berücksichtigen können und wird dies noch nachholen, jedoch bat er darum, dass ihm keine weiteren „Pull Requests“ geschickt würden, außer zur Behebung von Fehlern. Er zählte auf, dass über 1000 Entwickler insgesamt 8500 Commits eingebracht hätten und äußerte sich damit zufrieden.

Diesmal sind keine neuen Dateisysteme enthalten, auch wenn an den bestehenden kräftig geschraubt wurde. Der größte Teil der Änderungen fand wieder einmal im Bereich der Treiber statt, aber auch andere Bereiche haben Neues zu bieten: So wurden im Netzwerk-Umfeld zwei neue Methoden implementiert, die das Bearbeiten von Netzwerk-Paketen unter hoher Systemlast verbessern sollen. „Receive Packet Steering“ (RPS) verteilt die Arbeit beim Handling des Netzwerkverkehrs auf mehrere Prozessoren und soll durch das dadurch ermöglichte parallele Bearbeiten der Pakete die Netzwerkkommunikation beschleunigen. Darauf aufbauend sorgt „Receive Flow Steering“ (RFS) dafür, dass Pakete höherer Protokollschichten (IP/TCP/UDP) auf dem gleichen Prozessor bearbeitet werden, wie die zu dem entsprechenden Datenfluss gehörende Anwendung.


Kurz erläutert: „Git“
Bei „Git“ [8] handelt es sich um das Versionsverwaltungssystem [9], das bei der Entwicklung des Linux-Kernels zum Einsatz kommt. Git ermöglicht es, dass viele Entwickler gleichzeitig am Quellcode arbeiten können, ohne dass es zu sich überschneidenden Änderungen kommt. Jeder kann die Quelltexte des offiziellen Kernel-Git lesen oder sich herunterladen. Änderungen am Quelltext, Patches genannt, werden dann zur Aufnahme eingereicht und von den Betreuern und Entwicklern in das Kernel-Git – oder einen der Zweige zum weiteren Testen – integriert.

Quellen:
[1] http://lkml.org/lkml/2010/4/30/36
[2] http://lkml.org/lkml/2010/5/9/179
[3] http://lkml.org/lkml/2010/5/16/89
[4] http://de.wikipedia.org/wiki/Single_Point_of_Failure
[5] http://www.linux-kvm.org/page/VhostNet
[6] http://kernelnewbies.org/Linux_2_6_34
[7] http://lkml.org/lkml/2010/5/30/101
[8] http://git-scm.com/
[9] http://de.wikipedia.org/wiki/Versionsverwaltung

Inhalt abgleichen