Linux 3.2 und 3.3: Dezember und Januar im Kernel-Rückblick

Anzeige:

Der Linux-Kernel, auf den alle Linux-Distributionen wie Ubuntu, Fedora und Red Hat Enterprise Linux aufsetzen, ist mit Version 3.2 stark erweitert. Die Dateisysteme Ext4 und Butter-FS (Btrfs) haben wichtige und nützliche Funkionen zugelegt. Mathias Menzer erklärt, welche Funktionen bei Linux neu hinzukommen.

Klick zum Vergrössern: Die Karte des Linux-Kernels. (pd)

Linux-Erfinder und Chefentwickler Linus Torvalds hat bei der Veröffentlichung von 3.2-rc4 (RC: Release Candidate) noch mit einer geringeren Anzahl von Neuerungen gerechnet. Mit 3.2-rc5 wurden aber alle diesbezüglichen Illusionen weggeblasen. Erneut änderte sehr viel. Es war jedoch nichts Grosses darunter: ein Treiber, der vor Jahren bereits ersetzt worden war, wurde entfernt; andere Treiber wurden ergänzt, darunter auch Nouveau,  der freie Treiber für Nvidia-Grafikchips. Die Abhängigkeiten der Linux-eigenen Firewall Netfilter zu anderen Komponenten wurde reduziert und die Routing-Funktion des Netzwerkprotokolls IPv4 wurden optimiert.

Anzeige:

Der 3.2-rc6 blieb recht übersichtlich. Für die Intel-Grafikeinheiten der Generationen Ivy Bridge und Sandy Bridge ist nun RC6 aktiv, wodurch die Energieaufnahme verringert werden kann. Ein alter Treiber für die Diskettenlaufwerke alter Power-Macs wurde umfangreich korrigiert. Statt eines Weihnachtskernels gab es dann noch den 3.2-rc7, dessen bemerkenswerteste Änderung den QLogic-iSCSI-Treiber qlaxxx korrigierte.
Das Release von Linux 3.2 liess dann noch bis in den Januar hinein auf sich warten [5]. Im Vergleich zum Vorgänger hat 3.2 mehr zu bieten. Dies ist jedoch eher den gestörten Entwicklungszeitraum von 3.1 geschuldet, als man noch mit den Nachwehen des Einbruchs in die Kernel.org-Server leben musste.

Mehr Leistung soll die Überarbeitung der «Writeback»-Logik bringen. Um die Zugriffszeiten auf das Dateisystem zu verbessern, werden Änderungen nicht immer direkt auf den Datenträger geschrieben, sondern im Arbeitsspeicher zwischengepuffert. Der Algorithmus, um festzulegen, wie viel zwischengespeichert werden kann, ohne negative Auswirkungen auf laufende Prozesse zu verursachen, wurde neu geschrieben, sodass das System auch während umfangreicher Schreibvorgänge zuverlässiger reagiert.

Höhere Geschwindigkeit im Umgang mit grossen Dateien
Grössere Neuerungen gab es bei den Dateisystemen. Ext4 unterstützt nun Blockgrössen von bis zu 1 MB. Bislang lag die Obergrenze bei 4 KB. 1-MB-Blockgrössen belegen weniger Blöcke für die gleiche Datei. Das ist insbesondere dort von Vorteil, wo viele grosse Dateien abgelegt werden – beispielsweise bei Fotos und Videos. Dadurch sinkt die Zeit, die für das Zuweisen der Blöcke erforderlich ist. Zudem rückt als Problem der Fragmentierung mehr in den Hintergrund.

Dagegen stellt die erhöhte Blockgrösse einen Nachteil dar, wenn in einem Dateisystem mit sehr vielen kleinen Dateien gearbeitet wird, da diese dann mindestens einen Block von 1 MB, belegen. Ein weiterer Schwachpunkt ist die mangelnde Kompatibilität zu älteren Kernel-Versionen. Aus diesen Gründen bleibt 4 KB-Blockgrösse die gewohnte Voreinstellung beim Erzeugen neuer Ext4-Partitionen.

Auch Butter-FS (Btrfs), das neue Standard-Dateisystem der aktuellen Fedora-16-Distribution, konnte sich seinen Teil an Neuerungen sichern. Die Funktion «Scrub read-ahead» beschleunigt das Ermitteln aller Prüfsummen des Systems, genannt Scrubbing. Dadurch erhöht sich der Datendurchsatz. Auch die Datensicherheit wurde verbessert: Im Speicher für wichtige Informationen über das Dateisystem, dem Superblock, werden nun die letzten Änderungen des Roots der Dateisystembäume abgelegt. Die Fehlermeldung wird damit um Informationen ergänzt. Sie wird damit aussagekräftiger als bisher, wo lediglich die Blocknummer genannt wurde. Es können nun auch mit Werkzeugen, die im Kontext des Anwenders laufen, Informationen direkt aus dem Dateisystem gelesen werden, um zum Beispiel zu erfahren, welche Datei wo zugeordnet ist.

Google-Entwickler sparen Rechenzeit und erhöhen Netzwerk-Geschwindigkeit
Der Prozess-Scheduler wird effizienter. In einem Prozessor (CPU) teilt ein Steuerprogramm die Rechenzeit auf, um die wartenden Prozesse des Systems optimal durchzubringen. In der Regel nimmt sich jeder Prozess so viel dieser Rechenzeit wie er bekommen kann – ein Umstand, der in manchen Situationen unerwünscht ist und den ein Google-Entwickler nun ändert. Der «CPU Bandwidth Control» definiert eine Maximalmenge an Rechenzeit, die eine Gruppe von Prozessen innerhalb einer bestimmten Zeitspanne nutzen kann. Wird dieser Wert überschritten, bremst der Scheduler die entsprechenden Prozesse aus.

Ebenfalls aus dem Hause Google stammt die Überarbeitung eines Teils des TCP-Stacks. Dieser versucht normalerweise eine möglichst hohe Daten-Übertragungsrate zu erreichen, indem die Senderate der Netzwerkpakete stetig erhöht wird – solange alles gut geht und die Senderate bei Paketverlusten wieder reduziert wird. Gemessen wird dies am «Congestion Window», der Anzahl der Pakete, die gleichzeitig gesendet wurden und für die noch keine Empfangsbestätigung vorliegt. Unter ungünstigen Umständen kann die Übertragungsrate jedoch stark zurückgehen und kommt dann nur langsam wieder auf höhere Werte. Dem wird nun durch einen Mechanismus entgegengewirkt, der die maximal mögliche Bandbreite aggressiver zu erreichen und zu halten versucht, indem bei Paketverlust die Senderate nicht ganz so radikal reduziert wird. Bei fehlerfreier Kommunikation bringt das System die Senderate dagegen sofort wieder auf den vorausberechneten maximal erreichbaren Wert, anstatt sie nur langsam ansteigen zu lassen.

«Cross Memory Attach» erlaubt Prozessen, auf den Adressbereich eines anderen Prozesses zugreifen zu können. Was normalerweise als Problem angesehen würde, ist dort sinnvoll, wo Prozesse auf eine Kommunikation mittels MPI (Message Passing Interface) untereinander angewiesen sind. Diese Methode erspart den Prozessen die Verwendung eines gemeinsamen Speicherbereichs, über den bislang kommuniziert wurde.

Virtueller Netzwerk-Switch aus Xen in Linux 3.3
Zwei Wochen lang hielt Torvalds das Merge Window offen, bevor er Mitte Januar dann die erste Vorabversion von Linux 3.3 zur Verfügung stellte. Die reine Zahl der Commits war etwas geringer als bei 3.2-rc1, jedoch wurden noch nicht alle Anfragen bezüglich der Aufnahme von Änderungen in 3.3 bearbeitet. Anfragen, die jedoch nach Ende des Merge Window eintreffen, erteilt Torvalds eine klare Absage. Sie müssen sich bis Linux 3.4 gedulden.

Den Grossteil der Änderungen findet man wieder im Bereich der Treiber. Hier kam unter anderem der «Open vSwitch» hinzu, ein virtueller Netzwerkswitch, der vom Virtualisierer Xen bereits genutzt wurde und nun Eingang in den Linux-Kernel fand. Auch die Linux-Firewall Netfilter wurde überarbeitet. Mit C6X kam eine weitere Architektur für Signalprozessoren hinzu, diesmal aus dem Hause Texas Instruments.

(Mathias Menzer)

Creative Commons Lizenzvertrag

Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

 

The following two tabs change content below.
Mathias Menzer
Mathias Menzer behält die Entwicklung des Linux- Kernels im Blick, um über kommende Funktionen von Linux auf dem Laufenden zu bleiben und immer mit interessanten Abkürzungen und komplizierten Begriffen dienen zu können.