Miglioramento della velocità di scrittura mdadm RAID-6

Ho un mdadm RAID-6 nel mio server di casa di HDD 5x1Tb WD Green. La velocità di lettura è più che sufficiente: 268 Mb / s in dd. Ma la velocità di scrittura è di soli 37,1 Mb / s. (Entrambi testati tramite dd su file da 48 GB, la dimensione della RAM è 1 Gb, la dimensione del blocco utilizzata nei test è 8kb)

Potresti suggerire per quale motivo la velocità di scrittura è così bassa e quali sono i modi per migliorarla? L’utilizzo della CPU durante la scrittura è solo del 25% (ovvero metà del 1 core di Opteron 165) Nessun dato business-critical e server è supportato da UPS.

mdstat è:

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:  

Eventuali suggerimenti?

Cose come writeback, barrier, nobh non hanno aiutato. DD blocksize = 1M, 8M non ha modificato nulla. Sembra che mdadm legga fisicamente i settori per calcolare la parità anche se non ha importanza … È corretto?

Aggiornamento: la degradazione della velocità dopo la cache delle strisce alterata era in realtà perché 1 HDD probabilmente non è riuscito durante il test, bello 😀

Risolto: dopo aver aumentato la cache delle stripe e passato alla bitmap esterna, le mie velocità sono scritte in 160 Mb / s, le letture a 260 Mb / s. 😀

Hai provato tuning / sys / block / mdX / md / stripe_cache_size?

Secondo questo post sul forum (in norvegese, scusa) “la sintonizzazione di questo parametro è più essenziale più dischi e il sistema più veloce che hai”:

Sul mio sistema ottengo le migliori prestazioni usando il valore 8192. Se utilizzo il valore predefinito di 256, la performance in scrittura cala del 66%.

Citando la sua velocità per il confronto:

Dischi: 8xSeagate 2 TB LP (5900 RPM) in mdadm RAID6 (-n 512) (stripe_size_cache = 8192).

CPU: Intel X3430 (4×2.4GHz, 8GB DDR3 ECC RAM)

Velocità: scrittura sequenziale di 387 MB / s, lettura sequenziale di 704 MB / s, 669 ricerche casuali per secondo.

Il mio server di casa ha quasi gli stessi dischi di te, usando RAID 5:

Dischi: 4×1,5TB WD verde in RAID 5 (stripe_size_cache = 256 – il valore predefinito)

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

Velocità: 60 MB / s in scrittura sequenziale, 138 MB / s in lettura sequenziale (secondo Bonnie ++)

Quindi sembra che le prestazioni di scrittura sequenziali siano circa il 50% delle prestazioni di lettura.

Per quanto riguarda le prestazioni, Linux Raid Wiki dice di RAID 5:

Le letture sono quasi simili alle letture RAID-0, le scritture possono essere piuttosto costose (richiedono la lettura prima della scrittura, per essere in grado di calcolare le informazioni di parità corrette, ad esempio nelle operazioni del database) o simili a RAID-1 scrive (quando vengono eseguite scritture sequenziali più grandi e la parità può essere calcasting direttamente dagli altri blocchi da scrivere).

E su RAID 6:

Le prestazioni di lettura sono simili a quelle di RAID-5 ma le prestazioni di scrittura sono peggiori.

provare

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

e controlla;)