strip/block size y otros temas de RAID (largo)

Marcelo Espinosa Alliende marcelo en ubiobio.cl
Vie Ene 2 11:49:32 CLST 2009


El mié, 31-12-2008 a las 18:08 -0300, Aldrin Martoq escribió:
> [Yep, el termino stripe lo use muy mal]
> 
> On Wed, 2008-12-31 at 13:08 -0300, Marcelo Espinosa Alliende wrote:
> > El mié, 31-12-2008 a las 11:38 -0300, Aldrin Martoq escribió:
> > > 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. 
> 
> A ver, si es la cantidad de operaciones por disco lo estas calculando
> mal.

jejeje...

> 
> LOS SUPUESTOS aca son:
> - no hay cache o los datos no estan en el
> - la "escalabilidad" del numero de operaciones/disco es un buen
> indicador
> - raid 10 lee de ambos espejos (lo llamare RAID "nuevo" mas abajo)
> 
> 
> PARA RAID-5
> - si tenemos 500 lecturas a distribuir en 10 discos, cada disco debera
> ejecutar 500/9 lecturas (ya que un disco no almacena datos).

Hombre, se ocupan los 10 discos... la paridad se distribuye en todos los
discos... te imaginas si muere el disco que tiene la paridad? (según tu
lógica eso es un raid3) 

> - si tenemos 500 escrituras sobre 10 discos, cada escritura toma 2
> lecturas y 2 escrituras; luego cada disco hace 500*4/9 operaciones.
> 
> La formula es:
> operaciones/disco = (lecturas + escrituras*4)/(n_discos - 1)
> 

no... son "n_discos" a secas

> 
> PARA RAID-10 "viejo"
> - este es el RAID10 que supongo yo esta implementado
> - aca supongo que el raid _compara_ lo que lee desde un espejo y el otro
> - luego, 500 lecturas se duplican entre espejos, osea son 100 lecturas
> por disco.

supones mal, la redundancia se ocupa en este nivel cuando no puede
acceder exitosamente a la información requerida,  lo que hacen las
controladoras decentes (yo he ocupado de HP e IBM, no he tenido la mala
suerte -al parecer- de ocupar PERC :) es utilizar el disco espejo para
aprovechar de leer data adicional, no la misma data para comparar si
está bien o no.

Wikipedia:
"RAID 1 puede estar leyendo simultáneamente dos datos diferentes en dos
discos diferentes, por lo que su rendimiento se duplica."

RAID 10 es un nivel 0+1, es decir, un stripe espejado por lo que la
lógica de raid_1 aplica.

> - cuando escribe, escribe en ambos espejos. 500 escrituras son 100
> escrituras por disco.
> 
> La formula seria:
> operaciones/disco = (lecturas*2 + escrituras*2)/n_discos

menos, el espejo se usa sólo como redundancia... si no puede leer por
falla del disco maestro (sectores malos, etc...) recurre al espejo para
recuperar dicha información, no es un si o sí.  explicado arriba


> 
> 
> PARA RAID-10 "nuevo"
> - aca suponemos que las lecturas son alternadas entre espejos; luego 500
> lecturas son 500/10 = 50 lecturas por disco
> - cuando escribe, escribe en ambos espejos. 500 escrituras son 100
> escrituras por disco.
> 
> La formula seria:
> operaciones/disco = (lecturas + escrituras*2)/n_discos

que tiene de "nuevo" si esto *es* RAID_10 (ver correo original)

> 
> 
> Resumiendo en una tabla:
>                           operaciones/disco
> #disk #oper #read #write  RAID-5  RAID-10  RAID10 "nuevo"
> 10    500   100%  0%      55.56   100      50
> 10    500   90%   10%     72.22   100      55
> 10    500   75%   25%     97.22   100      62.50
> 10    500   50%   50%     138.89  100      75
> 10    500   0%    100%    222.22  100      100
> 

tu formula para raid5 no es correcta, raid10 (de tu tabla) no opera con
la lógica que mencionas, y el raid "nuevo" *es* el raid_10.

> 
> > 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... 
> 
> Hmm segun tu tabla original, RAID-10 siempre es mejor y en el caso 100%
> lectura es igual que RAID-5. Segun la mia, RAID-10 "nuevo" es mejor
> _siempre_. Eso en la practica es claramente incorrecto. Lo que esta mal
> de tu tabla y de mi tabla son los supuestos. Veamos los supuestos:

Los mios no son supuestos, simplemente es información obtenida de libros
de "performance tunning" que utilice para dictar clases de evaluación de
sistemas computacionales.

> 
> - no hay cache: ok, yo tambien jugaba sin cache. Puede que no tengas
> cache si lees/escribas data nunca vista. Pero ese no es un caso muy
> real, en el mejor caso (esta en cache) RAID-5 escribe en 2 discos, igual
> que RAID-10.

al escribir uno hará 4 IO's, la otra 2, nada más, nada menos :) y no
importa que esté usando cache de retro-escritura (write-caching), en
algún momento se llenará si hay muchas peticiones de escritura, luego
vendrá la contención...

> 
> - RAID-10 lee de ambos discos: me parece que esto no pasa en las
> controladores que he visto. Creyendole a mi tabla, RAID-10 debe ser
> SIEMPRE superior a RAID-5 (ya que tienes el ancho de banda de 10 discos
> en vez de 9 en modalidad lectura). Pero en la practica esto no sucede o
> no lo he visto.

bueno, no quiero ser catete, pero el tema lo estás viendo mal, yo no
digo que un nivel de raid sea mejor que otro, si tienes información sólo
de consulta, lejos!!! el mejor nivel que ofrece redundancia y
escalabilidad a bajo costo es el nivel_5, por el contrario, si hay mucha
escritura y gran volumen de información --> raid_10. 

Podría darse el caso de mucha escritura pero bajo volumen de información
--> Raid_1.

si no te interesa la redundancia, pero si la eficiencia --> Raid_0, éste
gana lejos en velocidad (R/W) 

> 
> - el # operaciones por disco es un buen indicador: insisto en que el
> real indicador debe ser el ancho de banda. el # operaciones no considera

bueno, las tarjetas RAID te entregan ese dato teórico, viene en la
cajita, o en las specs :)

> que en la escritura de un stripe en RAID-5 hay un delay importante al
> leer todos los discos y luego escribir 2 discos.

más de lo mismo... 

> 
> Tampoco estas considerando que en la escritura de un stripe, cuando
> escribes, escribes en los 10 discos. Si bien es "al mismo tiempo", el
> tema del tiempo de busqueda influye en el tiempo en que termine esa
           ^^^^^^^^^^^^^^^^^^
y?, no entiendo esto... ojo el modelo no habla de tiempo, habla de #
operaciones, y simplemente eso define la operaciones de los diferentes
modelos.

> operacion (por eso insisto que son 10 escrituras "al mismo tiempo").
> 
> Hay otro item que no ves con el indicador de #operaciones/disco: en
> RAID-5 tienes mucho mas espacio disponible. Entonces, un stripe almacena
> mas datos en un RAID-5 que en un RAID-10 (casi el doble). Esto significa

bueno, asumiendo que tienes el mismo nº de discos para ambos niveles en
tu comparación, obvio, el costo asociado por tener RAID 10 es casi el
doble para alcanzar la misma capacidad de almacenamiento de raid5, pero
hay organizaciones que lo requieren cuando se trata de almacenar
información critica y que tenga buen desempeño en las escrituras.

> que en cualquier operacion, si lees el taman~o de un stripe completo en
> RAID-5 solo ocuparas 1 vez los discos, en RAID-10 los ocuparas 2 veces.

simplemente no.

> 
> 
> Ya estoy convencido que RAID-10 debe ser mas rapido que RAID-5 en
> escrituras, pero dudo que sea apenas en un 10% ...

lo que pasa es que no has cruzado esto con la capacidad IO que soportan
los discos, cuando sobrepasas ese nivel por carga, simplemente se
produce encolamiento y aquí se friega todo (desde el punto de vista de
rendimiento).

En todo caso, lo mejor es que lo pruebes, por que nuevamente estas
suponiendo :)

bueno, creo que esto ya es off-topic, cualquier comentario al correo
personal mejor.

saludos!
> 
> 
-- 
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