Die Neuerungen von Linux 3.18
Nach zwanzig Jahren und zahlreichen Ansätzen kann der Kernel nun endlich zwei Dateisysteme zu einem verknüpfen. Kleinere Anpassungen steigern den Durchsatz beim Versenden von Netzwerkpaketen enorm. Einige Kernel-Entwickler arbeiten verstärkt am Entschlacken des Kernels, damit er sich wieder besser für leistungsschwache Systeme eignet.
- Thorsten Leemhuis
Linus Torvalds hat den Linux-Kernel 3.18 freigegeben. Eine seiner größten Neuerungen ist das Overlay Filesystem (OverlayFS), mit dem sich ein Dateisystem über ein anderes legen lässt. Solch eine Herangehensweise verwenden beispielsweise Live-Linuxe, um das Dateisystem einer schreibgeschützten DVD mit dem Dateisystem eines beschreibbaren USB-Sticks zu einem regulär nutzbaren Dateisystem zu verknüpfen; die im Live-Linux geschriebenen Daten landen dann auf dem USB-Stick und überdauern so auch Neustarts.
Auch die Container-Software Docker und viele Embedded-Linuxe überlagern ein Dateisystem mit anderen. Mit dem Standard-Kernel gelingt das bislang allenfalls über einem Umweg mit dem Device Mapper, indem den einen Datenträger als Overlay für einen anderen nutzt. Das hat aber einige Nachteile im Vergleich zu Lösungen auf Dateisystemebene, an denen seit über 20 Jahren gearbeitet wird. In der Zeit sind eine ganze Reihe von Lösungen entstanden, von denen es aber keine in den offiziellen Linux-Kernel geschafft hat, weil sie alle die Qualitätsansprüche der Kernel-Entwickler nicht erfüllen konnten. Das gilt auch für das von vielen Distributionen verwendete Aufs, das oftmals mit Docker eingesetzt wird, obwohl es eine Reihe bekannter Probleme zeigt.
OverlayFS hat die Aufnahme nach über vier Entwicklungsjahren nun geschafft; um das zu erreichen, hat der Entwickler zuvor einige Grundlagen im Kernel geschaffen und sich auf einen eher simplen Ansatz beschränkt. Der hat dadurch einige Eigenarten, welche die Dokumentation erläutert; darunter etwa Probleme mit Hard- und Softlinks und Einschränkungen mit NFS.
Schnellversand
Beim Versenden vieler kleiner Netzwerkpakete erreicht Linux bislang oft nur Durchsatzwerte, die um einiges unter dem theoretischen Maximum der jeweiligen Ethernet-Verbindung liegen; besonders deutlich zeigt sich das bei Systemen mit schwachen CPUs. Einige vergleichsweise kleine Umbauarbeiten sollen dieses Manko nun ausräumen, indem der Kernel beim Versenden von Daten nachsieht, ob bereits weitere Daten zum Versand bereitliegen; wenn ja, bildet es kurz vor der Übergabe der Daten an den Netzwerkchip größere Datenansammlungen, um die Pakete in größeren Schüben statt jeweils separat zu verarbeiten. Das reduziert den Overhead pro versendetem Netzwerkpaket und steigert so den Datendurchsatz .
Ein an den Änderungen beteiligter Entwickler erklärte, er konnte nach diesen Umbauten eine 40-Gbit-Verbindung auslasten, selbst wenn die von Linux schon länger unterstützte Optimierungstechnik TCP Segmentation Offload (TSO) ausgeschaltet war. Die neue Verfahrensweise funktioniert allerdings nur mit Netzwerktreibern, die das neu eingeführte Flag xmit_more unterstützen. Darunter sind alle 40- und 10-Gigabit-Ethernet-Treiber mit Ausnahme des Treibers bnx2x für Broadcom/Qlogic-Chips. Details und Hintergründe zur neuen Arbeitsweise liefern der Merge-Kommentar zu den wichtigsten Änderungen am Netzwerksubsystem, ein Blog-Beitrag eines der beteiligten Entwickler und ein Artikel bei LWN.net.
Grafiktreiber
Der Radeon-Treiber des Kernels bietet nun Schnittstellen, durch die ein in Mesa enthaltener AMD-Treiber den Video-Beschleuniger UVD nutzen kann, den einige ältere Radeon-GPUs enthalten; darunter die Grafikkerne RV6xx, RS[78]80 und RV7[79]0, die auf viele der Radeon-HD-Karten mit den Modellbezeichnungen 2400 bis 4290 sitzen. Der Radeon-Treiber beherrscht nun auch die Userspace Pointer, die der Intel-Treiber seit Linux 3.16 unterstützt. Sie reduzieren den Overhead, wenn der Grafikkern auf Speicherbereiche von Userspace-Prozessen zugreift – dazu zählen nicht nur Anwendungen, sondern auch Daten von 3D-, X- und OpenCL-Treibern.
Über eine neu eingeführte Funktion markiert der Intel-Treiber den Kernel nun als "tainted" (beschmutzt/befleckt), wenn bestimmte, für Entwickler gedachte Funktionen über Module-Parameter aktiviert werden. Darunter sind nicht nur Semaphoren, die die Performance verbessern können, sondern auch die Stromsparfunktionen FBC (Frame Buffer Compression); auch eine zu aggressive Einstellung für die Stromsparfunktionen RC6 kann zur Taint-Kennzeichnung führen.