HP DL380 G7 + Smart Array P410i + sysbench -> bajo rendimiento de raid 10


8

Tengo un sistema en ejecución con baja utilización de IO:

  1. HP DL380G7 (24 gb de RAM)
  2. Smart Array p410i con 512 MB de caché de escritura respaldada por batería
  3. 6 unidades SAS 10k rpm 146gb en RAID10
  4. Debian Squeze linux, ext4 + LVM, hpacucli instalado

iostat (cciss / c0d1 = matriz raid10, dm-7 = partición lvm 60G para prueba):

Dispositivo: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await svctm% util
cciss / c0d0 0,00 101,20 0,00 6,20 0,00 0,42 138,58 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 395,20 3,20 130,20 0,18 2,05 34,29 0,04 0,26 0,16 2,08
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 3,20 391,00 0,18 1,53 8,87 0,04 0,11 0,05 1,84
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 106,80 0,00 0,42 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,60 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 2,80 0,00 0,01 8,00 0,00 0,00 0,00 0,00
dm-1 0,00 0,00 0,00 132,00 0,00 0,52 8,00 0,00 0,02 0,01 0,16
dm-7 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

hpacucli "Ctrl all show config"

Smart Array P410i en la ranura 0 (integrada) (sn: 5001438011FF14E0)

   matriz A (SAS, espacio no utilizado: 0 MB)


      Logicaldrive 1 (136.7 GB, RAID 1, OK)

      physicaldrive 1I: 1: 1 (puerto 1I: casilla 1: bahía 1, SAS, 146 GB, OK)
      physicaldrive 1I: 1: 2 (puerto 1I: casilla 1: bahía 2, SAS, 146 GB, OK)

   matriz B (SAS, espacio no utilizado: 0 MB)


      Logicaldrive 2 (410.1 GB, RAID 1 + 0, OK)

      physicaldrive 1I: 1: 3 (puerto 1I: casilla 1: bahía 3, SAS, 146 GB, OK)
      physicaldrive 1I: 1: 4 (puerto 1I: casilla 1: bahía 4, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 5 (puerto 2I: casilla 1: bahía 5, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 6 (puerto 2I: casilla 1: bahía 6, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 7 (puerto 2I: casilla 1: bahía 7, SAS, 146 GB, OK)
      physicaldrive 2I: 1: 8 (puerto 2I: casilla 1: bahía 8, SAS, 146 GB, OK)

   SEP (ID del proveedor PMCSIERA, modelo SRC 8x6G) 250 (WWID: 5001438011FF14EF)

hpacucli "Ctrl Mostrar todo el estado"

Smart Array P410i en la ranura 0 (integrado)
   Estado del controlador: OK
   Estado de caché: OK
   Estado de la batería / condensador: OK

Comando Sysbench

sysbench --init-rng = on --test = fileio --num-threads = 16 --file-num = 128 --file-block-size = 4K --file-total-size = 54G --file-test -mode = rndrd --file-fsync-freq = 0 --file-fsync-end = fuera de ejecución --max-request = 30000

Resultados de Sysbench

sysbench 0.4.12: punto de referencia de evaluación del sistema de subprocesos múltiples

Ejecutando la prueba con las siguientes opciones:
Número de hilos: 16
Inicializando el generador de números aleatorios desde el temporizador.


Banderas adicionales para abrir archivos: 0
128 archivos, 432Mb cada uno
Tamaño total de archivo de 54 Gb
Tamaño de bloque 4Kb
Número de solicitudes aleatorias para E / S aleatorias: 30000
Relación lectura / escritura para prueba de E / S aleatoria combinada: 1.50
Usar el modo de E / S sincrónico
Haciendo prueba de lectura aleatoria
¡Hilos comenzados!
Hecho.

Operaciones realizadas: 30000 Lectura, 0 Escritura, 0 Otros = 30000 Total
Lectura 117.19Mb Escrito 0b Total transferido 117.19Mb (935.71Kb / seg)
  233.93 Solicitudes / seg ejecutadas

Resumen de ejecución de prueba:
    tiempo total: 128.2455s
    cantidad total de eventos: 30000
    tiempo total empleado en la ejecución del evento: 2051.5525
    estadísticas por solicitud:
         min: 0.00ms
         promedio: 68.39ms
         max: 2010.15ms
         aprox. Percentil 95: 660.40ms

Hilos de equidad:
    eventos (avg / stddev): 1875.0000 / 111.75
    tiempo de ejecución (avg / stddev): 128.2220 / 0.02

iostat durante la prueba

avg-cpu:% user% nice% system% iowait% steal% inactivo
           0,00 0,01 0,10 31,03 0,00 68,86

Dispositivo: rrqm / s wrqm / sr / sw / s rMB / s wMB / s avgrq-sz avgqu-sz await svctm% util
cciss / c0d0 0,00 0,10 0,00 0,60 0,00 0,00 9,33 0,00 0,00 0,00 0,00
cciss / c0d1 0,00 46,30 208,50 1,30 0,82 0,10 8,99 29,03 119,75 4,77 100,00
dm-0 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-2 0,00 0,00 0,00 51,60 0,00 0,20 8,00 49,72 877,26 19,38 100,00
dm-3 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-4 0,00 0,00 0,00 0,70 0,00 0,00 8,00 0,00 0,00 0,00 0,00
dm-5 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00
dm-6 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-1 0,00 0,00 0,00 0,00 0,00 0,00 0,00 7,00 0,00 0,00 100,00
dm-7 0,00 0,00 208,50 0,00 0,82 0,00 8,04 25,00 75,29 4,80 100,00
dm-8 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00

Bonnie ++ v1.96

cmd: / usr / sbin / bonnie ++ -c 16 -n 0

Escribir un byte a la vez ... hecho
Escritura inteligente ... hecho
Reescribiendo ... hecho
Leyendo un byte a la vez ... hecho
Lectura inteligente ... hecho
comenzarlos ... hecho ... hecho ... hecho ... hecho ... hecho ... hecho ...
Versión 1.96 ------ Salida secuencial ------ - Entrada secuencial- --Random-
Concurrencia 16 -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Tamaño de la máquina K / seg% CP K / seg% CP K / seg% CP K / seg% CP K / seg% CP / seg% CP
seo-db 48304M 819 99 188274 17 98395 8 2652 78 201280 8 265.2 1
Latencia 14899us 726ms 15194ms 100ms 122ms 665ms

1.96,1.96, seo-db, 16,1337541936,48304M ,, 819,99,188274,17,98395,8,2652,78,201280,8,265.2,1 ,,,,,,,,,,,,,, ,,,, 14899us, 726ms, 15194ms, 100ms, 122ms, 665ms ,,,,,,

Preguntas

Entonces, sysbench mostró 234 lecturas aleatorias por segundo.
Espero que sea al menos 400.
¿Cuál puede ser el cuello de botella? LVM?
Otro sistema con unidades mdadm raid1 + 2x 7200rpm muestra más de 200 lecturas aleatorias por segundo ...

¡Gracias por cualquier ayuda!


¿Cuál es el tamaño de la raya? iostat parece que sysbench estaba trabajando en una sola unidad física.
Dmitri Chubarov

hpacucli dice que el tamaño de la tira es de 256k. Los dispositivos DM-x del iostat no son unidades físicas, sino particiones lvm. DM-7 es una partición lvm de 60 gb, donde ejecuté sysbench.
Oleg Golovanov

¿Qué estás probando exactamente con esta sysbenchlínea de comando en particular ? ¿Estás simulando un escenario de uso del mundo real?
ewwhite

Estoy simulando la base de datos PostgreSql, que internamente usa bloques de 4kb. Mi aplicación realiza muchas lecturas / escrituras aleatorias en archivos de datos grandes (la aplicación se detuvo en el momento de la prueba)
Oleg Golovanov

Respuestas:


10

Su sistema definitivamente tiene un rendimiento inferior en función de sus especificaciones de hardware. Cargué la sysbenchutilidad en un par de servidores inactivos HP ProLiant DL380 G6 / G7 que ejecutan CentOS 5/6 para verificar su rendimiento. Estas son particiones fijas normales en lugar de LVM. (Normalmente no uso LVM, debido a la flexibilidad que ofrecen los controladores HP Smart Array)

El DL380 G6 tiene una matriz RAID 1 + 0 de 6 discos en un controlador Smart Array P410 con 512 MB de caché respaldada por batería. El DL380 G7 tiene una matriz SSD SLC empresarial de 2 discos. Los sistemas de archivos son XFS . Usé la misma línea de comando sysbench que tú:

sysbench --init-rng=on --test=fileio --num-threads=16 --file-num=128 --file-block-size=4K --file-total-size=54G --file-test-mode=rndrd --file-fsync-freq=0 --file-fsync-end=off --max-requests=30000 run

Mis resultados fueron 1595 lecturas aleatorias por segundo en 6 discos.
En SSD, el resultado fue 39047 lecturas aleatorias por segundo . Los resultados completos están al final de esta publicación ...

  • En cuanto a su configuración, lo primero que me llama la atención es el tamaño de su partición de prueba. Casi está llenando la partición de 60 GB con 54 GB de archivos de prueba. No estoy seguro de si ext4 tiene un problema con un rendimiento de más del 90%, pero eso es lo más rápido para modificar y volver a probar. (o use un conjunto más pequeño de datos de prueba)

  • Incluso con LVM, hay algunas opciones de ajuste disponibles en esta configuración de controlador / disco. Es útil verificar la lectura anticipada y cambiar la configuración del planificador de E / S de la cfq predeterminada a la fecha límite o noop . Consulte la pregunta y las respuestas en: Linux : ajuste del controlador RAID de hardware del mundo real (scsi y cciss)

  • ¿Cuál es la proporción de caché de su controlador RAID? Normalmente uso un balance de lectura / escritura del 75% / 25%. Esto debería ser una prueba rápida. La matriz de 6 discos se completó en 18 segundos. La tuya tomó más de 2 minutos.

  • ¿Se puede ejecutar una prueba bonnie ++ o iozone en la partición / matriz en cuestión? Sería útil ver si hay otros cuellos de botella en el sistema. No estaba familiarizado con sysbench , pero creo que estas otras herramientas le darán una mejor visión general de las capacidades del sistema.

  • Las opciones de montaje del sistema de archivos pueden hacer una pequeña diferencia, pero creo que el problema podría ser más profundo que eso ...

salida de hpacucli ...

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (838.1 GB, RAID 1+0, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, OK)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

Resultados de 6 discos sysbench DL380 G6 ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.

Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30001 Read, 0 Write, 0 Other = 30001 Total
Read 117.19Mb  Written 0b  Total transferred 117.19Mb  (6.2292Mb/sec)
 1594.67 Requests/sec executed

Test execution summary:
    total time:                          18.8133s
    total number of events:              30001
    total time taken by event execution: 300.7545
    per-request statistics:
         min:                                  0.00ms
         avg:                                 10.02ms
         max:                                277.41ms
         approx.  95 percentile:              25.58ms

Threads fairness:
    events (avg/stddev):           1875.0625/41.46
    execution time (avg/stddev):   18.7972/0.01

Resultados de SSD sysbench DL380 G7 ...

sysbench 0.4.12:  multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 16
Initializing random number generator from timer.


Extra file open flags: 0
128 files, 432Mb each
54Gb total file size
Block size 4Kb
Number of random requests for random IO: 30000
Read/Write ratio for combined random IO test: 1.50
Using synchronous I/O mode
Doing random read test
Threads started!
Done.

Operations performed:  30038 Read, 0 Write, 0 Other = 30038 Total
Read 117.34Mb  Written 0b  Total transferred 117.34Mb  (152.53Mb/sec)
39046.89 Requests/sec executed

Test execution summary:
    total time:                          0.7693s
    total number of events:              30038
    total time taken by event execution: 12.2631
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.41ms
         max:                                  1.89ms
         approx.  95 percentile:               0.57ms

Threads fairness:
    events (avg/stddev):           1877.3750/15.59
    execution time (avg/stddev):   0.7664/0.00

Gracias por la respuesta detallada! Sus resultados son impresionantes ... >> Normalmente no uso LVM, especialmente con la flexibilidad que ofrecen los controladores RAID HP ¿Qué tipo de flexibilidad quiere decir? >> ¿Cuál es la proporción de caché de su controlador RAID? 75/25, predeterminado) >> Creo que el problema es más profundo que eso ... ¡sí! Agregué los resultados de bonnie ++ v1.96 al final de mi publicación principal. Parece que los resultados no son tan buenos :( Al principio, intentaré alejarme de LVM y volver a ejecutar la prueba. Si no ayuda, supongo, hay algo mal con el controlador de incursión.
Oleg Golovanov

¿Puedes mostrar tu bonnie++línea de comando?
ewwhite

Disculpa, me equivoque. Línea de comando: / usr / sbin / bonnie ++ -c 16 -n 0
Oleg Golovanov

3
¡Cambié el planificador de cfq a noop, y los resultados de referencia aumentaron dramáticamente! )) Ahora, sysbench me muestra más de 1500 lecturas aleatorias / segundo ... Muchas, muchas gracias :)
Oleg Golovanov

1
Intente deadlinetambién ... Bajo cargas de DB, puede funcionar mejor que noop, además, hay algunos ajustables adicionales en su /sys/block/cciss1/queue/iosched/si lo usa deadline. Vea esta publicación para más detalles sobre afinaciones más finas. Pude hacer esa prueba hasta 2600 lecturas aleatorias / segundo al hacerlo.
ewwhite
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.