Como evitar que o md-raid bloqueie o IO?

1

Eu corro um servidor com o nível 1 do md-raid (software) (espelhamento de 2 HDDs) e vários aplicativos diferentes são executados nele.

O problema surge quando tarefas com uso intensivo de arquivos (por exemplo, extração de grandes arquivos) são executadas, enquanto alguns usuários também usam aplicativos em tempo real (por exemplo, servidores de jogos). O trabalho intensivo de arquivos preencherá a fila IO forçando o md-raid a bloquear ainda mais IO até que as duas unidades sejam sincronizadas, o que irá privar os aplicativos em tempo real e forçá-los a pausar e aguardar, o que causa grande aborrecimento com os usuários.

O trabalho intensivo de E / S está sendo executado com as prioridades de processo e io mais baixas ( nice -n +19 ionice -c 3 ... ) com o agendamento de CFQ, mas outros aplicativos ainda estão sendo privados.

Existe uma maneira de tornar o md-raid mais leve em manter os discos em sincronia?

Existem outras soluções possíveis para não privar aplicativos importantes?

    
por Cobra_Fast 14.04.2016 / 21:46

1 resposta

0

O problema provavelmente é causado pela limpeza do pagecache, em vez do preenchimento da fila de E / S.

Para verificar, tente descompactar um arquivo grande e, em outro terminal, faça um cat /proc/meminfo . Você verá alguns valores grandes em Dirty memory; quando essa memória "suja" é liberada, uma grande E / S acontece e seu aplicativo em tempo real sofre.

O comportamento pode ser configurado, no entanto, não é trivial, pois, por padrão, a pilha de E / S do Linux favorece a taxa de transferência em vez da latência. De qualquer forma, como um bom começo, tente usar o deadline scheduler e certifique-se de que o NCQ esteja ativado em seus discos.

    
por 14.04.2016 / 22:38