9/02/07

Rendimiento de software RAID sobre Linux (2)

Continuamos las pruebas, ahora le toca el turno a el RAID10 sobre 4 discos (por si el número par afecta en algo):

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 64797 96 119486 21 48358 12 61408 95 98698 13 430.2 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 2734 7 +++++ +++ 2172 4 3093 10 +++++ +++ 1695 5

Rendimiento (E/L): +77% / +34%

Configuración con 4 discos en RAID1+0:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 65864 98 114191 23 42419 11 59552 97 124150 21 495.5 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 3248 12 +++++ +++ 2530 7 3060 13 +++++ +++ 1801 6

Rendimiento (E/L): +69% / +69%

Para los interesados, esta configuración la he construido con estas órdenes:

mdadm --create -n 2 -l 1 /dev/md1 /dev/sdb2 /dev/sdd2 --size 5000000
mdadm --create -n 2 -l 1 /dev/md3 /dev/sdc2 /dev/sda2 --size 5000000
mdadm --create -n 2 -l 0 /dev/md4 /dev/md1 /dev/md3
mkfs.xfs /dev/md4 -f
mount /dev/md4 test


Y ahora una prueba que es la que realmente me ha pasado por la cabeza como candidata, y para la que he realizado las pruebas. Montar RAID1 + LVM con stripping para simular RAID0. Ya que de todas formas voy a utilizar LVM quizás pueda aprovecharlo para obtener un buen rendimiento con una excelente flexilibilidad:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 66600 97 114477 24 44862 15 53496 95 120469 29 397.6 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 4115 24 +++++ +++ 4197 0 5103 28 +++++ +++ 1958 7

Rendimiento (E/L): +69% / +64%

Y finalmente poniendo todos los datos juntos, junto con la eficiencia de disco y el número de discos usados:

  • RAID5(5): +47% / +113% / 80%
  • RAID1(5): -17% / -9% / 20%
  • RAID10(5): +108% / +77% / 50%
  • RAID10(4): +69% / +69% / 50%
  • RAID1+LVM(4): +69% / +64% / 50%

¿Adivináis el que he escogido?

Actualizado (9/2/07): adjunto tabla resumen.

Nivel RAID Discos Escritura Lectura % Espacio % Escritura % Lectura
N/A 1 67512 73633 100 100% 100%
5 5 99400 157120 80 147% 213%
1 5 55983 67411 20 83% 92%
10 5 140498 130574 50 208% 177%
10 4 119486 98698 50 177% 134%
1+0 4 114191 124150 50 169% 169%
1+lvm(0) 4 114477 120469 50 170% 164%

Etiquetas: ,

Estabilidad y rendimiento de software RAID en Linux

Ha llegado el momento de renovar un servidor linux que, entre otras tareas, actua de servidor de ficheros. Así que necesita mucha capacidad y también un buen rendimiento. Los ficheros son pocos pero grandes. Hablamos de centenares de gigas, así que se mueve mucha información mediante red gigabit.

Para el nuevo servidor quiero probar diferentes configuraciones de RAID y LVM en cuanto a rendimiento. Ya que he de hacerlo yo mismo, he pensado compartir los datos por si a alguien le sirven. Que quede claro que las pruebas no son en absoluto cientificas, sino una burda aproximación para ayudar a tomar una decisión sobre la configuración.

Primero, la configuración hardware de la nueva máquina:
  • Placa base: Asus A8V-E SE
  • Procesador: Athlon 64 X2 4600+ (2 x 2.4 GHz)
  • Memoria: 2 GB DDR 400 (dual channel)
En cuanto a discos, la placa dispone de 2 conectores SATA y 2 PATA. He añadido una controladora PCI para 2 SATA adicionales (Conceptronic). Actualmente hay 5 discos duros, una mezcla variada. Como digo, la prueba dista de ser muy válida salvo como un ejemplo más. Hay discos de 300GiB y de 320GiB, de 8 y 16 MiB de cache y tanto PATA como SATA. Las marcas son Maxtor y Seagate.

Bien, lo primero es probar la estabilidad de la máquina para comprobar placa, procesador, memoria, discos y controladoras. Para ello, utilizo el paquete stress de Debian. Por cierto que el sistema instalado es Debian Etch (en testing actualmente) utilizando el instalador RC1. La arquitectura escogida es AMD64. He actualizado al último kernel, 2.6.18.

La prueba de stress con múltiples trabajos de CPU, memoria, IO y disco ha funcionado sin problemas durante 10 horas seguidas (aunque la caja y la fuente de alimentación se han calentado considerablemente).

Como sistema de ficheros utilizo XFS. Para las pruebas de rendimiento de disco hecho mano del paquete bonnie++.

Aquí van los primeros resultados:

Configuración con 5 discos en RAID5:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 61606 95 99400 26 38831 16 53337 93 157120 43 511.5 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 1843 8 +++++ +++ 1732 7 1806 7 +++++ +++ 751 4

Configuración con 5 discos en RAID1:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 54048 80 55983 9 27978 5 63971 95 67411 6 645.1 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 3070 3 +++++ +++ 2462 0 2960 2 +++++ +++ 1023 2

Configuración con 5 discos en RAID10:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 66499 98 140498 24 48772 12 58759 90 130574 18 611.0 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 3313 9 +++++ +++ 2528 4 3658 9 +++++ +++ 2401 5

Bien. Obviamente en cuanto a espacio de disco RAID5 ofrece la mayor capacidad (N-1), RAID1 la peor (1) y RAID10 un término medio (aprox. N/2).

Para tener una referencia ejecuto el mismo test sobre uno sólo de los discos:

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
ns1 4G 60706 92 67512 14 30783 5 55824 84 73633 5 212.6 0
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 375 2 +++++ +++ 299 1 358 2 +++++ +++ 208 1


En rendimiento un poco lo esperado. Para escritura / lectura:
  • RAID5: +47% / +113%
  • RAID1: -17% / -9%
  • RAID10: +108% / +77%
Continuará...

Etiquetas: ,