Zwischenspeichert ZFS komprimierte oder nicht komprimierte Daten in einem ZFS-Dateisystem mit aktivierter Komprimierung?

8

ZFS unterstützt die Dateisystemkomprimierung und speichert häufig Daten, auf die häufig oder kürzlich zugegriffen wurde, zwischen.

Wenn ein System viel CPU hat, das zugrunde liegende Datenspeichersystem jedoch langsam ist. Es ist möglich, dass ZFS bei aktivierter Komprimierung eine bessere Leistung erzielt. Dies kann beim Schreiben von Dateien leicht getestet werden, indem die CPU- und Festplattenauslastung und der Durchsatz gemessen werden. (Natürlich kann Latenz vorhanden sein, aber dies wäre kein Problem für große Dateien).

Aber was ist mit dem Cache? Wenn Daten bei jedem Lesen dekomprimiert werden müssen, ist dies wahrscheinlich weniger eine gute Idee.

Werden die zwischengespeicherten Daten komprimiert? Hat jemand Informationen dazu?

Bryan Field
quelle

Antworten:

6

Ich habe Richard Elling, Ex-Sun-ZFS-Ingenieur, diese Frage gestellt. Er sagte mir, dass L2ARC nicht komprimiert ist, genau wie der ARC nicht komprimiert ist.

Leider kann ich keine Dokumentation oder Spezifikationen bereitstellen. Mein einziger Beweis ist, dass einer der Leute, die ZFS mitgestaltet haben, es mir persönlich erzählt hat, als ich ihn letzte Woche getroffen habe. :) :)

Robbyt
quelle
1
Es sieht so aus, als hätte illumos die Komprimierung für L2ARC hinzugefügt, Ihre ZFS-Distribution unterstützt dies jedoch möglicherweise nicht. wiki.illumos.org/display/illumos/L2ARC+Compression
Robbyt
2

Zwischengespeicherte Daten in ARC oder L2ARC sind immer unkomprimiert. Zeitraum. Andernfalls hätte jeder Lesevorgang von ARC oder L2ARC einen entsprechenden CPU-Overhead, der bei einigen Algorithmen erheblich sein könnte (ich sehe Sie bzip2). Angenommen, Komprimierung = Ja auf Ihrem Dateisystem (Ihren Dateisystemen), werden Daten auf Pooldatenträgern und der ZIL (falls zutreffend) immer komprimiert.

Sie haben Recht, wenn Sie Daten speichern, die gut komprimiert sind, und wenn ein System mit viel CPU, aber begrenzten E / A-Vorgängen bei aktivierter Komprimierung möglicherweise eine bessere Leistung erbringt. Dies ist kein einzigartiges Merkmal von ZFS. Sie finden zahlreiche Hinweise darauf, wie Sie die Komprimierung auf NTFS oder anderen Dateisystemen aktivieren können.

notpeter
quelle
1

Dies hat sich in den letzten Versionen von zfs geändert (zumindest unter Linux). Wir haben gerade einen Apfel-für-Apfel-Vergleich mit zwei 32k-Datensätzen durchgeführt, einer mit lz4-Komprimierung, der andere ohne. Der von arc verwendete Speicher war bei unkomprimiertem Speicher doppelt so hoch.

Es scheint, dass es normalerweise effizienter ist, die tatsächlich benötigten Daten in einen kurzfristigen Cache zu dekomprimieren, da der Arc-Cache häufig Daten einliest, die niemals angefordert werden. Es scheint, dass die Wahl getroffen wurde, um im Speicher zu komprimieren.

Ich sehe auch einige Parameter in der Datei / proc / spl / kstat / zfs / arcstats, die dies bestätigen:

c                               4    135156049920
c_min                           4    8447253120
c_max                           4    135156049920
size                            4    3288083480
compressed_size                 4    3070738432
uncompressed_size               4    9339208192

Dieses Commit sieht relevant aus https://www.illumos.org/issues/6950

Andrew
quelle
0

Ja. ZFS speichert häufig aufgerufene Daten in beiden Formen zwischen. Die Leistung mit dem Standardkomprimierungsschema ist gut und kostet nur wenig CPU-Zeit. Die Komprimierung erfolgt im laufenden Betrieb. Sie können dies noch weiter ausbauen, indem Sie ein SSD L2ARC-Cache-Gerät hinzufügen.

ewwhite
quelle
Wenn Sie "jede Form" sagen , bedeutet das, dass ich wählen kann, ob der Cache komprimiert ist?
Bryan Field
ARC und L2ARC sind aus offensichtlichen Leistungsgründen immer unkomprimiert. Daten werden nur beim Zugriff auf die Festplatte komprimiert / dekomprimiert.
Jlliagre
Jetzt sind ARC und L2ARC standardmäßig komprimiert.
ewwhite