Die Neuerungen von Linux 3.18

Seite 2: Entschlacken, Filtern, Dateisysteme, Netzwerk

Inhaltsverzeichnis

Einige Entwickler arbeiten nun unter dem Schlagwort "tinification" gezielter an Änderungen, um kleinere und ressourcenschonendere Kernel zu ermöglichen, damit sich Linux wieder besser für schwache Hardware eignet. Ein erster Schwung dahingehender Änderungen ist in 3.18 eingeflossen. Eine von ihnen führt das Make-Target 'tinyconfig' ein, das eine Grundkonfiguration für einen möglichst kleinen Kernel erzeugt. Durch eine andere Änderung kann man die Syscalls madvise() and fadvise() deaktivieren, wenn etwa bekannt ist, dass die Software eines Embedded-Gerätes diese Funktionsaufrufe ohnehin nicht benötigt. Das Linux-Kernel-Tinification-Wiki listet weitere Anpassungen, mit denen die Entwickler schlankere Kernel ermöglichen wollen. Manchmal stoßen die Entwickler solcher Änderungen aber auf Widerstand, weil andere Entwickler Probleme fürchten; Hintergründe dazu zeigt ein LWN.net-Artikel aus dem Mai und eine jüngst auf der Liste der Linux-Entwickler geführte Diskussion.

Unabhängig davon entstanden Anpassungen, durch die Kernel-Module nun direkt bei der Installation komprimiert werden können. Erneut gab es Änderungen, um den Kernel bald mit Clang kompilieren zu können, das auf der Compiler-Infrastruktur LLVM aufbaut. Es sind aber noch weitere Patches nötig, bis das gelingt; zudem sind derzeit auch noch Anpassungen an LLVM erforderlich, wie Torvalds im Merge-Kommentar mit den Änderungen schreibt.

Die Kernel-Entwickler haben den Extended Berkeley Packet Filter (eBPF) aus dem Netzwerksystem herausgelöst und um den Funktionsaufruf bpf() erweitert (u. a.1, 2, 3, 4, 5). Dadurch können Userspace-Programme nun eBPF-Programme in den Kernel laden, um von Letzterem verarbeitete oder erzeugte Daten zu verarbeiten.

Damit können Programme beispielsweise ohne viel Overhead bestimmte Netzwerk-Datenströme abgreifen, wie es Tcpdump schon lange mit dem klassischen BPF-Interpreter des Kernels macht. Aus ihm ist im letzten Jahr der eBPF hervorgegangen, der nicht nur schneller arbeiten kann, sondern auch flexibler und mächtiger ist; er wird daher gelegentlich auch als "universelle virtuelle Maschine im Linux-Kernel" bezeichnet. Es fehlen aber weiterhin noch Eingriffspunkte, durch die der eBPF an weitere Datenströme gelangt; darunter jene, um die manchmal immensen Datenmengen abgreifen und verarbeiten zu können, die bei der Ablaufverfolgung mit dem Function Tracer (Ftrace) entstehen. Weitere Details zum neuen Syscall und den Möglichkeiten liefern zwei LWN.net-Artikel (1, 2).

Auch der ARM64-Code enthält nun einen Just-In-Time-Compiler für den eBPF. Zum Crypto-Subsystem stieß die Multibuffer Crypto Infrastructure, die den Durchsatz bei Verschlüsselung und Prüfsummenbildung steigern kann, indem es die Eingabedaten mehrere Quellen annimmt und parallel statt nacheinander verarbeiten lässt; Kernel 3.18 nutzt diesen Möglichkeit aber nur bei SHA1 (u. a. 1, 2, 3). Unter den zahlreichen Änderungen an Perf-Subsystem sind einige, die die Unterstützung für die Performance-Counter verbessern, die den Uncore-Bereich moderner Intel-Prozessoren überwachen; dort sitzen der Speichercontroller und andere Funktionen, auf die alle Kerne eines Prozessors zurückgreifen.

Das CIFS-Dateisystem soll Microsofts Datei-, Druck- und Server-Protokoll SMB3 nun besser unterstützen.Das für Datenträger mit Flash-Speicherchips ausgelegte Dateisystem F2FS unterstützt nun größere Sektoren und beherrscht nun auch FITRIM, mit dem das Programm fstrim Datenträger über ungenutzte Speicherbereiche informiert; unter den weiteren Änderungen an F2FS sind einige, die die Robustheit des Dateisystems bei Abstürzen zu steigern versprechen; ferner sollen die neuen "Atomic writes" sicher stellen, dass eine Schreiboperation entweder komplett durchgeführt wird oder als Ganzes fehlschlägt.

Zum Xen-Code des Kernels stießen Gast- und Host-Treiber für Paravirtualized SCSI (pvSCSI), mit dem sich SCSI-Geräte an Xen-VMs überstellen lassen; das vermeidet Overhead und kann so den Datendurchsatz steigern und Latenzen reduzieren. Das bei Linux.Iscsi.Org entwickelte Linux-IO Target (LIO) kann Kommandos jetzt an Userspace-Programme durchreichen; wie die zugehörige Dokumentation erläutert, lassen sich so iSCSI-Targets als reguläre Anwendungen implementieren, ähnlich wie es FUSE (Filesystem in Userspace) mit Dateisystemen ermöglicht.

Der Kernel unterstützt in der neuen Version Data Center TCP (DCTCP), das den Datenfluss in Rechenzentren optimieren kann. Dazu nutzt es Explicit Congestion Notification (ECN), um Netzwerkübertragungen mit großen Datenmengen anders zu steuern als kleinere Übertragungen, bei denen es oft auf kurze Latenzen ankommt. Dadurch sollen sich solche Datenströme in Rechenzentren weniger ins Gehege geraten, sodass im Idealfall die Latenzen sinken und zugleich der Datendurchsatz steigt; zudem soll die Technik das als Bufferbloat bekannte Problem vermeiden, bei dem zu starkes Puffern zu hohen Latenzen und Verbindungsabbrüchen führt. Details liefert der Commit-Kommentar und eine Webseite zur Technik, die an der Stanford University entstand.

Das Netzwerksubsystem beherrscht "foo-over-udp", das beliebige Protokolle über eine UDP-Verbindung tunnelt (u. a. 1, 2); Details zu Funktionsweise und Einsatzmöglichkeiten liefert ein LWN.net-Artikel. Neu ist auch die Unterstützung für das Generic Network Virtualization Encapsulation (Geneve); ein für die Netzwerkvirtualisierung ausgelegtes Protokoll mit Draft-Status, auf das Openvswitch beim Tunneln von Netzwerkpaketen zurückgreifen kann.

Die WLAN-Treiber rtl8821ae und rtl8192ee für die gleichnamigen Realtek-Chips sind gereift, daher sind sie jetzt vom im Staging-Bereich in das Netzwerksubsystem umgezogen (1, 2). Auch der Treiber für den Gigabit-Ethernet-Adapter Agere ET-1310 konnte den Bereich verlassen, in dem unreife Treiber mit größeren Qualitätsmängeln liegen. Direkt ins Netzwerksubsystem eingezogen ist der Treiber fm10k, der Intels für Ethernet-Switches vorgesehen Chip FM10000 unterstützt (u. a. 1, 2).