strip/block size y otros temas de RAID (largo)
Marcelo Espinosa Alliende
marcelo en ubiobio.cl
Mie Dic 31 13:08:14 CLST 2008
El mié, 31-12-2008 a las 11:38 -0300, Aldrin Martoq escribió:
> On Wed, 2008-12-31 at 10:09 -0300, Marcelo Espinosa Alliende wrote:
> > El mar, 30-12-2008 a las 17:52 -0300, Aldrin Martoq escribió:
> > > Haz la prueba, de hecho en el primer link que mandaste el tipo muestra
> > > la conversa en una lista y del primer link:
> > > http://lists.us.dell.com/pipermail/linux-poweredge/2007-December/034160.html
> > >
> > > 10GB file:
> > > * RAID5 : 255MB/s
> > > * RAID10 : 224MB/s (???)
> > >
> > > 2 x 10GB file (simultaneos)
> > > * RAID5 : 2 x 36MB/s
> > > * RAID10 : 2 x 31MB/s (ouch!)
> > esos datos muestran que la controladora es deficiente, los datos
> > resultantes lo avalan, de hecho el mismo autor lo declara, no debieras
> > poner esto como ejemplo.
>
> Bueno, lo puse porque es similar a lo que obtuve yo en mis pruebas... y
> en tal caso es lo que importa, al fin y al cabo es lo que se va a usar.
>
>
> > el problema de raid 5 es que no escala bien con las escrituras... como
> > lo mencionó Horst, el número IO's que raid 5 es capaz de manejar se
> > determina por la formula siguiente:
> > [ IO_lecturas + (4 * IO_escrituras) ] / n°_discos
> > en el caso de raid 10 es
> > [ IO_lecturas + (2 * IO_escrituras)] / n°_discos
> > al incrementar el nº de discos mejora considerablemente la lectura
> > (analogía de los platos que mencionas) , y en el caso de la escritura
> > gana raid10 pues sólo se duplica la operación, no cuadriplica como en el
> > caso de raid5.
>
> Tienes razon en que me he fijado solo en la lectura. Ahora, esta parte
> no la entiendo, porque 4* y 2* ?
eso es solo para el caso de la escritura.
en raid_5 debes leer el stripe (1 "io"), más la paridad (otra "io"), ahí
tienes 2 IOs, luego modificas parte de la data, calculas la nueva
paridad y luego debes escribir el nuevo stripe más paridad, 2 IOs
nuevamente, ojo, no se hace todo junto, son operaciones separadas.
en raid_10 es "2" basicamente por que toda la data se duplica en su
espejo, osea 2 operaciones IO's por cada escritura.
>
> Si tienes 4 discos, escribir un stripe:
> - en raid5: significa leer 2 y escribir 2 stripes.
no... el stripe es único, y la operación está explicado arriba.
> - en raid10: significa escribir 4 stripes.
tampoco, es "1" stripe que cruza 2 discos, más su espejo (2 discos).
recuerda que el stripe cruza todos los discos. En el caso de raid 5 el
stripe ocupa N-1 discos y la paridad es distribuida.
>
> La penalidad de raid5 es que primero leo y luego escribo, mientras que
> en raid10 solo escribo. No veo la duplicidad ni cuadriplicidad _en
> tiempo_ de la operacion, estoy asumiendo que escribo/leo al mismo tiempo
> en todos los discos (como si fueran platos extras).
explicado arriba, ojo que aquí estamos mirando desde la controladora
hacia adentro. Efectivamente los discos leen y escriben en paralelo y en
el caso de raid10 las controladoras decentes utilizan el espejo además
para las lecturas (no está ahí sólo por si acaso falla un disco).
>
>
>
> Tambien hay algo extran~o en la formula, por lo siguiente:
>
> > un ejemplo para ilustrar lo anterior.
> >
> > carga de 500 I/Os con 10 discos para RAID5
> >
> > Lecturas Escrituras I/Os RAID_5
> > ----------------------------------------------------------
> > 100,00% 0,00% (500 + 0) / 10 = 50
> > 90,00% 10,00% (450 + 200) / 10 = 65
> > 75,00% 25,00% (375 + 500) /10 = 87,5
> > 50,00% 50,00% (250 + 1000) / 10 = 125
> > 0,00% 100,00% (0 + 2000) / 10 = 200
> >
> >
> > Lecturas Escrituras I/Os RAID_10
> > ----------------------------------------------------------
> > 100,00% 0,00% (500 + 0) /10 = 50
> > 90,00% 10,00% (450 + 100) / 10 = 55
> > 75,00% 25,00% (375 + 250) / 10 = 62.5
> > 50,00% 50,00% (250 + 500) / 10 = 75
> > 0,00% 100,00% (0 + 1000) / 10 = 100
>
> Con 10 discos y solo lectura deberias tener performance de 9x para
> raid-5 y 5x para raid-10; pero tus calculos no muestran eso.
no, el comportamiento en operaciones de IO es igual para ambos, aquí lo
que te dice es que cada disco va a manejar ese volumen de IOs y punto.
la comparación que haces no es justa, pues raid10 tendría que tener 20
discos (para hacer equivalentes los "stripes") y ahí claramente gana
raid10 (a un costo mas alto, claro).
>
> Me parece que estas calculando la carga que lleva cada disco (divides
> por el numero de discos) en vez del rendimiento (yo usaria alguna medida
> de ancho de banda, como KiB/s) para el conjunto en total.
aquí esta tu error... el tema se reduce a un sistema mecánico (discos)
que son capaces de realizar un numero finito (pequeño) de operaciones, y
eso limita el rendimiento del sistema RAID en concordancia con el nivel
seleccionado(0,1,5,10...), esto es independiente del ancho de banda,
para usar otra medida como BW entran otros factores a jugar (cache de
disco y de controladora, read ahead, write-caching, etc).
los datos y formulas muestran el comportamiento de cada nivel y su
escalabilidad, nada mas que eso.
por mucho cache que le pongas a la controladora, si tienes más de un 10%
de escrituras raid10 se va a comportar mejor que raid 5 y punto...
--
Marcelo Espinosa Alliende, mailto:marcelo en ubiobio.cl
Jefe Depto de Servicios Computacionales
Dirección de Informática - Universidad del Bío-Bio
fono: +56 (41) 2731531, http://marcelo.ubb.cl
Más información sobre la lista de distribución Linux