Mejora de la velocidad de escritura mdadm RAID-6

8

Tengo un mdadm RAID-6 en mi servidor doméstico de 5x1Tb WD Green HDDs. La velocidad de lectura es más que suficiente: 268 Mb / s en dd. Pero la velocidad de escritura es de solo 37.1 Mb / s. (Ambos probados mediante dd en un archivo de 48 Gb, el tamaño de RAM es de 1 Gb, el tamaño de bloque utilizado en las pruebas es de 8 kb)

¿Podría sugerir por qué la velocidad de escritura es tan baja y hay alguna forma de mejorarla? El uso de la CPU durante la escritura es solo del 25% (es decir, la mitad de 1 núcleo de Opteron 165) No hay datos críticos de negocios allí y el servidor está respaldado por UPS.

mdstat es:

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>

¿Alguna sugerencia?

Cosas como reescritura, barrera, nobh no ayudaron. DD blocksize = 1M, 8M no cambió nada. Parece que mdadm lee físicamente sectores para calcular la paridad, incluso si no importa ... ¿Es eso correcto?

Actualización: la degradación de la velocidad después de la alteración de la memoria caché de bandas fue en realidad porque 1 HDD probablemente falló durante la prueba, agradable :-D

Resuelto: después de aumentar el caché de bandas y cambiar a un mapa de bits externo, mis velocidades son 160 Mb / s de escritura, 260 Mb / s de lectura. :-RE

BarsMonster
fuente
Hola Bars ... ¿Qué has ajustado y después de qué cambio el rendimiento bajó a 120Mb / s? Tengo un problema similar pero mi rendimiento es mucho peor :( ¡Cualquier sugerencia sería útil! ¡Gracias!
En mi caso, tuve un error de disco en medio de la optimización :-)
BarsMonster

Respuestas:

9

¿Has probado tuning / sys / block / mdX / md / stripe_cache_size?

Según esta publicación del foro (en noruego, lo siento) "ajustar este parámetro es más esencial cuanto más discos y más rápido tenga el sistema":

En mi sistema obtengo el mejor rendimiento usando el valor 8192. Si uso el valor predeterminado de 256, el rendimiento de escritura cae un 66%.

Citando su velocidad para comparar:

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

CPU: Intel X3430 (4x2.4GHz, 8GB DDR3 ECC RAM)

Velocidad: escritura secuencial de 387 MB / s, lectura secuencial de 704 MB / s, 669 búsquedas aleatorias por segundo.

Mi servidor doméstico tiene casi los mismos discos que usted, utilizando RAID 5:

Discos: 4x1.5TB WD Green en RAID 5 (stripe_size_cache = 256 - el valor predeterminado)

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

Velocidad: escritura secuencial de 60 MB / s, lectura secuencial de 138 MB / s (según Bonnie ++)

Por lo tanto, parece que el rendimiento de escritura secuencial es alrededor del 50% del rendimiento de lectura.

Para saber qué rendimiento esperar, Linux Raid Wiki dice acerca de RAID 5:

Las lecturas son casi similares a las lecturas RAID-0, las escrituras pueden ser bastante caras (requieren lectura antes de la escritura, para poder calcular la información de paridad correcta, como en las operaciones de la base de datos), o similares a RAID-1 escrituras (cuando se realizan escrituras secuenciales más grandes, y la paridad se puede calcular directamente a partir de los otros bloques que se escribirán).

Y sobre RAID 6:

El rendimiento de lectura es similar al RAID-5, pero el rendimiento de escritura es peor.

jg-faustus
fuente
La velocidad de escritura bajó a 15-20 Mb / s, la velocidad de lectura bajó a 110: -S Esto simplemente no tiene sentido :-(
BarsMonster
Pruebe algunos otros valores, vea lo que sucede. No soy un experto en esto, pero tengo WD Greens (4x1.5TB) en md RAID 5 con el mismo problema: velocidad de escritura bastante lenta. Mi sistema está inactivo en este momento, pero también experimentaré al final y actualizaré aquí si logro mejorarlo.
jg-faustus
Por cierto: ¿Tiene AHCI habilitado? ¿Qué sistema de archivos - ext3, ext4?
jg-faustus
No estoy seguro acerca de AHCI, es muy difícil echarle un vistazo al BIOS. ext4.
BarsMonster
Maldición, atascado con una velocidad de lectura de 120Mb / s, no puedo volver a mi 268 :-( Esto es tan frustrante ... No veo por qué no puedo leer o escribir datos linealmente a ~ 3x90 Mb / s. .. Es una tontería.
BarsMonster
4

tratar

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

y comprobar;)

DM1
fuente
En la respuesta anterior estábamos probando diferentes stripe_cache_sizes. Establecerlo en 32768 no mejoró nada. Todavía estoy a ~ 100Mb / seg escribe incluso después de la actualización (CPU E8500, 8Gb ram y matriz 8x1Tb)
BarsMonster
¡ABSURDO! ¡Eso aumentó instantáneamente mi rendimiento de escritura de ~ 70MB / s a ​​~ 360MB / s!?! Oh Dios mío. ¿WTF no es esto predeterminado?
stolsvik
Oh mi palabra. Esto realmente funciona ... Desde [================> ....] recuperación = 82.1% (1604609136/1953382144) acabado = 122.7min velocidad = 47348K / seg a [ ================> ....] recuperación = 82.3% (1607712880/1953382144) acabado = 56.2min velocidad = 102451K / seg
Lmwangi
En mis pruebas, el valor de 8192 parece suficiente. A pesar de arrojar todo lo que tenía que probar en una matriz, no pude lograr que stripe_cache_active subiera más que los 7000 bajos.
Jody Lee Bruchon