Kernel-Log – Was 3.15 bringt (1): Dateisysteme und Storage

Linux 3.15 wacht schneller aus dem Suspend auf. Ein neues Locking-API beseitigt Schwachstellen, mit denen Entwickler seit vielen Jahren kämpfen. Neue Dateisystemfunktionen können Video-Schnitt-Programmen die Arbeit erleichtern und sie so erheblich beschleunigen.

In Pocket speichern vorlesen Druckansicht 21 Kommentare lesen
Lesezeit: 7 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Am ersten Maisonntag hat Linus Torvalds die vierte Vorabversion von Linux 3.15 veröffentlicht. Sie enthält wie gewohnt fast ausschließlich Fehlerkorrekturen, denn die Hauptentwicklungsphase dieser Version endete bereits Mitte April, als Linux 3.14 zwei Wochen alt war. Die wichtigsten Neuerungen der in drei bis fünf Wochen erwarteten Kernel-Version 3.15 sind daher bereits jetzt absehbar.

Wir werden die Neuerungen in Linux 3.15 wieder in einer mehrteiligen Artikelserie beschreiben, die sich zum Start den Neuerungen rund um Dateisysteme und Storage-Hardware widmet. In den nächsten Wochen folgen Artikel zu Grafiktreibern, Netzwerk-Unterstützung, Kernel-Infrastruktur, Prozessor/Plattform-Code und Treibern für andere Hardware.

Einige PCs wachen jetzt sehr viel schneller aus dem Suspend-to-RAM (ACPI S3) auf. Das ist Änderungen zu verdanken, durch die der Kernel im Aufwachprozess nicht mehr darauf wartet, dass alle Datenträger des Systems Einsatzbereitschaft melden. Festplattenzugriffe in dieser Zeit werden zwischengespeichert und umgesetzt, sobald der Datenträger bereit ist (1, 2).

Manche Systeme sollen mit Linux 3.15 um ein vielfaches schneller aus dem Suspend-to-RAM aufwachen.

(Bild: 01.org)

Der Performance-Gewinn durch diese Änderung hängt von den verwendeten Datenträgern und den Zugriffsmustern der beim Aufwachen ausgeführten Software ab. Bei einem Testsystem verkürzte sich die Resume-Zeit von 11,6 auf 1,1 Sekunden, wie Intel-Entwickler erklärten, die an den Änderungen mitgewirkt haben. Ihren Messungen zufolge sollen sich die Aufwachzeit zweier anderer Systeme von 5,5 auf unter 1 Sekunde reduziert haben.

Spürbare, wenn auch nicht ganz so deutlich Verbesserungen fanden wir bei drei Rechnern, die wir mit einer Vorabversion von Linux 3.15 versorgt hatten: Hier verringerte sich die zum Aufwachen benötigte Zeit um knapp die Hälfte. Ein Grund für den kleineren Effekt: Das von den Intel-Entwicklern verwendete Messprogramm betrachtet den Aufwachprozess als abgeschossen, wenn das Betriebssystem wieder voll arbeitet; der Bildschirm ist zu diesem Zeitpunkt aber oft noch einen Moment dunkel, da er noch initialisiert.

Zusätzlich zu den klassischen "POSIX Locks" beherrscht Linux jetzt "Open File Description Locks" (u. a. 1). Über beide Techniken können Prozesse und Threads den Dateizugriff koordinieren; das verhindert, dass ein Prozess einen Bereich einer Datei liest oder schreibt, den gerade ein anderer Prozess beschreibt. Der neue Locking-Ansatz ähnelt dem bei BSD verwendeten Sperrmechanismus, der eine ganze Reihe von Stolperfallen vermeidet, in die Programmierer mit POSIX Locks immer wieder tappen; einige davon bereiten etwa den Samba-Entwicklern seit langem Probleme.

Anders als bei "BSD Locks" lassen sich über den neuen Sperrmechanismus von Linux aber nicht nur komplette Dateien sperren, sondern wie bei POSIX Locks auch Dateibereiche.Der für den neuen Lock-Mechanismus zuständige Entwickler arbeitet noch an Glibc-Unterstützung für die neue Sperrtechnik, die unter dem Namen "File-private POSIX Locks" entwickelt wurde (1, 2); weitere Hintergründe zu Motivation und Arbeitsweise erläutert der Entwickler einem Artikel bei LWN.net.

Über den neuen Syscall "renameat2()" kann Software den Kernel anweisen, zwei Dateien atomar auszutauschen. Userspace-Programme sehen so entweder den alten oder neuen Zustand, nie aber einen der Zustände im Umbenennungsprozess. Das ist unter anderem zur sauberen Implementierung von Dateisystemen wichtig, die per "Union Mounting" mehrere Dateisysteme zu einem verbinden; das nutzen beispielsweise Live-Linuxe, um den Inhalt einer schreibgeschützten DVD mit dem Inhalt eines beschreibbaren USB-Sticks zu einem einzelnen Dateisystem zu verknüpfen, das alle neu geschriebenen Daten auf dem USB-Stick ablegt. Der neue Syscall ist damit ein wichtiger Schritt zur Union-Mount-Unterstützung im Kernel, auf die wechselnde Entwickler seit über fünfzehn Jahren hinarbeiten.

ASCII-Art-Beschreibung einer Funktion, aus der die Fallocate-Operationen COLLAPSE_RANGE hervorgegangen ist.

(Bild: Screenshot von gmane.org)

Das VFS (Virtual File System) von Linux bietet jetzt die Fallocate-Operation ZERO_RANGE, die Dateibereiche durch Nullen ersetzt, ohne diese tatsächlich schreiben zu müssen. Ebenfalls neu ist die Fallocate-Operation COLLAPSE_RANGE. Video-Schnitt-Software kann mit ihr schnell Bereiche aus Dateien herausschneiden, ohne dazu die anderen Bereiche der Datei kopieren zu müssen; das Entfernen von Werbung aus einer Fernsehaufzeichnung gelingt so in Sekundenschnelle. Dateisystem-seitig beherrschen allerdings vorerst nur Ext4 und XFS die beiden neuen Operationen (1, 2, 3, 4).

Das XFS-Dateisystem unterstützt nun das bei Linux 3.13 eingeführte Open-Flag O_TMPFILE, mit dem Prozesse temporäre Dateien anlegen können, die andere Prozesse nie zu sehen bekommen.

Die Kernel-seitige Teil von FUSE (Filesystem in Userspace) bietet nun einen Writeback-Cache, der die Schreib-Performance der als Userspace-Anwendungen implementierten Dateisystem-Module erheblich verbessern kann.

Der Thin-Provisioning-Code des Device Mapper (DM) soll durch einige Änderungen teilweise 70 Prozent schneller arbeiten, wenn mehrere Threads parallel schreiben. Neu dabei ist das DM-Target "era", das das Cache-Verhalten der vielfach für SSD-Caches eingesetzten DM-Cache verbessern kann.

Über den neuen UBI-Blocktreiber lassen sich Read-Only-Dateisysteme wie Squashfs auf Datenträger-Devices nutzen, die UBI (Unsorted Block Images) bereitstellt. Mit dem vornehmlich im Embedded-Bereich eingesetzten UBI lassen sich direkt angesprochene Flash-Chips zu einem Datenträger verbinden; dabei übernimmt UBI ähnliche Aufgaben wie ein Flash Translation Layer (FTL), durch die sich PC-SSDs wie normale Festplatten verwenden lassen.

Am Kernel-Code für Dateisysteme und Storage-Hardware gab es noch viele hundert andere Änderungen. Weitere Informationen zu diesen finden Sie über die folgenden Links auf Git-Merge-Commits, mit denen die wesentlichsten Neuerungen der beschriebenen Bereichen in Linux 3.15 eingeflossen sind; die zugehörigen Commit-Kommentare enthalten zumeist eine Beschreibung, welche die wichtigsten Änderungen des jeweiligen Subsystems umreißt.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf dem Twitter-Konto "@kernellog" annonciert. (thl) (thl)