Verbesserung der mdadm RAID-6-Schreibgeschwindigkeit

8

Ich habe ein mdadm RAID-6 auf meinem Heimserver mit 5x1 TB WD Green HDDs. Die Lesegeschwindigkeit ist mehr als ausreichend - 268 Mb / s in dd. Die Schreibgeschwindigkeit beträgt jedoch nur 37,1 Mbit / s. (Beide wurden über dd in einer 48-GB-Datei getestet, die RAM-Größe beträgt 1 GB, die beim Testen verwendete Blockgröße 8 KB.)

Könnten Sie bitte vorschlagen, warum die Schreibgeschwindigkeit so niedrig ist und ob es Möglichkeiten gibt, sie zu verbessern? Die CPU-Auslastung während des Schreibens beträgt nur 25% (dh die Hälfte von 1 Kern von Opteron 165). Keine geschäftskritischen Daten dort und der Server ist UPS-gesichert.

mdstat ist:

Personalities : [raid6] [raid5] [raid4]
md0 : active raid6 sda1[0] sdd1[4] sde1[3] sdf1[2] sdb1[1]
      2929683456 blocks super 1.2 level 6, 1024k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/8 pages [0KB], 65536KB chunk

unused devices: <none>

Irgendwelche Vorschläge?

Dinge wie Rückschreiben, Barriere, Nobh haben nicht geholfen. DD-Blockgröße = 1M, 8M hat nichts geändert. Es sieht so aus, als würde mdadm Sektoren physisch lesen, um die Parität zu berechnen, auch wenn es keine Rolle spielt ... Ist das richtig?

Update: Die Geschwindigkeitsverschlechterung nach geändertem Stripe-Cache war tatsächlich darauf zurückzuführen, dass 1 Festplatte beim Testen wahrscheinlich ausgefallen ist. Schön :-D

Behoben: Nach dem Erhöhen des Stripe-Cache und dem Umschalten auf eine externe Bitmap beträgt meine Geschwindigkeit 160 Mbit / s Schreibvorgänge und 260 Mbit / s Lesevorgänge. :-D

BarsMonster
quelle
Hey Bars .. Was hast du optimiert und nach welcher Änderung ist die Leistung auf 120 MBit / s gesunken? Ich habe ein ähnliches Problem, aber meine Leistung ist viel schlechter :( Irgendwelche Vorschläge wären nützlich! Danke!
In meinem Fall hatte ich einen Diskfail mitten in der Optimierung :-)
BarsMonster

Antworten:

9

Haben Sie versucht, / sys / block / mdX / md / stripe_cache_size zu optimieren?

Laut diesem Forumsbeitrag (auf Norwegisch, sorry) "ist die Optimierung dieses Parameters umso wichtiger, je mehr Festplatten und je schneller Ihr System ist":

Auf meinem System erhalte ich die beste Leistung mit dem Wert 8192. Wenn ich den Standardwert 256 verwende, sinkt die Schreibleistung um 66%.

Zum Vergleich seine Geschwindigkeit zitieren:

Festplatten: 8xSeagate 2 TB LP (5900 U / min) in mdadm RAID6 (-n 512) (stripe_size_cache = 8192).

CPU: Intel X3430 (4 x 2,4 GHz, 8 GB DDR3 ECC RAM)

Geschwindigkeit: 387 MB / s sequentielles Schreiben, 704 MB / s sequentielles Lesen, 669 zufällige Suchvorgänge pro Sekunde.

Mein Heimserver hat mit RAID 5 fast die gleichen Festplatten wie Sie:

Festplatten: 4x1,5 TB WD Green in RAID 5 (stripe_size_cache = 256 - die Standardeinstellung)

CPU: Intel i7 920 (2,66 GHz, 6 GB RAM)

Geschwindigkeit: 60 MB / s sequentielles Schreiben, 138 MB / s sequentielles Lesen (gemäß Bonnie ++)

Es sieht also so aus, als ob die sequentielle Schreibleistung etwa 50% der Leseleistung beträgt.

Welche Leistung zu erwarten ist, sagt das Linux Raid Wiki über RAID 5:

Lesevorgänge ähneln fast RAID-0-Lesevorgängen. Schreibvorgänge können entweder recht teuer sein (das Einlesen vor dem Schreiben erfordert, um die richtigen Paritätsinformationen berechnen zu können, z. B. bei Datenbankoperationen), oder RAID-1 ähneln Schreibvorgänge (wenn größere sequentielle Schreibvorgänge ausgeführt werden und die Parität direkt aus den anderen zu schreibenden Blöcken berechnet werden kann).

Und zu RAID 6:

Die Leseleistung ähnelt der von RAID-5, die Schreibleistung ist jedoch schlechter.

jg-faustus
quelle
Schreibgeschwindigkeit auf 15-20 Mb / s gesunken, Lesegeschwindigkeit auf 110: -S Dies macht einfach keinen Sinn :-(
BarsMonster
Probieren Sie einige andere Werte aus und sehen Sie, was passiert. Kein Experte in diesem Bereich, aber ich habe WD Greens (4x1,5 TB) in md RAID 5 mit dem gleichen Problem - eher langsame Schreibgeschwindigkeit. Mein System ist momentan nicht verfügbar, aber ich werde auch am Ende experimentieren und hier aktualisieren, wenn es mir gelingt, es zu verbessern.
JG-Faustus
Übrigens: Haben Sie AHCI aktiviert? Welches Dateisystem - ext3, ext4?
JG-Faustus
Ich bin mir bei AHCI nicht sicher, aber es ist sehr schwierig, einen Blick auf das BIOS zu werfen. ext4.
BarsMonster
Verdammt, mit einer Lesegeschwindigkeit von 120 Mbit / s festgefahren, kann ich nicht zu meinem 268 zurückkehren :-( Das ist so frustrierend ... Ich verstehe nicht, warum mdadm Daten nicht linear mit ~ 3x90 Mb / s lesen oder schreiben kann. .. Es ist nur albern.
BarsMonster
4

Versuchen

echo 32768 > /sys/block/md0/md/stripe_cache_size

und prüfe ;)

DM1
quelle
In der vorherigen Antwort haben wir verschiedene stripe_cache_sizes getestet. Das Einstellen auf 32768 hat nichts verbessert. Ich bin immer noch bei ~ 100 MBit / s Schreibvorgänge auch nach dem Upgrade (E8500 CPU, 8 GB RAM und 8x1 TB Array)
BarsMonster
ABSURD! Das sofort meine Schreibleistung von ~ 70 MB / s auf ~ 360MB erhöht / s!?! Oh mein Gott. WTF ist das nicht Standard?!?
Stolsvik
Oh mein Wort. Das funktioniert wirklich ... Von [================> ....] Wiederherstellung = 82,1% (1604609136/1953382144) Ende = 122,7 Minuten Geschwindigkeit = 47348 K / Sek. Bis [ ================> ....] Wiederherstellung = 82,3% (1607712880/1953382144) Ende = 56,2 Minuten Geschwindigkeit = 102451 K / Sek.
Lmwangi
In meinen Tests scheint der Wert von 8192 ausreichend zu sein. Obwohl ich alles, womit ich testen musste, auf ein Array geworfen habe, konnte ich stripe_cache_active nicht dazu bringen, höher als die niedrigen 7000er zu spitzen.
Jody Lee Bruchon