Programador IO do Linux em bancos de dados com RAID

2

Eu tenho um servidor de banco de dados linux (MySQL) (Dell 2950) com um RAID 10 de 6 discos. O agendador de IO padrão nele é CFQ. No entanto, pelo que li e ouvi, não há necessidade de um planejador como o CFQ quando o reordenamento / agendamento também é feito pelo controlador RAID subjacente; ao contrário, uma vez que não considera a configuração subjacente do RAID, o desempenho da conta pode, na verdade, diminuir com o CFQ. A principal preocupação é reduzir o uso da CPU e melhorar o rendimento. Além disso, tenho visto recomendações de uso do escalonador de data / hora de noop / deadline para bancos de dados principalmente devido à natureza de seu acesso de R / W.

Então, a questão é se noop ou agendador de prazo deve ser usado em vez de CFQ nessas circunstâncias.

    
por Raghu 16.04.2010 / 11:56

2 respostas

4

Toda carga de trabalho é diferente. Portanto, não há um tamanho único para responder a essa pergunta. Para tornar as coisas mais complicadas, a maioria dos Agendadores de IO tem sintonizadores. Portanto, a melhor coisa que você pode fazer é testar o mais próximo possível do benchmarking real da carga de trabalho. Contanto que seu teste seja repetitivo, ele deve funcionar.

Você pode alterar agendadores de IO em tempo real, sem reinicializar, o que torna fácil fazer experimentos com os agendadores de io. Para isso, use um comando como este echo anticipatory | sudo tee /sys/block/sdb/queue/scheduler substituindo o antecipatório pelo agendador de escolha e sdb pelo dispositivo de bloco correto. Você também pode fazer echo anticipatory > /sys/block/sdb/queue/scheduler se estiver logado como root. Eu uso a abordagem tee para que eu possa usar o sudo.

Como minaev, tive muita sorte com o Deadline em servidores de arquivos atarefados. Nós não tínhamos nenhum material de banco de dados, pois era principalmente o processamento de imagens com um cluster de computação. Mas eles saturariam 2 links GigE e carregariam esse servidor por 48 horas de cada vez.

Eu também usei o NOOP ao lidar com matrizes RAID externas. O que quero dizer com externo é que o controlador RAID é independente no chassi externo e o servidor apenas vê isso como uma unidade SCSI. Se o controlador RAID estiver no servidor, acho que você ainda quer evitar o NOOP. Mas você deve ser capaz de descobrir o que funciona melhor para você com algum benchmarking.

    
por 16.04.2010 / 16:31
2

Não tenho certeza se isso ajuda, mas aqui está um artigo interessante da Red Hat Magazine: "Escolhendo um I / O Agendador para o Red Hat® Enterprise Linux® 4 e o Kernel 2.6 ". Eu costumo definir o agendador para o prazo e funciona bem em meus servidores, mas eu tenho que admitir que não tenho números que provariam que o prazo é realmente melhor.

    
por 16.04.2010 / 16:07