GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Langsamer sequenzieller Lesevorgang im ZFS-Pool

Ich habe es geschafft, Geschwindigkeiten zu erreichen, die sehr nahe an den Zahlen liegen, die ich erwartet hatte.

Ich suchte nach 400 MB/s und verwaltete 392 MB/s . Also sage ich, das Problem ist gelöst. Mit dem späteren Hinzufügen eines Cache-Geräts schaffte ich 458 MB /sec gelesen (gecacht, glaube ich).

1. Dies wurde zunächst einfach durch eine Vergrößerung des ZFS-Datensatzes recordsize erreicht Wert auf 1M

zfs set recordsize=1M pool2/test

Ich glaube, diese Änderung führt nur zu weniger Festplattenaktivität und damit zu effizienteren großen synchronen Lese- und Schreibvorgängen. Genau das, wonach ich gefragt habe.

Ergebnisse nach der Änderung

  • bonnie++ =226 MB Schreiben, 392 MB Lesen
  • dd =260 MB schreiben, 392 MB lesen
  • 2 Prozesse parallel =227 MB schreiben, 396 MB lesen

2. Ich habe es sogar noch besser geschafft, als ich ein Cache-Gerät (120 GB SSD) hinzugefügt habe. Das Schreiben ist etwas langsamer, ich bin mir nicht sicher warum.

Version  1.97       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
igor            63G           208325  48 129343  28           458513  35 326.8  16

Der Trick mit dem Cache-Gerät bestand darin, l2arc_noprefetch=0 zu setzen in /etc/modprobe.d/zfs.conf . Es ermöglicht ZFS, Streaming-/sequenzielle Daten zwischenzuspeichern. Tun Sie dies nur, wenn Ihr Cache-Gerät schneller ist als Ihr Array, wie meines.

Nachdem ich von der Änderung der Datensatzgröße in meinem Datensatz profitiert hatte, dachte ich, dass dies ein ähnlicher Weg sein könnte, um mit einer schlechten Zvol-Leistung umzugehen.

Ich bin auf mehrere Leute gestoßen, die erwähnt haben, dass sie mit volblocksize=64k eine gute Leistung erzielt haben , also habe ich es versucht. Kein Glück.

zfs create -b 64k -V 120G pool/volume

Aber dann habe ich gelesen, dass ext4 (das Dateisystem, mit dem ich getestet habe) Optionen für RAID wie stride unterstützt und stripe-width , die ich noch nie benutzt habe. Also habe ich diese Seite verwendet, um die erforderlichen Einstellungen zu berechnen:https://busybox.net/~aldot/mkfs_stride.html und das zvol erneut formatiert.

mkfs.ext3 -b 4096 -E stride=16,stripe-width=32 /dev/zvol/pool/volume

Ich habe bonnie++ ausgeführt einen einfachen Benchmark zu machen und die Ergebnisse waren ausgezeichnet. Ich habe die Ergebnisse leider nicht bei mir, aber sie waren mindestens 5-6x schneller für Schreibvorgänge, soweit ich mich erinnere. Ich werde diese Antwort erneut aktualisieren, wenn ich erneut einen Benchmark durchführe.


Linux
  1. Fehlerbehebung bei langsamem WLAN unter Linux

  2. Langsame Windows-Anmeldungen

  3. Linux-Zwischenablage lesen/schreiben in C

  4. MySQL-Datenbank umbenennen

  5. Wie ersetze ich eine Festplatte in einem nicht redundanten ZFS-Pool?

Bash las Befehl

So lesen Sie eine Datei Zeile für Zeile in Bash

So richten Sie einen ZFS-Speicherpool unter Ubuntu ein

tar:kurz gelesen

Warum ist mein rsync so langsam?

Warum wird mein ZFS-Pool nicht mit ZFS unter Linux erweitert?