Vielen Dank schonmal für die Hinweise.
Den VM-1 werden wir dann wohl mittelfristig austauschen.
Aber um das nochmal etwas klarer zusammen zu fassen:
Der problematische Server mit hohem IO Wait ist VM-1.
Auf diesem Server sind die Festplatten via Broadcom HBA 9400-8i angeschlossen. Das ist laut Broadcom ein HBA, kein RAID Controller. Auf den anderen Maschinen z.B. VM-2, wo kein hohes IO Wait zu beobachten ist, sind LSI MegaRaid SAS 9271-8i Controller verbaut.
Das verstehe ich. Wir haben allerdings noch einen weiteren Server im Cluster der nur 8 Kerne hat. Bei diesem ist die IO Wait zwar auch leicht höher als bei den 48 Kernern, aber bei weitem nicht so sehr.
Das kommt auf die Menge der Arbeit an, die eine CPU abarbeitet.
Sowohl auf VM-1, als auch auf dem anderen Server mit den 8 Kernen, läuft keine VM, weil die RAM Ausstattung dort nicht so gut ist. Die beiden machen quasi nur Storage für Ceph.
Bezogen auf die Precondition für Ceph aus den Docs:
Code:
DB/WAL auf SSD -> Check
Balance OSD count / WAL DB Device -> Check
gleichmäßige Verteilung von HDDs auf die Server -> Check
gleiche HDD Größe -> Check
Für VM-1 gilt ja auch sogar "kein RAID -> Check"
Die Gesamtperformance ist ja soweit okay, also wenn ich genug Threads aufmache, dann erreiche ich die vollen 10GBits der Netzwerkanbindung und für den gesamten Cluster reicht die Performance auch aus, weil die Performance ja mit der Anzahl der parallelen Zugriffe skaliert.
Der rados bench zeigt aber eine meiner Meinung nach eher mittelmäßige bis schlechte Performance bei Single Thread Zugriffen. Es ist schon merkwürdig, 32 recht aktuelle flotte Festplatten anzusteuern und dann kommen z.B. beim Datei kopieren Datenraten von 50-70MB/s oder teilweise nur 20MB/s zustande und die IO Wait Time auf VM-1 steigt irre in die Höhe ohne das dieser viel tut.
Bevor ich aber nun Geld in die Hand nehme, einen neuen Server kaufe, oder neue HBAs bestelle, um die Performance bei einzelnen Schreibvorgängen wie Dateien kopieren, Backups erstellen oder rum schieben etc. zu verbessern, versuche ich irgendwie herauszufinden welche der Möglichkeiten der Bottleneck ist.
Mit gehen dabei folgende Dinge durch den Kopf:
- CPU und RAM auf VM-1 ist einfach Mist, insbesondere die CPU hat einfach nicht genug Power. Deshalb entsteht auch bei kleinen Lastspitzen sofort hohes IO Wait.
Das passt allerdings nicht mit meinem Verständnis von IO Wait überein. Das ist ja lediglich die Wartezeit des CPU bis der Speicher die Anfrage beantwortet hat. Wenn die CPU sonst keine Aufgaben hat ergibt das für mich aber irgendwie wenig Sinn wie das mit der Anzahl der Kerne und der Taktrate zusammen hängen sollte. 10% IO Wait bedeutet ja lediglich das die CPU pro Sekunde etwa 100ms auf IO wartet.
- Die RAID Controller maskieren das IO Wait auf den beiden dicken Servern und die Performance leidet in Wirklichkeit gar nicht unter dem "hohen" IO Wait auf VM-1 sondern darunter, dass die RAID Controller auf den beiden dicken Servern irgendwas wildes machen.
Ich habe mit rados bench ein paar Versuche gemacht und folgendes zeichnet sich ab:
kleine Blocksize (4k) & wenig Threads (1) -> sehr geringe Performance (um 1MB/s), kaum erhöhtes IO Wait auf VM-1
große Blocksize (16M) & wenig Threads (1) -> eher geringe Performance (um 100MB/s), leicht erhöhtes IO Wait auf VM-1
kleine Blocksize (4k) & viele Threads (128) -> sehr geringe Performance (12MB/s), stark erhöhtes IO Wait auf VM-1 (35-40%)
große Blocksize (16M) & viele Threads (128) -> mittelmäßige Performance (300-450MB/s), leicht erhöhtes IO Wait auf VM-1
In allen Fällen war IO Wait auf den großen Servern VM-2 und 3 fast unverändert. man sieht nur einen leichten Buckel