Linux md vs. rendimiento de LVM

8

Estoy tratando de sintonizar mi NAS, ejecutando openfiler, y me pregunto por qué estoy obteniendo un rendimiento de lectura relativamente pobre de 4 unidades WD RE3 en RAID 5.

EDITAR: tenga en cuenta que estoy hablando de la velocidad de lectura del disco almacenado en búfer no velocidades

EDITAR: Se modificó el formato para dejar en claro que hay dos conjuntos de salida.

Cuando ejecuto hdparm en el meta dispositivo, obtengo los niveles de rendimiento que esperaría, ¡caigo al volumen y es un tercio la velocidad!

Alguien alguna idea de por qué? ¿Es LVM tan malo?

Decano

Meta dispositivo / dev / md0 resultados

[root @ nas2, etc.] # hdparm -tT / dev / md0
/ dev / md0:
 Lecturas de tiempo en caché: 4636 MB en 2.00 segundos = 2318.96 MB / seg
 Lecturas de disco almacenadas temporalmente: 524 MB en 3.01 segundos = 174.04 MB / seg

Vol group / dev / mapper / vg1-vol1 resultados

[root @ nas2, etc.] # hdparm -tT / dev / mapper / vg1-vol1
/ dev / mapper / vg1-vol1:
 Lecturas de tiempo en caché: 4640 MB en 2.00 segundos = 2320.28 MB / seg
 Lecturas de disco almacenadas temporalmente: 200 MB en 3.01 segundos = 66.43 MB / seg.

Editar: consulte la sección de la página de manual de hdparm que sugiere que esta es una prueba perfectamente válida para el rendimiento de lectura secuencial, que es el problema que estoy tratando de resolver.

-t Realizar tiempos de lecturas de dispositivos para fines de referencia y comparación. Para obtener resultados significativos, esta operación debe repetirse 2-3 veces
              sistema inactivo (no hay otros procesos activos) con al menos un par de megabytes de memoria libre. Esto muestra la velocidad de lectura a través del búfer
              almacenar en caché en el disco sin ningún almacenamiento en caché previo de datos. Esta medición es una indicación de qué tan rápido el disco puede soportar lecturas secuenciales de datos bajo
              Linux, sin ningún gasto de sistema de archivos. Para garantizar mediciones precisas, la memoria caché del búfer se vacía durante el procesamiento de -t utilizando BLKFLSBUF
              ioctl. Si también se especifica el indicador -T, se incorporará un factor de corrección basado en el resultado de -T en el resultado informado para el -t
              operación.
Dean Smith
fuente
¿Intentaste pruebas como bonnie++?
SaveTheRbtz

Respuestas:

10

La configuración predeterminada de lectura previa para LVM es realmente pesimista. Intente blockdev --setra 8192 /dev/vg1/vol1y vea qué aumenta su rendimiento de LVM. Siempre recibirá un golpe de rendimiento con LVM; lo medimos en sistemas correctamente configurados con aproximadamente el 10% del rendimiento del dispositivo de bloque subyacente.

womble
fuente
4

No tengo una buena explicación, pero puedo confirmar los resultados.

Prueba de RAID (unidades raid5, 4x1.5TB)

root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2130 MB in  2.00 seconds = 1065.81 MB/sec
 Timing buffered disk reads:  358 MB in  3.00 seconds = 119.15 MB/sec
root@enterprise:# hdparm -tT /dev/md2
/dev/md2:
 Timing cached reads:   2168 MB in  2.00 seconds = 1084.54 MB/sec
 Timing buffered disk reads:  358 MB in  3.01 seconds = 119.10 MB/sec

prueba de volumen que utiliza md2 como dispositivo físico.

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2078 MB in  2.00 seconds = 1039.29 MB/sec
 Timing buffered disk reads:  176 MB in  3.03 seconds =  58.04 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2056 MB in  2.00 seconds = 1028.06 MB/sec
 Timing buffered disk reads:  154 MB in  3.03 seconds =  50.81 MB/sec

Hice el cambio propuesto por womble y vi resultados como este.

root@enterprise:# blockdev --setra 8192 /dev/mapper/vg2-data

root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2106 MB in  2.00 seconds = 1053.82 MB/sec
 Timing buffered disk reads:  298 MB in  3.00 seconds =  99.26 MB/sec
root@enterprise:# hdparm -tT /dev/mapper/vg2-data
/dev/mapper/vg2-data:
 Timing cached reads:   2044 MB in  2.00 seconds = 1022.25 MB/sec
 Timing buffered disk reads:  280 MB in  3.03 seconds =  92.45 MB/sec
revs Zoredache
fuente
3

Asegúrate de comparar manzanas con manzanas.

hdparm -t lee desde el principio del dispositivo, que también es la parte más rápida de su disco si le está dando un disco completo (y sus platos giratorios).

Asegúrese de compararlo con un LV desde el comienzo del disco.

Para ver el uso de mapeo pvdisplay -m.

(bueno, claro, la diferencia en los números puede ser insignificante. Pero al menos piénsalo :)

MikeyB
fuente
En realidad resulta que no es despreciable. Si uso el volumen que comienza en la extensión 0, el rendimiento es casi idéntico. Esto es parte de la respuesta, estoy seguro.
Dean Smith el
Actaully resulta que si el volumen está montado, el rendimiento es menor. Si desmonto, el rendimiento del volumen coincide con el del dispositivo sin formato. Sin embargo, esto todavía parece un poco extraño.
Dean Smith el
0

La carga de trabajo creada por hdparm -T no es representativa para casi cualquier caso de uso, excepto la transmisión de lecturas desde un único archivo grande. Además, si el rendimiento es una preocupación, no use raid5.

Jan Jungnickel
fuente
3
Correcto, no es representativo de una carga de trabajo real, no sugerí que lo fuera. Sin embargo, es útil para comparar velocidades de lectura de dispositivos sin formato. El metadispositivo y el volumen del grupo vol deben tener velocidades de lectura secuenciales sin procesar comparables y no tienen. Ese es el punto de la pregunta.
Dean Smith el
0

Puede averiguar dónde hdparm pasa su tiempo con blktrace (si está en E / S) u oprofile (si está en la CPU). Conocer la configuración de LVM también ayudaría (pvdisplay, vgdisplay, lvdisplay).


fuente