[MASOCH-L] Performance em ReiserFS

João Carlos Mendes Luis jonny at jonny.eng.br
Mon Jan 2 17:53:25 BRST 2006


marcos rocha wrote:
> vc esta certo, concordo com vc qdo vc diz que a
> performance de leitura do raid 5 eh semelhante ao raid
> 0.
> mas, discordo qdo vc diz que o processo de leitura do
> raid 5 eh mais lento que o processo de leitura do raid
> 1 por causa das colisoes, pois o sistema raid 1
> utiliza somente um disco para realizar o processo de
> leitura - o disco master e o acesso aos blocos de
>   

Ai que está seu erro.  Nenhum sistema de RAID1 decente faz todas as 
leituras no mesmo disco.  Ele espalha os pedidos entre os dois.

Voce tem documentação de algum sistema que faça RAID1 dessa forma?

> dados eh sequencial enquanto que o sistema raid 5,
> mesmo com 3 discos e havendo colisao(pior dos casos),
> utiliza todos os discos ao mesmo tempo para fazer a
> leitura dos blocos de dados.
> se imaginarmos um arquivo composto de 6 blocos de
> dados, teriamos:
> - no raid 1: leitura sequencial dos 6 blocos de dados,
> sendo que sera utilizado somente um unico disco para
> se fazer a leitura. o outro disco eh utilizado somente
> se houver problemas no disco master.
> - no raid 5: leitura sequencial dos blocos de dados em
> paralelo, ou seja, precisamos ler apenas 2 blocos de
> dados de cada disco.
> acredito que ler sequencialmente 2 blocos de dados eh
> mais rapido que ler sequencialmente 6 blocos de dados.
> em qualquer caso, a qtde de blocos de dados que
> precisam ser lidos sequencialmente no sistema raid 5
> sempre sera menor que no sistema raid 1.
>   

    Na verdade a otimização poderia ser diferente.  A melhor otimização 
para RAID1 é dividir os requests por grupos, e não por blocos.  Assim, 
se existe dois request, de 6 blocos cada, cada request deveria para um 
disco diferente, minimizando assim o tempo de seek.  Junte a isso o TCQ, 
e teremos um desempenho formidável.  Essa otimização por grupos, 
entretanto, não é comum, e a maioria das controladoras e drivers não faz 
dessa forma, optando pela versão simples, setor-pra-lá, setor-pra-cá.

    Com o RAID5 não existe essa opção, pois os dados estão espalhados 
nos discos, e não tem como escolher de qual disco ler.

    Uma implementação de RAID1 que tenta otimizar os acessos é a do 
FreeBSD geom_mirror.  Voce pode escolher o algoritmo de escolha do disco 
de leitura entre prefer, round-robin, split e load.  Prefer faz do jeito 
que voce disse, le somente de um disco master.  round-robin troca de 
disco a cada setor requisitado.  split divide os requests somente se o 
tamanho do bloco requisitado for maior que um X.  Nesse caso, ele divide 
o request em blocos de tamanho X e envia para cada disco.  X é 
programável.  Finalmente, o algoritmo load se baseia no load average do 
disco (e não da CPU) para escolher o disco com menor carga de uso para 
receber o próximo request.  São algoritmos simples que não necessitam de 
inteligência do file-system para tomar decisão, e podem melhorar muito o 
tempo de acesso.

    Ok, ok, é um RAID por software.  Dai ser possível esse nível de 
complexidade.  Mas ler somente de um disco é simples demais até para 
RAID por firmware.


More information about the masoch-l mailing list