Kernel-Log – Was 2.6.38 bringt (2): Dateisysteme

Linux 2.6.38 enthält die schon seit über einem halben Jahr viel diskutierten und von Torvalds heiß erwarteten Patches, die die Skalierbarkeit des VFS verbessern. Ext3 und XFS beherrschen nun das für SSDs interessante Batched Discard; Btrfs und SquashFS unterstützten neue Kompressionstechniken.

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

Am Mittwoch hat Linus Torvalds die fünfte Vorabversion der Ende März erwarteten Kernel-Version 2.6.38 freigegeben und dabei angemerkt, dass einige Fehler korrigiert worden seien, aber keine Änderung besonders hervor sticht und die Dinge ziemlich normal aussehen. Das Kernel-Log nimmt das zum Anlass, den Überblick über die wichtigsten Neuerungen von Linux 2.6.38 mit dem zweiten Teil der Mini-Serie "Was 2.6.38 bringt" fortzusetzen. Die wichtigsten Änderungen rund um Grafiktreiber hatten wir bereits im ersten Teil beschrieben; in den kommenden Wochen folgen noch Artikel zur Netzwerkunterstützung, zu Storage-Hardware, Treibern sowie Architektur- und Infrastruktur-Code.

Die für 2.6.38 integrierten Optimierungen am VFS (Virtual File System), das Basis-Funktionen für alle Dateisysteme bereitstellt, waren Torvalds besonders wichtig, denn er erwähnte sie mit einer gewissen Begeisterung und recht ausführlich in der Mail zur ersten Vorabversion von 2.6.38 (u. a. 1, 2, 3, 4, 5, 6, 7). Durch diese unter Namen wie "RCU-based name lookup" entwickelten Änderungen nutzt das VFS, das allen Dateisystemen zugrunde liegt, feineres Locking mit RCU (Read Copy Update), was unter anderem einige Verzeichnisoperationen erheblich beschleunigen soll. Davon sollen nicht nur größere Server mit vielen Prozessorkernen, sondern auch Allerweltssysteme profitieren; Torvalds gibt in der Freigabemail an, bei bestimmten Tests Performance-Verbesserungen von 30 bis 50 Prozent zu sehen. Bereits in einer früheren Mail zur Aufnahme der tief greifenden Optimierungen an dem – für die zuverlässige Funktion des Kernels sehr wichtigen – VFS hatte er geschrieben, dass ein mit gefüllten Caches in seinem Home-Verzeichnis ausgeführtes Find-Kommando rund 35 Prozent schneller arbeite – und das, obwohl Find nur mit einem Thread arbeite.

Die Entwicklung der Optimierungen hatte Nick Piggin über ein Jahr lang vorangetrieben. Torvalds hätte Vorläufer der Patches, die auch unter Bezeichnungen wie "vfs-scale" und "RCU-walk" kursieren, schon bei 2.6.36 integrieren wollen – die beteiligten Entwickler einigten sich damals aber darauf, nur einige recht ungefährliche Änderungen als Grundlage zu integrieren. Weitere Änderungen folgten bei 2.6.37, wo ein anderer Entwickler ähnlich gelagerte und teilweise auf Piggins Ideen basierende Optimierungen für das VFS vorstellte, was zu Diskussionen über die beste Herangehensweise führte. Details dazu und nähere Erklärungen zur Funktionsweise der jetzt und in den vergangenen Monaten vorgenommenen VFS-Änderungen liefert lwn.net in den englischsprachigen Artikeln "VFS scalability patches in 2.6.36", "Resolving the inode scalability discussion" und "Dcache scalability and RCU-walk"; einige für Dateisystementwickler wichtige Hinweise erläutert Piggin in einer LKML-Mail.

Ext3 und XFS werden mit 2.6.38 das beim 37er-Kernel eingeführte Batched Discard unterstützen, das insbesondere für SSDs mit langsamer Trim-Funktion wichtig ist (1, 2, 3). In der Commit-Message zur XFS-Änderung weist Christoph Hellwig explizit darauf hin, den Batched Discard nicht während normaler Workloads anzustoßen, da die Suche nach freien Speicherbereichen größere Performance-Einbußen mit sich bringt. Einige weitere der in 2.6.37 und 2.6.38 eingeflossenen XFS-Änderungen erwähnt der Kernel-Hacker im "XFS status update for January 2011" – darunter einige Optimierungen am Locking-Code des Log-Subsystems, das dadurch deutlich besser skalieren soll.

Commit-Kommentar mit Messwerten zur neuen LZO-Kompression in Btrfs.

Im Merge Window von 2.6.37 hatten die Kernel-Hacker einige Patches zum Steigern der Ext4-Performance integriert; die darunter befindliche und große Zuwächse versprechende "Multiple Page-IO Submission" mussten sie allerdings aufgrund ungelöster Probleme kurz vor Fertigstellung dieser Kernel-Version deaktivieren. Diese Fehler wurden zwischenzeitlich korrigiert – teilweise jedoch erst in der Stabilisierungsphase von 2.6.38. Die über eine Option einschaltbare Technik bleibt daher auch in 2.6.38 ausgeschaltet und soll im Merge Window von 2.6.39 wieder standardmäßig aktiviert werden.

Das weiterhin experimentelle COW-Dateisystem Btrfs kann zur transparenten Kompression neben Zlib nun auch LZO nutzen, das typischerweise erheblich schneller, aber nicht ganz so effizient packt; einige Messwerte, die das untermauern, und einen Vergleich zu einem unkomprimierten Dateisystem liefert der Commit-Kommentar (1, 2). Btrtfs beherrscht nun auch schreibgeschützte Snapshots; in seinem Haupt-Git-Pull-Request erwähnt Btrfs-Entwickler Chris Mason zudem einige Korrekturen im Code zur Unterstützung von Dateisystemen, die mehrere Datenträger überspannen.