RAID 1 - IOPS Write Penalty 1 or 2

1

Continuo vendo artigos descrevendo a penalidade de gravação de IOPS RAID para RAID 1 (e RAID 10) como 2. O RAID 0 teria uma penalidade de 1, é claro, já que toda gravação é simplesmente gravada no disco. O RAID 1 é descrito como "requerendo duas gravações", portanto, uma penalidade de 2.

Mas não deveria ser 1, já que os dados são gravados simultaneamente?

Do ponto de vista do aplicativo ou servidor que usa o disco, uma matriz RAID 1 deve aparecer como uma única unidade que grava os dois discos simultaneamente. Um disco pode ficar atrás do outro, mas um controlador RAID de hardware real deve ser capaz de iniciar a gravação ao mesmo tempo e relatar a operação de gravação como concluída quando o disco mais lento for concluído, o que deve ser apenas marginalmente maior do que em um RAID -0, se em tudo. Portanto, a penalidade de IOPS deve ser 1 para RAID 1 ou 1,2 no máximo.

Eu entendo que existem duas operações de gravação, então existem 2 "IOPS", mas elas são internamente para o controlador RAID.

Estou faltando alguma coisa aqui?

    
por nepdev 05.12.2013 / 22:50

2 respostas

5

Se o RAID 1 estivesse apenas conectando um cabo, o impacto no desempenho seria nulo (um fator de 1.0), mas o espelhamento do RAID 1 é mais do que apenas um cabeamento - trabalho real precisa ser feito para gravar dados em duas unidades e manipular os resultados dessa gravação de cada unidade.

Esse trabalho extra é o fator sobre o qual eles estão falando no impacto no desempenho. Se a operação de E / S ocorre no SO em algum lugar (software RAID) ou em um co-processador / controlador dedicado (RAID de hardware), duas gravações ainda precisam ser emitidas para cada parte dos dados, e os resultados dessa gravação (sucesso, falha, ou on_fire) precisam ser "manipulados".

No pior caso que você provavelmente encontrará (o software RAID-1 implementado no SO) significa que o kernel está fazendo duas gravações e tendo duas conversas com o controlador de disco.
Isso é uma penalização de 2x por escrever, já que estamos fazendo o dobro de trabalho quase todo o caminho através da pilha. (Na verdade, é provavelmente mais próximo de 1.9 - afinal de contas, não estamos emitindo duas chamadas write () para o sistema de arquivos - mas vamos arredondá-lo para o pessimismo.)

No melhor dos casos (hardware RAID 1, implementado com um controlador dedicado) o kernel está tendo uma conversação com o controlador, mas o controlador ainda está tendo 2 conversas (uma com cada disco) conforme necessário para garantir que ambas as unidades recebam o comando, escreva os dados e reconheça que os dados foram gravados (ou manipule quaisquer condições de erro relatadas pelos drives).
Isso é provavelmente uma penalidade de 1,2x pelo trabalho extra do controlador, como você supôs na sua pergunta - você está apenas economizando o trabalho extra no kernel (que é muito mais caro do que o controlador está fazendo).

Agora, como somos sysadmins e somos pagos para sermos pessimistas, obviamente vamos ter o pior desempenho possível, assim como quando arredondamos o fator de desempenho para software RAID - então, se alguém perguntar, estamos vai dizer-lhes que há uma penalidade de gravação de 2x, mesmo para o seu controlador de hardware sofisticado, e deixá-los felizes quando o sistema funciona com apenas uma penalidade de 1,5x em média: -)

    
por 05.12.2013 / 23:13
2

an actual hardware RAID controller should be capable to begin the write at the same time and report the write operation as complete when the slower disk has completed, which should be only marginally higher than in a RAID-0, if at all.

Cada gravação tem metade do desempenho total disponível. No seu exemplo, cada disco do RAID 0 precisa apenas escrever metade do que foi enviado para o controlador RAID. No RAID 1, cada disco tem que escrever tudo.

Isso coloca o RAID 0 no ritmo de duas vezes mais rápido do que o RAID 1 para gravações (em um grupo de RAID de 2 discos), enquanto elas são iguais na velocidade de leitura teórica.

    
por 05.12.2013 / 23:13