CEPH-Leistung deutlich schlechter als erwartet – Hilfe bei Optimierung

hunari

New Member
Jan 19, 2024
3
0
1
Hallo zusammen,

ich hoffe, jemand von euch kann mir bei folgendem Problem weiterhelfen. Wir betreiben ein 3-Node-Proxmox-Cluster mit Ceph als Speichersystem, und ich habe erhebliche Leistungsprobleme bei den Festplatten in einer Linux-VM festgestellt. Hier sind die relevanten Details:

Umgebung:

Proxmox Version: 6.8.8-2
Ceph Version: Reef
Ceph Pool: Replication Factor 2
Nodes: 3 Proxmox-Nodes, jeweils mit 4x Kingston DC600M 1920GB SSDs, 10 Gbit Netzwerkverbindung
VirtIO-Treiber: In der Linux-VM sind die VirtIO-Netzwerk- und SCSI-Treiber geladen.

Problem:

Die Schreib- und Lesegeschwindigkeit in der VM ist im Vergleich zu den Benchmarks auf Ceph sehr schlecht. Während Ceph beim sequentiellen Schreiben etwa 993 MB/s erreicht, zeigt die VM-Testumgebung deutlich geringere Werte.

FIO-Tests auf der VM:

Sequentielles Lesen:
• BW: 183 MiB/s, IOPS: 183
• Getestet mit: fio --name=seq_read --rw=read --size=1G --direct=1 --bs=1M --numjobs=1 --iodepth=8 --time_based --runtime=60 --group_reporting

Sequentielles Schreiben:
• BW: 73 MiB/s, IOPS: 73
• Getestet mit: fio --name=seq_write --rw=write --size=1G --direct=1 --bs=1M --numjobs=1 --iodepth=8 --time_based --runtime=60 --group_reporting

Random Read/Write 70/30 Mix (4K):
• Lesen: 7524 KiB/s (1882 IOPS), Schreiben: 3250 KiB/s (812 IOPS)
• Getestet mit: fio --name=rand_readwrite --rw=randrw --size=4G --direct=1 --bs=4k --numjobs=4 --time_based --runtime=60 --rwmixread=70 --group_reporting

Diese Ergebnisse sind weit unter dem, was von einem Ceph-Cluster mit SSDs zu erwarten wäre.


Bisherige Schritte:

1. VirtIO-Treiber: Überprüft, ob die VirtIO-Netzwerk- und SCSI-Treiber in der VM geladen sind:
• lsmod | grep virtio zeigt, dass die virtio_net und virtio_scsi Treiber geladen sind.
• lspci | grep -i virtio zeigt, dass sowohl das Netzwerk- als auch das SCSI-Interface über VirtIO laufen.

2. Ceph Performance: Direkte Tests auf Ceph mit rados bench zeigen viel höhere Werte (~700 MB/s).

3. Treiber-Überprüfung: Über dmesg und /sys/block wurde sichergestellt, dass die Festplatte über VirtIO läuft.

Fragen:


• Was könnte die Ursache für diese schlechten Schreib- und Leseleistungen in der VM sein?
• Welche weiteren Optimierungen könnten durchgeführt werden, um die Leistung der Festplatte in der VM zu verbessern?
• Gibt es bestimmte Ceph- oder Proxmox-Einstellungen, die hier angepasst werden sollten?

Ich bin für jede Hilfe und Tipps zur Optimierung der Leistung dankbar.

Vielen Dank im Voraus!
 
Ergänzung: Windows-Performance-Analyse

Zusätzlich habe ich die I/O-Performance auf einer Windows-VM gemessen. Die Ergebnisse zeigen ebenfalls eine enttäuschende Leistung im Vergleich zu den erwarteten Ceph-Werten. Hier sind die CrystalDiskMark-Ergebnisse als Referenz:


Sequential Read (1M, Q8T1): 734.54 MB/s
Sequential Write (1M, Q8T1): 293.34 MB/s
Random Read (4K, Q32T1): 105.39 MB/s
Random Write (4K, Q32T1): 39.50 MB/s
Random Read (4K, Q1T1): 4.05 MB/s
Random Write (4K, Q1T1): 1.52 MB/s



Obwohl die Lesegeschwindigkeiten im sequentiellen Bereich etwas besser sind als auf der Linux-VM, sind die Schreibgeschwindigkeiten immer noch nicht zufriedenstellend. Insbesondere die zufällige Schreibgeschwindigkeit ist deutlich zu niedrig.
 
Hallo zusammen,

ich hoffe, jemand von euch kann mir bei folgendem Problem weiterhelfen. Wir betreiben ein 3-Node-Proxmox-Cluster mit Ceph als Speichersystem, und ich habe erhebliche Leistungsprobleme bei den Festplatten in einer Linux-VM festgestellt. Hier sind die relevanten Details:

Umgebung:

Proxmox Version: 6.8.8-2
Ceph Version: Reef
Ceph Pool: Replication Factor 2
Ich hoffe du hast nicht wirklich Produktiv Replika von 2 eingestellt. Default ist 3/2 was bedeutet 3 Kopien und mindestens 2 online. Wenn bei der Einstellung 3/2 nur eine Kopie einer PG online ist, wird diese ReadOnly gesetzt. Bei einer Replika von 2/2 hast du bei jedem Reboot eines Nodes Downtime und bei 2/1 hast du bei Reboot eines Nodes eine hohe Gefahr auf Datenverlust, wenn in dem Moment eine Disk stirbt.
Nodes: 3 Proxmox-Nodes, jeweils mit 4x Kingston DC600M 1920GB SSDs, 10 Gbit Netzwerkverbindung
10GBit ist auch nicht viel, aber für SATA SSDs könnte das gerade so noch reichen. Dir sollte nur bewusst sein, dass du bei einer Replika von 3 bei 10GBit im Worst Case nur maximal 3,3 GBit Schreibleistung erreichst.
VirtIO-Treiber: In der Linux-VM sind die VirtIO-Netzwerk- und SCSI-Treiber geladen.

Problem:

Die Schreib- und Lesegeschwindigkeit in der VM ist im Vergleich zu den Benchmarks auf Ceph sehr schlecht. Während Ceph beim sequentiellen Schreiben etwa 993 MB/s erreicht, zeigt die VM-Testumgebung deutlich geringere Werte.

FIO-Tests auf der VM:

Sequentielles Lesen:
• BW: 183 MiB/s, IOPS: 183
• Getestet mit: fio --name=seq_read --rw=read --size=1G --direct=1 --bs=1M --numjobs=1 --iodepth=8 --time_based --runtime=60 --group_reporting

Sequentielles Schreiben:
• BW: 73 MiB/s, IOPS: 73
• Getestet mit: fio --name=seq_write --rw=write --size=1G --direct=1 --bs=1M --numjobs=1 --iodepth=8 --time_based --runtime=60 --group_reporting

Random Read/Write 70/30 Mix (4K):
• Lesen: 7524 KiB/s (1882 IOPS), Schreiben: 3250 KiB/s (812 IOPS)
• Getestet mit: fio --name=rand_readwrite --rw=randrw --size=4G --direct=1 --bs=4k --numjobs=4 --time_based --runtime=60 --rwmixread=70 --group_reporting

Diese Ergebnisse sind weit unter dem, was von einem Ceph-Cluster mit SSDs zu erwarten wäre.
Die wichtigsten Informationen fehlen hier aber noch, Wie viele CPU Kerne hat die VM? CPU Typ?
Wenn du I/O produzierst, brauchst du CPU Leistung. Also eine 1vCPU VM performt nicht. Auch der CPU Typ sollte auf host stehen, damit die maximale Performance abgerufen werden kann.
Hat dein Host z.B. 12 Kerne und du gibst der VM 12 Kerne, dann konkurieren der Prozess der VM mit den Prozessen von Ceph und du baust dir somit eine große Warteschlange auf der CPU.

Das sind schon mal die häufigsten Konfigurationsfehler. Wenn du mehr Details zu deiner Hardware und dem VM Sizing gibst, bekommst du auch mehr Tips.
 
Ich hoffe du hast nicht wirklich Produktiv Replika von 2 eingestellt. Default ist 3/2 was bedeutet 3 Kopien und mindestens 2 online. Wenn bei der Einstellung 3/2 nur eine Kopie einer PG online ist, wird diese ReadOnly gesetzt. Bei einer Replika von 2/2 hast du bei jedem Reboot eines Nodes Downtime und bei 2/1 hast du bei Reboot eines Nodes eine hohe Gefahr auf Datenverlust, wenn in dem Moment eine Disk stirbt.

10GBit ist auch nicht viel, aber für SATA SSDs könnte das gerade so noch reichen. Dir sollte nur bewusst sein, dass du bei einer Replika von 3 bei 10GBit im Worst Case nur maximal 3,3 GBit Schreibleistung erreichst.

Die wichtigsten Informationen fehlen hier aber noch, Wie viele CPU Kerne hat die VM? CPU Typ?
Wenn du I/O produzierst, brauchst du CPU Leistung. Also eine 1vCPU VM performt nicht. Auch der CPU Typ sollte auf host stehen, damit die maximale Performance abgerufen werden kann.
Hat dein Host z.B. 12 Kerne und du gibst der VM 12 Kerne, dann konkurieren der Prozess der VM mit den Prozessen von Ceph und du baust dir somit eine große Warteschlange auf der CPU.

Das sind schon mal die häufigsten Konfigurationsfehler. Wenn du mehr Details zu deiner Hardware und dem VM Sizing gibst, bekommst du auch mehr Tips.
Hi Falk,

vielen Dank für deine sehr schnelle Antwort.
Schau mal hier: https://forum.proxmox.com/threads/slow-performance-on-ceph-per-vm.151223/

Fie Aktivierung von KRBD auf dem Storage, die Einstellung des Cache auf Writeback und die Einstellung von io auf Threads löste das Problem.

Jetzt sind meine Erwartungen übertroffen worden. Ich erhalte 8000mb/s auf crystal diskmark read und 2200mb/s write, was das 10-fache von dem ist, was ich vorher hatte, und ich kann bereits die Leistung auf meinen dbs spüren.

Die Replikation werde ich wieder auf den Standard Wert heben, da es nur für Testzwecke runtergestuft worden ist von mir.

Zu den Informationen die du wolltest:

Netzwerk: 10G LACP müsste glaube ich für die Platten reichen. Nächstes Upgrade wäre dann eine Stufe höher im Netzwerk.
VM: 8 Kerne mit 16GB RAM CPU:Typ (Host). es handelt sich um 2x Intel Xeon CPU E5-2690 v3 @ 2.60GHz pro Host.

Zu meiner Frage: Welche Auswirkungen hat die Aktivierung von KRBD und die Options Cache Writeback und Async IO auf threads.
Woran liegt jetzt der enorme Performance unterschied.

Viele Dank für deinen Support
 
Hi Falk,

vielen Dank für deine sehr schnelle Antwort.
Schau mal hier: https://forum.proxmox.com/threads/slow-performance-on-ceph-per-vm.151223/

Fie Aktivierung von KRBD auf dem Storage, die Einstellung des Cache auf Writeback und die Einstellung von io auf Threads löste das Problem.
Also den Cache auf Writeback würde ich nicht produktiv nutzen. Threads bringt in einigen Umgebungen einen echten Vorteil.
KRBD ist noch etwas tiefer in der Materie. Bei KRBD connected der Kernel des Hosts auf die OSDs und gibt die Daten an die VMs weiter. Das kann gerade bei hoher Single VM Disk Leistung eine große Steigerung bringen. Der Klassische weg von RBD skaliert aber besser in die Breite wenn man mehrer Hundert oder Tausend VMs betreibt. Ich weiß es nicht genau, aber meine Beobachtungen sagen, dass krbd etwas mehr Last auf den CPUs erzeugt, aber ich habe dazu nie echte Benchmarks gemacht.
Jetzt sind meine Erwartungen übertroffen worden. Ich erhalte 8000mb/s auf crystal diskmark read und 2200mb/s write, was das 10-fache von dem ist, was ich vorher hatte, und ich kann bereits die Leistung auf meinen dbs spüren.

Die Replikation werde ich wieder auf den Standard Wert heben, da es nur für Testzwecke runtergestuft worden ist von mir.

Zu den Informationen die du wolltest:

Netzwerk: 10G LACP müsste glaube ich für die Platten reichen. Nächstes Upgrade wäre dann eine Stufe höher im Netzwerk.
VM: 8 Kerne mit 16GB RAM CPU:Typ (Host). es handelt sich um 2x Intel Xeon CPU E5-2690 v3 @ 2.60GHz pro Host.
DIe VM ist voll OK für DB Workload. Wenn du auf 25GBit oder 100GBit wechselst, hast du eine deutlich bessere Latenz, zu dem Mehr an Bandbreite.
P.S. 40GBit bringt kaum Verbesserunegn.
Zu meiner Frage: Welche Auswirkungen hat die Aktivierung von KRBD und die Options Cache Writeback und Async IO auf threads.
Woran liegt jetzt der enorme Performance unterschied.
Teste das bitte mal ohne Writeback.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!