Dateisystem: OpenZFS nach Update mit massiv schnelleren Schreibvorgängen
Das Dateisystem OpenZFS soll nach einem Patch bei hoher Schreiblast einen nahezu doppelt so hohen Datendurchsatz erreichen. Das steckt dahinter.
- Michael Plura
Um bei OpenZFS einige Skalierungs- und Geschwindigkeitsbeschränkungen beim Schreiben auf den Datenträgern zu verbessern, hat Edmund Nadolski von iXsystems mehrere Änderungen veröffentlicht. Der neue Code erlaubt die gleichzeitige Synchronisierung von mehr als einem Datensatz oder Objekt. Als weitere Optimierung werden nach Möglichkeit genau so viele dnodes verarbeitet, wie es Allokatoren in einem Pool gibt. Ein dnode ist in OpenZFS eine Datenstruktur, die ein ZPL-Objekt (ZFS Posix Layer) darstellt. Dieses Objekt kann eine Datei, ein Verzeichnis oder ein ZVOL-Volume sein, aber auch andere interne Metadaten bezeichnen. Entfernt ist ein ZFS-dnode mit den inodes von UFS und anderen Dateisystemen vergleichbar.
Um Ă„nderungen an einem ZFS-Objekt, also beispielsweise einer Datei vorzunehmen, manipuliert ZFS den entsprechenden Bereich der Datei in Puffern im Arbeitsspeicher. Das Schreiben dieser Ă„nderungen auf die Festplatte erfolgt durch einen dnode sync
. Genau hier erkannte Nadolski ein Nadelöhr, weil dieser Vorgang bislang nicht parallel ablaufen konnte und sogar Sperrkonflikten auftraten. Mit seinem Patch #15197 will er dieses Problem lösen.
Seine Tests sind speziell, aber beeindruckend: Mit dem Flexible I/O Tester fio(1), der über mehrere Threads/Prozesse parallele I/O-Aktionen auslösen kann, führte Nadolski Tests auf einem 32-kernigen AMD-Epyc-7313-Server (je 16 Kerne, 256 GByte RAM, NVMe-Storage) mit OpenZFS durch. Der Datendurchsatz beim Schreiben verbesserte sich durch seinen Patch von 1328 MByte/s auf 2495 MByte/s. Ob der Patch zfs sync parallelism #15197 auch in der Praxis spürbar mehr Leistung bringt, müssen unabhängige Tests noch zeigen.
(fo)