Next Previous Contents

8. Rendimiento

Queremos ofreceros información útil en esta sección. Queremos mostrar datos fidedignos acerca de cual es el rendimiento de un sistema usando RAID por software sobre Linux. Y para eso necesitamos que nos ayudéis.

Así que, por favor, si implementáis alguna solución RAID radicalmente diferente a las que constan en este documento, enviadnos los datos relativos a vuestro hardware, la carga que soporta la máquina cuando ejecutáis pruebas de medición en ella, y, por supuesto, los resultados de vuestros benchmarks (usando, por favor, software válido a tal efecto).

Nosotros, por nuestra parte, trataremos de publicar las muestras que nos parezcan interesantes, ilustrativas o especialmente significativas, siempre siguiendo nuestro criterio personal.

Gracias, por adelantado, por vuestra ayuda. Y ahora vamos con los datos que nosotros mismos hemos obtenido en nuestras máquinas.

Esta sección contiene varias pruebas de evaluación de prestaciones ("benchmarks") de un sistema real y en producción en donde se ha implementado una solución de RAID por software. También hay algo de información general sobre benchmarking.

Las mediciones las hemos tomado usando el programa bonnie y siempre con ficheros dos o más veces más grandes que el tamaño de la RAM física de la máquina.

Estas mediciones sólo miden el ancho de banda de entrada y de salida sobre un único gran fichero. Esto es interesante conocerlo si estáis interesados en obtener buen rendimiento de E/S para grandes lecturas/escrituras. Sin embargo, tales números nos dicen poco sobre cuál sería el rendimiento si el array se usara para un almacén temporal de noticias, un servidor web, etc. etc. Tened siempre en cuenta que los números de las evaluaciones son el resultado de ejecutar un programa "sintético". Pocos programas del mundo real hacen lo que bonnie hace y, aunque es interesante mirar estos números de E/S, no son indicadores en última instancia del rendimiento de los dispositivos del mundo real. Ni lo parecen ni lo pretenden.

Por ahora, sólo disponemos de los resultados de una máquina. Ahí va su configuración:

Parece casi imposible sacarle más de 30 MB/s a los buses SCSI de este sistema, usando RAID o no. Suponemos que eso es porque, como se trata de un ordenador bastante antiguo, el ancho de banda de la memoria RAM es muy pobre, y eso limita lo que puede moverse a través de las controladoras de disco.

8.1 RAID-0

Lectura significa entrada de bloques secuencial y Escritura significa salida de bloques secuencial. El tamaño de fichero fue de 1GB en todas las pruebas. Las pruebas se realizaron en modo monousuario. Se configuró el driver SCSI para que no encolara órdenes etiquetadas ("tagged command queuing", TCQ).


Tamaño de porción Tamaño de bloque Lectura kB/s Escritura kB/s
4k 1k 19712 18035
4k 4k 34048 27061
8k 1k 19301 18091
8k 4k 33920 27118
16k 1k 19330 18179
16k 2k 28161 23682
16k 4k 33990 27229
32k 1k 19251 18194
32k 4k 34071 26976

Con esto vemos que el tamaño de porción del RAID no importa mucho. Sin embargo, el tamaño de bloque del sistema de ficheros ext2 debería ser tan grande como fuera posible, lo cual significa 4KB (es decir, el tamaño de página) en una Arquitectura Intel de 32 bits.

8.2 RAID-0 con TCQ

Esta vez, el driver SCSI se configuró para usar TCQ, con una longitud de cola de 8. Por lo demás, todo es lo mismo de antes.


Tamaño de porción Tamaño de bloque Lectura kB/s Escritura kB/s
32k 4k 33617 27215

No se realizaron más pruebas. TCQ pareció incrementar ligeramente el rendimiento de las escrituras, pero la verdad es que apenas se notó la diferencia.

8.3 RAID-5

El array se configuró para funcionar en el modo RAID-5 y se hicieron pruebas similares.


Tamaño de porción Tamaño de bloque Lectura kB/s Escritura kB/s
8k 1k 11090 6874
8k 4k 13474 12229
32k 1k 11442 8291
32k 2k 16089 10926
32k 4k 18724 12627

En este caso, tanto el tamaño de porción como el tamaño de bloque son mucho más significativos.

8.4 RAID-10

Un RAID-10 no es más que un array RAID-1 de dos arrays RAID-0. El tamaño de porción es tanto el tamaño de las porciones del array RAID-1 como del array RAID-0. No se realizaron pruebas en las que esos tamaños de porción fueran diferentes, aunque esa debería ser una configuración perfectamente válida.


Tamaño de porción Tamaño de bloque Lectura kB/s Escritura kB/s
32k 1k 13753 11580
32k 4k 23432 22249

No se realizaron más pruebas. El tamaño de fichero fue de 900MB debido a que las cuatro particiones involucradas eran de 500 MB cada una, lo cual no deja espacio para un fichero de 1GB en esta configuración (RAID-1 sobre dos arrays de 1000MB).

8.5 Nuevas herramientas de benchmarking

No uséis hdparm para testar el rendimiento de vuestros sistemas RAID, eso no hará evaluaciones reales de vuestros arrays.

En lugar de hdparm, echad un vistazo a las herramientas que describimos aquí: IOzone y Bonnie++.

IOzone es una herramienta pequeña, versátil y moderna. Saca benchmarks de rendimiento de E/S sobre ficheros para operaciones como read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read y aio_write. Y corre sobre ext2, ext3, reiserfs, JFS y XFS.

Podéis usar IOzone para expresar el rendimiento de E/S en función del número de procesos y número de discos del sistema de archivos, algo útil cuando se trata de medir soluciones de RAID-0.

Aunque la documentación de IOzone está disponible en PDF, PostScript, nroff y MS Word, vamos a cubrir aquí un bonito ejemplo de IOzone en acción:

iozone -s 4096 
Eso ejecuta unos tests usando un archivo de 4096KB.

Y este es un resultado de muestra

        File size set to 4096 KB
        Output is in Kbytes/sec
        Time Resolution = 0.000001 seconds.
        Processor cache size set to 1024 Kbytes.
        Processor cache line size set to 32 bytes.
        File stride size set to 17 * record size.
                                                            random  random    bkwd  record  stride            
              KB  reclen   write rewrite    read    reread    read   write    read rewrite    read   fwrite frewrite   fread  freread
            4096       4   99028  194722   285873   298063  265560  170737  398600  436346  380952    91651   127212  288309   292633
NOTA: las funciones que hacen a IOzone útil para el benchmarking de RAID son las operaciones sobre ficheros read strided.

Bonnie++ parece más orientado a hacer pruebas de rendimiento en dispositivos sueltos que en un conjunto RAID, pero puede pasarle benchmarks a más de 2GB de datos en máquinas de 32 bits, y testar operaciones sobre archivos como creat, stat, unlink.


Next Previous Contents