%20Festplattenleistung%20bei%20I%2FO%20(Debian%2FProxmox).png)
Zusammenfassung
Ich sehe dramatisch schwankende I/O-Leistung auf einem ZFS-SSD-Spiegel in Proxmox VE 7 (Bullseye). Ich bin einfach zu sehr Anfänger, um das selbst herausfinden zu können.
Einzelheiten
Dies ist eine SEHR auffällig schlechte Leistung bei realen Aufgaben, es handelt sich also nicht nur um künstliche Benchmarks. Aber um die Diagnose zu erleichtern, führe ich Folgendes aus:
sysbench fileio --file-test-mode=rndrw run
Es läuft „Bare-Metal“ vom Proxmox-Terminal aus, ohne dass eine VM aktiv ist. Die Ergebnisse variieren stark. Hier sind zwei Beispiele:
File operations:
reads/s: 2316.07
writes/s: 1544.08
fsyncs/s: 4949.70
Throughput:
read, MiB/s: 36.19
written, MiB/s: 24.13
General statistics:
total time: 10.0062s
total number of events: 88040
Latency (ms):
min: 0.00
avg: 0.11
max: 35.66
95th percentile: 0.65
sum: 9947.54
Threads fairness:
events (avg/stddev): 88040.0000/0.00
execution time (avg/stddev): 9.9475/0.00
Und
File operations:
reads/s: 22.60
writes/s: 15.07
fsyncs/s: 56.98
Throughput:
read, MiB/s: 0.35
written, MiB/s: 0.24
General statistics:
total time: 10.6162s
total number of events: 877
Latency (ms):
min: 0.00
avg: 11.43
max: 340.62
95th percentile: 77.19
sum: 10020.19
Threads fairness:
events (avg/stddev): 877.0000/0.00
execution time (avg/stddev): 10.0202/0.00
Wie Sie sehen, gibt es eine 10.000-fache Schwankung in der Gesamtzahl der Ereignisse und eine massive Zunahme der Latenz. Diese Schwankungen sind nicht „einmalig“. Es gibt ständige Schwankungen zwischen diesen Extremen.
Ich habe mein Bestes getan, um einfache Hardwareprobleme einzugrenzen. Beide SSDs sind brandneu und alle 100er sind in Smartctl. Ich habe die SATA-Kabel ausgetauscht. Ich habe es mit herabgesetztem Spiegel laufen lassen, um zu versuchen, ein einzelnes Laufwerksproblem zu isolieren. Ich habe die Laufwerke auf einen separaten SATA-Controller verschoben. Nichts bringt mir ein anderes Ergebnis.
Ich habe einen zweiten Server, der auf ähnliche Weise konfiguriert ist, allerdings mit älteren (und nicht übereinstimmenden) SSDs im Spiegel. Dieses Problem tritt bei mir nicht auf. Die Serverhardware ist jedoch unterschiedlich. Die schlechten Ergebnisse stammen von dem unten beschriebenen System. Die „normal“ erscheinenden Ergebnisse stammen von einem alten, konvertierten PC mit einem E3-1275v2.
Ich hoffe auf Tipps zur Diagnose dieses Problems. Es scheint, dass das Problem an der Latenz liegt. Was kann die Ursache dafür sein? Welche nächsten Schritte sollte ich unternehmen?
Dank im Voraus!
System (falls es hilft)
- MB: Supermicro X9DRi-F
- CPU: Dual Xeon E5-2650 v2
- Arbeitsspeicher: 128 GB (8 x 16 GB)
- SATA-Controller: Onboard SATA 3 (separates SATA 2 ebenfalls getestet)
- SSD: 2x 1 GB TeamGroup SATA (ja, günstig, aber sollte reichen)
- PCIe-Karten:
- Mellanox MCX312B
- LSI SAS9207-8i (HBA mit 8 nicht gemounteten Festplatten verbunden...an VM weitergeleitet)
- Nvidia GTX 750 (an VM weitergegeben)
Antwort1
Etwas Ähnliches ist mir gestern mit meinem neuen Setup passiert: Proxmox VE 7 auf einem Intel 11500 mit 32 GB RAM und 2x SSD Crucial BX500 (diese sind Consumer-Grade), konfiguriert als ZFS-Mirror.
Ich habe einen Benchmark durchgeführt, indem ich dd
1 GB Nullen auf die SSD geschrieben habe und es lief mit 5 MB/s (ich weiß, dass dd
das nicht gut für Benchmarks ist, aber trotzdem...). Während des Benchmarks iostat
war es zu 100 % ausgelastet. In meinem Fall habe ich das Leistungsproblem gelöst, indem ich die SSDs getrimmt habe. Sie können es mit erzwingen zpool trim rpool
und Autotrim mit aktivieren zpool set autotrim=on rpool
. Nachdem ich die Festplatten getrimmt hatte, habe ich den Benchmark erneut ausgeführt und er lief in 7 Sekunden (153 MB/s).
Während des Prozesses, um herauszufinden, wie die Leistung verbessert werden kann, habe ich Folgendes eingestellt, xattr
wie sa
es in der empfohlen wirdProxmox-Wikiund ich habe zfs_arc_min
/ zfs_arc_max
und andere Kernelparameter angepasst.
Ich hoffe, das funktioniert auch bei Ihnen.
Antwort2
Sie sollten einen ZFS-Pool auf der SSD mit ashift=12 erstellen, um ihn an die 4096 Sektoren der SSD anzupassen.
Aktuellen Wert prüfen
zpool get all pool_name | grep ashift
Überprüfen Sie auch die Partitionsausrichtung auf 1 MB (2048 512-Byte-Sektoren).
Antwort3
ZFS ist ein Copy-on-Write-FS. Das ist sehr, sehr schlecht für billige SSDs. Sie können diese SSD direkt mit einem Windows-Rechner testen, indem Sie sie sicher löschen und einen vollständigen Schreibtest durchführen (ich glaube, HD Tune kann das), und Sie werden sehen, welche Leistung diese SSDs haben, wenn ihnen der SLC/RAM ausgeht … sie wird sehr schlecht sein … etwa 50–70 MB/s statt 500+ bei SATA. Außerdem verwenden einige billige SSDs System-RAM statt eines eigenen RAM-Moduls oder SLC-Cache, und das ist auch schlecht für ZFS. Ich hoffe, diese Hilfe hatte ein ähnliches Problem, das durch den Wechsel zu 980 Pro (aber kleinere Größe aus Kostengründen) gelöst wurde.