it-swarm.com.de

Verbesserung der Schreibgeschwindigkeit von mdadm RAID-6

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

Könnten Sie bitte vorschlagen, warum die Schreibgeschwindigkeit so niedrig ist und gibt es Möglichkeiten, sie zu verbessern? Die CPU-Auslastung beim Schreiben beträgt nur 25% (d. H. Die Hälfte von 1 Kern von Opteron 165). Keine geschäftskritischen Daten vorhanden 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 blocksize = 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 ... Stimmt das?

pdate: Geschwindigkeitsverlust nach geändertem Stripe-Cache lag tatsächlich daran, dass 1 Festplatte beim Testen wahrscheinlich ausgefallen ist, Nice :-D

Gelöst: Nachdem ich den Stripe-Cache vergrößert und auf eine externe Bitmap umgeschaltet habe, liegen meine Geschwindigkeiten bei 160 Mbit/s Schreibgeschwindigkeit und 260 Mbit/s Lesegeschwindigkeit. :-D

6
BarsMonster

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

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

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

Zitiert seine Geschwindigkeit zum Vergleich:

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 verfügt über fast dieselben Festplatten wie Sie, die RAID 5 verwenden:

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

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

Geschwindigkeit: 60 MB/s sequentielles Schreiben, 138 MB/s sequentielles Lesen (nach Bonnie ++)

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

Für welche Leistung zu erwarten ist, sagt das Linux Raid Wiki über RAID 5:

Lesevorgänge sind RAID-0-Lesevorgängen fast ähnlich, Schreibvorgänge können entweder recht teuer sein (Einlesen vor dem Schreiben erforderlich, 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 RAID-5, die Schreibleistung ist jedoch schlechter.

9
j-g-faustus

versuchen

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

und prüfe ;)

4
DM1