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

Aldrin Martoq amartoq en dcc.uchile.cl
Mie Dic 31 18:08:32 CLST 2008


[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.

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).
- 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)


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.
- cuando escribe, escribe en ambos espejos. 500 escrituras son 100
escrituras por disco.

La formula seria:
operaciones/disco = (lecturas*2 + escrituras*2)/n_discos


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


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


> 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:

- 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.

- 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.

- el # operaciones por disco es un buen indicador: insisto en que el
real indicador debe ser el ancho de banda. el # operaciones no considera
que en la escritura de un stripe en RAID-5 hay un delay importante al
leer todos los discos y luego escribir 2 discos.

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
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
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.


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


-- 
Aldrin Martoq <amartoq en dcc.uchile.cl>
http://aldrin.martoq.cl/videopodcast/ http://aldrin.martoq.cl/techblog/
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 197 bytes
Descripción: This is a digitally signed message part
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20081231/7e5dea80/attachment.bin


Más información sobre la lista de distribución Linux