Arxius

Traducción de la comparativa de velocidad de Software RAID en Linux

Escrit al 2005-11-18 00:00:00 per cpina

Hace unos dias publicamos este artículo en catalán. Gracias a Pep Ciuraneta de LinuxUPC también lo tenemos ahora en castellano.

En muchos sitios se comenta que RAID 1 Mirroring es muy lento, a veces parece que pueda ser tan lento que no es usable. También se comenta que RAID 0 Striped es mucho más rápido, pero no suele aparecer "¿Cuánto más rápido es?"

En el artículo se analizan las velocidades de dos discos duros haciendo operaciones usuales pero mesurables. A continuación se repiten las mesuras usando RAID 0 Linear, RAID 0 Striped y RAID 1 Mirroring. Se intenta sacar unas conclusiones, analizar los resultados de la comparativa, etc.

Índice



  • Introducción
  • Breve repaso de RAID
  • Información sobre las pruebas
  • Resultados
  • Conclusiones
  • Anexo



    Puntos principales: Resultados y conclusiones.

    Introducción


    Ya hace un tiempo que quería montar un RAID Espejo (Mirroring) en algunos ordenadores, usando Linux. Ahora hace días que empecé a buscar información.
    Evidentemente lo primero que intenté decidir es si haría RAID por hardware o bien por software. ¿Que ventajas, inconvenientes tiene cada uno? Una pequeña enumeración de las ventajas principales de cada uno podría ser:
    Hardware RAID:

  • Teóricamente más rápido
  • Se dice que falla menos, puede ser más fiable


    Software RAID:

  • Cuando se configura es mucho más flexible (discos duros diferentes sin problemas, ya que normalmente se hace a nivel de partición)
  • Más económico, no hace falta comprar ningún dispositivo
  • No se depende de una tarjeta RAID, que también se puede estropear
  • Tiene fama de gran lentitud


    Aún teniendo fama de ser más lento, la pregunta era... ¿El sistema con RAID 1 será demasiado lento? ¿Cuanto más lento respecto a no tener RAID? De hecho hay gente que dice al revés, que tener RAID 1 (aún por software) es mucho más rápido. En todo caso, ¿quien tiene razón?

    Por tanto principalmente se intentará responder la pregunta de si el RAID por software es mucho más lento que un disco normal. En el futuro quizá se repetirá la comparativa con RAID por software Vs. RAID por hardware.
    La única referencia encontrada sobre este tema, es el /dev/null (para tenerlo en buffers y cache) y después copiarlo al RAID (escrituras otra vez)

    Después, se descomprime con tar -xf linux.tar dentro del RAID (mayoritariamente hace escrituras, ya que lo hemos copiado y el sistema tiene suficiente memoria RAM y por tanto buena parte del fichero ya se encontrará allí.
    Para acabar hace un cp -rf linux-2.6.13 prueba/, el cual copia todo el árbol del Kernel de Linux, que son casi 300 MB.

    RESUMIENDO

  • Bonnie++ (operaciones variadas)
  • dd /dev/null fichero: escritura
  • cp fichero /dev/null: lectura
  • cat /noraid/linux.tar > /dev/null; cp /noraid/linux.tar /raid/linux.tar: escritura, pero poco. Fichero demasiado pequeño para grandes conclusiones... (el cat previo es para que el fichero se encuentre ya en memoria RAM)
  • tar -xf linux.tar: son unos 300 MB. Lecturas/escrituras
  • cp -rf linux/ directori: 300 MB de copia. Lecturas/escrituras


    Hace falta comentar que en todo momento se ha tomado como medida el "real time". De todas formas se ha podido observar que el "user time" y "system time" no tienen diferencias significativas entre un disco duro solo o configuraciones en RAID. Tendría que haber un consumo superior de CPU porque se hace el RAID vía Kernel y no en las controladoras. En las pruebas hechas no ha sido crítico ni limitador, sólo cuando sincroniza el sistema RAID 1 mirroring (normalmente, cuando se sincroniza el RAID por primera vez) utiliza mucha CPU, en otros casos no tendría que ser crítico y menos con las capacidades actuales de CPU.

    Concurrencia


    Aquí hay una clave del articulo. ¿Que pasa cuando hay más de un proceso accediendo al RAID? ¿Va más lento o más rápido que en un sólo disco duro? ¿En que RAIDs?
    Se han realizado las pruebas con un proceso, dos, tres y cuatro procesos concurrentes. Puede parecer poco interesante para entornos domésticos, pero son casos habituales en servidores (varias bases de datos accediendo simultáneamente, servidores de ficheros, Webs, etc.). Se han visto aspectos bastante interesantes, en relación a velocidades, concurrencia, RAID 0, RAID 1, etc.

    Repetición de las pruebas


    El conjunto de pruebas descrito anteriormente se ha repetido 4 veces (con la excepción de la de 4 procesos, que se ha repetido 3 veces) y se han extraído los resultados haciendo las medias. Les pruebas han sido automatizadas mediante un script, así se garantiza que siempre se siguen los mismos pasos.

    Resultados

    Tablas con los tiempos


    Comentar que el tiempo total es poco significativo: sólo que hubiera copiado más o menos MB podría haber invertido los resultados del mejor al peor. Cada persona ha de pensar qué operaciones acostumbra a hacer, intentar ver cuales son más parecidas y ver los resultados particulares.




    Resum table times            
                 
    1 Process (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie 07:08 07:06 07:07 07:03 06:31 07:35
    dd zero 7000M 02:39 02:39 02:39 02:41 02:05 04:01
    cp 7000M null 03:15 03:19 03:17 03:18 02:38 03:32
    cp linux.tar to RAID 00:04 00:05 00:04 00:04 00:05 00:05
    tar -xf linux.tar 00:29 00:27 00:28 00:25 00:25 00:31
    cp -rf linux test 00:58 00:57 00:57 00:49 00:50 01:01
    Total time 00:14:32 00:14:31 00:14:32 00:14:19 00:12:34 00:16:44
    % more slow 0,06% -0,06% 0,00% -1,46% -13,56% 15,17%
                 
                 
    2 Processes (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie 15:29 15:57 15:43 13:39 13:52 15:02
    dd zero 7000M 05:34 05:41 05:38 05:37 04:01 07:57
    cp 7000M null 06:00 07:54 06:57 07:12 06:33 05:39
    cp linux.tar to RAID 00:09 00:17 00:13 00:14 00:12 00:20
    tar -xf linux.tar 02:26 01:15 01:50 00:56 00:56 01:09
    cp -rf linux test 03:04 02:45 02:55 02:00 02:08 02:07
    Total time 00:32:41 00:33:49 00:33:15 00:29:38 00:27:42 00:32:13
    % more slow -1,70%1,70% 0,00% -10,87% -16,70% -3,11%
                 
                 
    3 Processes (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie 23:52 24:58 24:25 20:54 20:42 22:10
    dd zero 7000M 08:24 08:52 08:38 08:45 06:01 11:51
    cp 7000M null 09:30 12:56 11:13 12:38 09:25 08:12
    cp linux.tar to RAID 00:14 00:23 00:19 00:23 00:20 00:27
    tar -xf linux.tar 01:49 01:42 01:45 01:25 01:22 01:44
    cp -rf linux test 05:15 04:53 05:04 03:12 03:47 03:18
    Total time 00:49:04 00:53:45 00:51:25 00:47:18 00:41:36 00:47:43
    % more slow -4,55% 4,55% 0,00% -7,99% -19,08% -7,19%
                 
                 
    4 Processes (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie 32:44 34:07 33:25 28:02 27:5329:54
    dd zero 7000M 11:11 11:56 11:33 11:49 08:04 15:47
    cp 7000M null 12:47 17:35 15:11 17:23 12:36 10:02
    cp linux.tar to RAID 00:21 00:34 00:28 00:32 00:27 00:40
    tar -xf linux.tar 02:28 02:08 02:18 01:51 01:46 02:18
    cp -rf linux test 05:56 05:36 05:46 03:11 04:16 03:50
    Total time 01:05:26 01:11:55 01:08:41 01:02:48 00:55:02 01:02:31
    % more slow -4,72% 4,72% 0,00% -8,55% -19,86% -8,97%




    Tablas con porcentajes


    La última fila de cada tabla es el promedio de los porcentajes. No se hace el porcentaje sobre los tiempos ya que así se es independiente de la duración de cada prueba individual.







    Resume table 2            
                 
    1 Proces (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie 0,29% -0,29% 0,00% -1,00% -8,32% 6,50%
    dd zero 7000M -0,08% 0,08% 0,00% 1,18% -21,20% 52,09%
    cp 7000M null -0,95% 0,95% 0,00% 0,57% -19,87% 7,56%
    cp linux.tar to RAID -5,88% 5,88% 0,00% 0,00% 5,88% 23,53%
    tar -xf linux.tar 2,68% -2,68% 0,00% -11,61% -9,82% 9,82%
    cp -rf linux test 1,31% -1,31% 0,00% -14,41% -13,10% 5,68%
    Total time 00:14:32 00:14:31 00:14:32 00:14:19 00:12:34 00:16:44
    % slower 0,06% -0,06% 0,00% -1,46% -13,56% 15,17%
    % average slower -0,44% 0,44%0,00% -4,21% -11,07% 17,53%
                 
    2 Proceses (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie -1,46% 1,46% 0,00% -13,15% -11,77% -4,39%
    dd zero 7000M -1,06% 1,06% 0,00% -0,28% -28,49% 41,34%
    cp 7000M null -13,72% 13,72% 0,00% 3,76% -5,77% -18,70%
    cp linux.tar to RAID -32,04% 32,04% 0,00% 6,80% -6,80% 53,40%
    tar -xf linux.tar 32,12% -32,12% 0,00% -49,24% -49,69% -37,45%
    cp -rf linux test 5,26% -5,26% 0,00% -31,04% -26,53% -27,39%
    Total time 00:32:41 00:33:49 00:33:15 00:29:38 00:27:42 00:32:13
    % more slow -1,70% 1,70% 0,00% -10,87% -16,70% -3,11%
    % average slower -1,81% 1,81% 0,00% -13,86% -21,51% 1,14%
                 
    3 Proceses (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie -2,25% 2,25% 0,00% -14,39% -15,26% -9,22%
    dd zero 7000M -2,72% 2,72% 0,00% 1,31% -30,41% 37,18%
    cp 7000M null -15,30% 15,30% 0,00% 12,71% -16,04% -26,92%
    cp linux.tar to RAID -25,39% 25,39% 0,00% 25,39%8,76% 45,62%
    tar -xf linux.tar 3,13% -3,13% 0,00% -19,43% -22,36% -0,83%
    cp -rf linux test 3,60% -3,60% 0,00% -36,90% -25,51% -34,79%
    Total time 00:49:04 00:53:45 00:51:25 00:47:18 00:41:36 00:47:43
    % slower -4,55% 4,55% 0,00% -7,99% -19,08% -7,19%
    % average slower -6,49% 6,49% 0,00% -5,22% -16,80% 1,84%
                 
    4 Proceses (average)            
      Single disk 1 Single disk 2 Disks average RAID 0 Linear RAID 0 Striped RAID 1
    Bonnie -2,08% 2,08% 0,00% -16,10% -16,55% -10,54%
    dd zero 7000M -3,21% 3,21% 0,00% 2,20% -30,23% 36,65%
    cp 7000M null -15,85% 15,85% 0,00% 14,51% -16,97% -33,93%
    cp linux.tar to RAID -22,24% 22,24% 0,00% 17,40% -0,76% 46,44%
    tar -xf linux.tar 7,26%-7,26% 0,00% -19,30% -23,23% 0,18%
    cp -rf linux test 2,84% -2,84% 0,00% -44,82% -26,01% -33,57%
    Total time 01:05:26 01:11:55 01:08:41 01:02:48 00:55:02 01:02:31
    % slower -4,72% 4,72% 0,00% -8,55% -19,86% -8,97%
    % average slower -5,55% 5,55% 0,00% -7,69% -18,96% 0,87%



    Gráficas


    Las gráficas son respecto a los promedios de los porcentajes, al considerar-se más representativos que el tiempo.






    Conclusiones



    Se pueden sacar muchas conclusiones, pero principalmente se puede destacar:

  • RAID 1 Mirroring, 1 proceso. Es en conjunto el más lento. Un 17.5%, promediando los porcentajes parciales. Puede ser interesante intercambiar este incremento de tiempo por la seguridad que nos da en caso de que un disco duro resulte dañado. El incremento de tiempo depende mucho de qué operación se está haciendo. Las escrituras (dd /dev/null fitxer) lo penalizan mucho (50% más lento). El otro punto de lentitud (cp /home/carles/linux.tar /mnt/md0) puede ser poco significativo porque el proceso es demasiado corto. Se puede comprobar que si no se hubieran hecho las pruebas del dd o del cp resultaría tan solo entre un 5 y un 10% más lento (que concuerda con el resultado global del Bonnie, un 6% más lento). También añadir que si es un servidor de ficheros por red, Web sin Base de datos, etc. es posible que la velocidad de la red sea inferior a la velocidad del disco duro (es habitual). En estos casos la penalización de tiempo no se verá reflejada en el usuario (con la excepción de Bases de datos, que pueden hacer un uso muy intensivo del disco para acabar enviando por red muy poca información).

  • RAID 1 Mirroring, pero con 2, 3 y 4 procesos simultáneos. La velocidad tiende a igualar-se (con 2 y 3 procesos esta sobre un 1 o 2% más lento, con 4 procesos por debajo del 1%). Parece que las operaciones de escritura son las más penalizadas. Hace falta pensar y reflexionar... en nuestro sistema, ¿tenemos más escrituras o lecturas? En general hay muchas más lecturas (consultas) que escrituras. Normalmente, un dato se escribe una vez pero se lee muchas veces. También ver como en muchas pruebas (todas menos las del dd y cp) es más rápido que un sólo un disco. Es decir, nos puede aumentar la velocidad. Si observamos a Bonnie++, que hace el mismo unas pruebas equilibradas, es un 9% más rápido.

  • RAID 0 Striped. Tal y como era de esperar, mucho más rápido en casi todas las operaciones (con más de un proceso, en absolutamente todas). Si queremos, tan solo, incrementar la velocidad de nuestro sistema puede ser una buena solución: hacer RAID 0 Striped. Por ejemplo, es bastante utilizado en entornos de edición de vídeo, donde se gestionan grandes ficheros. La buena noticia es que no hace falta que sea RAID por hardware para acelerar, tal como se comenta normalmente, sino que vía software es suficiente y podemos ganar fácilmente hasta un 20% global (y en algunas operaciones, en 2 procesos, es hasta un 50% más rápido)

  • Raid 1 Mirroring VS Raid 0 Striped. Se puede ver fácilmente que las operaciones de escritura castigan mucho más el RAID 1 Mirroring que el RAID 0 Striped. En cambio, en las de lectura con varios procesos el RAID 1 llega a mejorar el RAID 0.


    Anexo


    La relatividad de las comparativas


    Cualquier comparativa (entendiéndose como un benchmark) es totalmente relativa, y se ha de leer con mucha precaución. De hecho, es posible que en cualquier comparativa gane el producto/configuración/programa A en todos los apartados menos en uno, en que gane el B. Globalmente A será mejor, pero se puede dar el caso que sólo nos interese el apartado que gane el B. Se ha de ser consciente. No hay ninguna comparativa que acabe extrayendo una verdad absoluta, es tan solo una simple guía para que cada persona evalúe activamente los productos expuestos, y sea crítico con el método. En el caso particular, se tendría que ver si los resultados tienen alguna relación con el hardware en concreto. Si se modifica la RAM, ¿cambiaran los resultados? No tiene porque, pero se ha de pensar. Y nuestro caso de uso, ¿se parece con este? ¿En que apartados? como último comentario, y de forma muy clara, puede ser posible que cambiando la medida de los chunk del RAID, o bien cambiando sencillamente el sistema de ficheros, los resultados sean diferentes. Así que se han de tomar como una mera orientación. Hay tantas configuraciones particulares como usos tiene el sistema, por tanto seria más fácil que cuando se tenga la configuración deseada hacer las pruebas, si fuera necesario, que no intentar adivinar todas las configuraciones (trabajo que no se acabaría nunca)

    El hardware


    El hardware utilizado para hacer las pruebas es un Pentium 3 a 860 MHz, con 756 MB de RAM y un Kernel 2.6.12. La distribución es Debian Sarge.

    El disco duro es un Western Digital de 80 GB, configurado con UDMA 5 como master del canal IDE primario (hda). El otro disco duro es un Seagate de 120 GB, configurado también con UDMA 5 y como master del canal IDE secundario (hdc). Puede parecer extraño tener dos discos duros diferentes en un RAID, en todo caso, seguramente acaba siendo más normal tener dos diferentes que no exactamente el mismo modelo.

    Enlaces



    Entre las páginas Web consultadas seguramente se pueden destacar:

  • Gentoo Install on Software RAID
  • Software RAID Howto



    Los datos


    Se puede descargar la hoja de cálculo con el conjunto de datos.


    Agradecimientos


    A Pep Ciuraneta de LinuxUPC por la traducción al castellano. Después de su traducción he modificado algunas cosas, así que es posible que haya añadido erratas. Mea culpa.
  • Categories: Articles, Servidor


    Comentaris

    • Muy bueno el articulo, gracias por compartirlo.

      Escrit al 2012-04-19 17:33:35 per cm.labs

    Arxius