RAID 6 80% Tempo Ativo Mais Alto com E / S pequena

1

Eu tenho um RAID 6 com 18 discos. É usado como armazenamento para pequenas imagens (5-500Kb). É cerca de 6 TB cheio de dados. Eu tenho um utilitário que lê as imagens para o RAM e, em seguida, enviá-lo através da rede. Notei que com cerca de 10Mb / s I / O, tenho cerca de 100% de tempo ativo. qlen é cerca de 18-25, iops é de cerca de 500-700. é por causa de pedidos muito pequenos? Posso melhorar isso? Percebi que isso poderia afetar outros aplicativos que usam esse armazenamento para suas necessidades. Além disso, o tempo de resposta para alguns arquivos pode aumentar até 700-1000ms.

    
por noname 02.11.2015 / 10:49

1 resposta

1

Não é possível responder diretamente à sua pergunta, pois o desempenho da unidade tem um grande volume de 'depende'. Depende muito dos tipos de IO, dimensionamento de IO, cache, controladores, etc.

Mais especialmente, você precisa entender a diferença em 'custo' da leitura vs. escrita IO.

O Write IO é caro em um RAID 6 - cada IO requer 6 operações de disco. Isso significa que você pode dividir seu número de spindles por 6 para uma transferência sustentada. Existem alguns truques que você pode fazer para ocultar esse problema - você pode armazenar em cache de forma agressiva, porque se você é capaz de distribuir o coalesce, você reduz massivamente esse problema. Se você escrever um bloco, você precisa fazer 6 operações cada. No entanto, se você pode escrever uma faixa completa, basta escrever mais 2 blocos, tornando-o mais eficiente do que o RAID 1. Você também pode adiar uma gravação e simplesmente enviá-la para o disco mais tarde - fazendo com que a gravação seja concluída em 'velocidade do cache' até que você preencha seu cache.

Ler IO, por outro lado - leva uma operação para o serviço, mas deve ser feito em tempo real - você não pode adiá-la como você pode escreve. Isso significa que suas leituras são geralmente mais lentas - mas, novamente, você pode atenuar isso parcialmente armazenando em cache - mas é necessário explorar padrões prováveis de leituras (por exemplo, grandes sequenciais, releitura de arquivos comuns).

Isso significa que há praticamente uma diferença muito grande entre o desempenho teórico e ótimo baseado na carga de trabalho, e é por isso que esse tipo de pergunta é tão difícil de responder.

No seu caso, você diz que tem pequenas IOPs. 500 a 700 IOPs por 10MB / s significa que você tem pequenas IOs. Então você pode facilmente - se eles são um padrão aleatório - rodando na pior das hipóteses de seus discos. Ou porque seus IOs de leitura são aleatórios e não podem ser armazenados em cache, ou seus IOs de gravação são aleatórios e, portanto, não podem ser unidos e distribuídos em disco - assim que seu cache de gravação for preenchido, você diminuirá a velocidade para 'disco 'velocidade, e isso pode ser abominávelmente lento. (18 discos dão a você 3 eixos eficazes nesse cenário - você está recebendo mais do que isso)

Eu acho que você provavelmente estará ok no controlador para as taxas de disco, mas é difícil dizer. É geralmente o caso em que o fator limitante é a ferrugem, já que geralmente é a parte mais lenta do sistema. Mas temos expectativas distorcidas graças a enormes caches e algoritmos de cache efetivos.

Então eu sugiro que você precisa checar - que tipo de relação de IO você recebe. (Ignore MB / seg, está claro que você não está nem chegando perto dos níveis teóricos). Verifique as taxas de acertos do cache e o tamanho do cache - se puder, veja o quão cheios estão seus caches e que taxa de gravação de tarja completa você está obtendo (se estiver fazendo muito IO de gravação).

Verifique também a taxa de busca de disco - veja com que frequência suas cabeças estão se movimentando nos discos - novamente, uma das desvantagens dos intensos padrões de leitura aleatória é que seus discos estarão se debatendo.

    
por 02.11.2015 / 20:53