Impacto dos níveis de RAID nas IOPS [fechado]

11

Com relação ao IOPS, vi várias fontes na Web que sugerem que o IOPS de um determinado número de discos é simplesmente o IOPS de um único disco multiplicado pelo número de discos.

Se meu entendimento de IOPS estiver correto (e não tenho certeza de que esteja), eu teria pensado que a realidade dependeria - entre muitos outros fatores - do nível RAID. Com o RAID 1/10, todos os dados são duplicados em pelo menos dois discos, reduzindo a contenção em um disco específico para alguns padrões de E / S. No entanto, em níveis RAID distribuídos, como RAID 0/5/6, os dados são distribuídos em vez de duplicados, o que significa que solicitações de leitura consecutivas podem ser para o mesmo eixo-árvore, levando ao bloqueio enquanto a E / S anterior é concluída. As gravações são ainda mais disputadas.

Devo acrescentar que aprecio a realidade é muito mais complexa devido a várias otimizações e outros fatores. Minha pergunta é realmente apenas saber se, em um nível muito básico, meu entendimento do que significa IOPS está no caminho certo. Pode ser que minha afirmação de que o IOPS possa até ser influenciada pelos níveis de RAID de tal maneira indique um mal-entendido básico do conceito.

dbr
fonte
4
Você está simplificando isso a um ponto em que exclui o impacto do cache do controlador RAID, SO, o comportamento do aplicativo, E / S síncrona ou assíncrona e tipo de disco. Então o que você está procurando?
ewwhite
@ewwhite Desculpe, eu deveria ter sido mais claro. Espero realmente ver se o princípio básico do meu pensamento está correto, em vez de fazer previsões do mundo real. Compreendo que, na realidade, as coisas são grandemente influenciadas por todos os tipos de otimizações e outras complexidades. Existe uma situação do mundo real em segundo plano, mas, como costuma acontecer quando você está procurando algo que não conhece muito bem, decidi ir embora e fazer algum aprendizado em segundo plano, para me sentir um pouco mais confortável com os princípios básicos.
dbr 22/08
Fiquei tentado a perguntar se alguém tem alguma recomendação sobre a leitura de boa qualidade sobre a teoria e os conceitos que envolvem o armazenamento e seu desempenho, mas não o fiz porque pensei que poderia ser considerada uma pergunta inadequada para o ServerFault. Parece haver bastante pouca escrita de alta qualidade sobre o assunto existente na web que eu encontrei até agora - talvez porque seja um assunto bastante complexo que poucos realmente entendem completamente.
dbr 22/08
O desempenho do RAID depende muito mais do hardware do controlador e dos limites de implementação do que o nível do RAID. Por exemplo, RAID0, RAID1, RAID5 e RAID6 podem teoricamente empregar todos os discos para leituras longas, para que possam ter exatamente a mesma velocidade de leitura em um controlador ideal.
Zac67 22/08

Respostas:

12

Para o HDD , os IOPS geralmente são dominados pelo tempo de acesso do disco, que é a soma da latência de busca + atraso de rotação + atraso de transferência. Como essas variáveis ​​dependem fortemente dos padrões de acesso e têm interações não óbvias com o layout RAID específico (por exemplo: tamanho da faixa) e o controlador (por exemplo: ajuste de leitura antecipada), qualquer resposta simples SERÁ ERRADA.

No entanto, vamos tentar ter uma figura aproximada. Em uma primeira aproximação, o IOPS garantido por uma matriz de n discos deve ser n vezes o IOPS de um único disco. No entanto, o nível de RAID e o padrão de acesso a dados , alterando o peso entre a latência de busca / rotação / transferência, mudam dramaticamente essa aproximação de primeira ordem.

Vamos dar alguns exemplos, assumindo 100 IOPS por discos únicos (um valor típico para discos de 7200 RPM) e matrizes de 4 discos (exceto RAID1, geralmente limitados apenas a 2 vias):

  • um único disco tem 100 IOPS, tanto de leitura quanto de gravação (nota: devido à coalescência de gravação, as IOPS de gravação geralmente são mais altas que as IOPS de leitura, mas vamos ignorá-lo por simplicidade)
  • O RAID0 (distribuição de 4 vias) tem até 4x o IOPS aleatório e até 4x o IOPS seqüencial. A palavra-chave aqui é "até": devido à natureza da distribuição e do alinhamento de dados, se os setores acessados ​​aleatoriamente residirem predominantemente em um único disco, você terminará com IOPS muito mais baixos.
  • O RAID1 (espelhamento bidirecional) é mais complexo para o perfil. Como discos diferentes podem procurar dados diferentes, ele possui até 2x o IOPS de leitura aleatória, mas o mesmo 1x (ou ligeiramente menor, devido à sobrecarga) IOPS de gravação aleatória. Se todas as coisas alinhar bem (ou seja: grande, mas não 100% leituras seqüenciais, um controlador RAID usando pedaços / listras conceito / manuseio mesmo em modo de espelhamento, read-ahead funcionando corretamente, etc.) leituras seqüenciais pode em algum momento ser de até 2x o único valor do disco, enquanto as gravações seqüenciais permanecem limitadas a 1x o disco único (ou seja: sem aceleração)
  • O RAID10 (espelhamento em quatro direções) é, em termos de desempenho, a meio caminho entre a faixa RAID0 em quatro direções e o espelhamento em duas direções. Possui até 4x o IOPS de leitura aleatória e até 2x o IOPS de gravação aleatória. Para transferências sequenciais, a ressalva RAID1 se aplica: em algum momento ela tem até 4x as IOPS de leitura sequencial, mas apenas 2x as IOPS de gravação sequencial. Observe que algumas implementações de RAID10 (ou seja, Linux MDRAID) fornecem layouts diferentes para matrizes RAID10, com diferentes perfis de desempenho .
  • O RAID5 (paridade distribuída) tem até 4x o IOPS de leitura aleatória, enquanto o IOPS de gravação aleatória, dependendo de vários fatores, como o tamanho da gravação em relação ao tamanho da faixa, a disponibilidade de um cache de faixa grande, o algoritmo de reconstrução de faixa em si (leitura-reconstrução-gravação x leitura-modificação-gravação), etc., pode estar entre 0,5x (ou inferior) e 2x o IOPS de um único disco. Cargas de trabalho sequenciais são mais previsíveis, com 3x o IOPS de um único disco (para leitura e gravação)
  • O RAID6 (paridade dupla listrada) se comporta como seu irmão RAID5, mas com desempenhos de gravação mais baixos. Possui até 4x o IOPS de leitura aleatória de um único disco, mas seu desempenho de gravação aleatória é ainda menor que o RAID5, com os mesmos valores absolutos (0,5x - 2x), mas com menor média de palavras reais. As leituras e gravações sequenciais estão limitadas a 2X o IOPS de um único disco.

Deixe-me repetir: as opções acima são aproximações simples e quase quebradas. De qualquer forma, se você quiser jogar com uma calculadora RAID IOPS (severamente incompleta), dê uma olhada aqui .

Agora, volte para o mundo real. Nas cargas de trabalho do mundo real, o RAID10 é frequentemente a escolha mais rápida e preferida , mantendo alto desempenho mesmo diante de uma matriz degradada . O RAID5 e o RAID6 não devem ser usados ​​em cargas de trabalho sensíveis ao desempenho, a menos que sejam centradas na leitura ou sequenciais por natureza. Vale a pena notar que os controladores RAID sérios têm um grande cache de write-back protegido contra perda de energia, principalmente para superar (pelo cache pesado de faixas) o baixo desempenho de gravação aleatória RAID5 / 6. Nunca use o RAID5 / 6 com controladores RAID sem cache , a menos que você realmente não se importe com a velocidade do array.

SSD são bestas diferentes, pensou. Como eles possuem um tempo médio de acesso muito menor, os RAIDs baseados em paridade geram uma sobrecarga de desempenho muito menor e são uma opção muito mais viável do que nos HDDs. No entanto, em uma pequena carga de trabalho centralizada de gravação aleatória, eu usaria uma configuração RAID10 de qualquer maneira.

shodanshok
fonte
Nunca use o RAID5 / 6 com controladores RAID sem cache, a menos que você realmente não se importe com a velocidade do array. Você pode se safar disso se realmente sabe o que está fazendo e tem um controle rígido do seu padrão de IO. Se você estiver fazendo nada além de E / S sequencial que corresponda ao tamanho da faixa da matriz, poderá usar o RAID5 / 6 sem cache. E o cache não pode salvar o desempenho se você executar operações de gravação em blocos pequenos e aleatórios suficientes em um array RAID5 / 6, embora o valor de "operações de E / S suficientes" que reduzam o desempenho possa ser um grande número para um controlador RAID realmente bom.
Andrew Henle
@AndrewHenle Claro, se apenas estiver executando leituras / gravações sequenciais alinhadas por faixas, mesmo um controlador sem cache no modo RAD5 / 6 poderá fornecer bons resultados. No entanto, esse é um padrão de uso muito restrito (por exemplo: streaming e backups). Para carga de trabalho de uso geral, um controlador sem cache combinado com qualquer RAID de paridade será muito lento. Alguns controladores ainda exigem um cache de write-back protegido contra powerloss para permitir que você crie um RAID de paridade.
shodanshok
Eu estava pensando mais sobre os administradores que querem saber porque seu armazenamento de email corporativo 21-drive array RAID6 com um tamanho de 19 MB porque-maior-must-be-rápido stripe é lento ....
Andrew Henle
1

É apenas uma questão de definições. Você pode medir o IOPS em diferentes níveis do sistema e obterá valores diferentes. Por exemplo, suponha que você tenha dois discos espelhados e esteja escrevendo o mais rápido possível. As IOPS enviadas para os discos terão o dobro do número de IOPS que um único disco pode suportar com uma carga de gravação semelhante. Mas o IOPS que entra no controlador será igual ao número de IOPS que um único disco pode suportar.

Geralmente, nos preocupamos com quantas IOPS lógicas podemos entrar na matriz e não nos importamos particularmente com o que está acontecendo no nível do disco. Nesse caso, você está correto e o IOPS depende do nível do RAID, do número de discos, do desempenho de cada disco e, em alguns casos, das características específicas das operações.

David Schwartz
fonte