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
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:
Software RAID:
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
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:53 | 29: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:
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:
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.