E / S de disco alta quando o cache é usado?

9

Alguns dias atrás, notei uma espera de E / S no disco e uma queda na atividade do disco (o que foi ótimo). Então também noto que meu cache estava cheio (*) e fragmentado. Então eu limpei o cache. Depois disso, a latência e a atividade do disco saltaram para o nível anterior (o que era ruim).

O IOtop mostra que [jbd2 / sda2-8] e [flush-8: 00] estão sempre em cima do uso do disco. Este é um Dell R210, hardware RAID 1 (H200) com muita memória livre (16 GB no total, dos quais cerca de 8 GB são de buffer / cache).

(*) O cache é o cache do código de operação da APC para PHP, o que reduz o acesso ao disco para execução de scripts PHP. O cache estava cheio e fragmentado porque incluía arquivos da instância de desenvolvimento. Quando notei isso, eu os filtrava.

A questão é: por que a E / S do disco aumenta quando teoricamente deve diminuir? Abaixo estão alguns gráficos de munin. O cache estava cheio de 6 a 8 de fevereiro.

insira a descrição da imagem aqui insira a descrição da imagem aqui O cache da APC está ok no momento.

Alterar depois que eu comentei o apc.mmap_file_mask conforme informado por @ cyberx86

insira a descrição da imagem aqui insira a descrição da imagem aqui

E depois de alguns dias https://serverfault.com/a/362152/88934

jcisio
fonte
2
Esse gráfico não mostra um aumento no IO.
31412 psusi
1
Se você usar o mapeamento de memória suportada por arquivo (por exemplo apc.mmap_file_mask=/tmp/apc.XXXXXX), poderá ver E / S elevada. Tente configurar apc.mmap_file_maskpara usar memória compartilhada (por exemplo /apc.shm.XXXXXX) ou para /dev/zero(memória mmapped anônima).
21412 cyberx86
1
@psusi de 6 a 12 de fevereiro a 8 de fevereiro, foi baixo e aumentou.
jcisio
@ cyberx86 Acabei de mudar (comentei essa linha para usar memória mmapped anônima) e parece que ajuda. Vou monitorar mais alguns minutos para ver. Obrigado.
jcisio
2
@psusi Existem / existem vários problemas que só consigo retomar, sem explicar: 1 / falha no cache da APC (mas o cache do SO é atingido por esses arquivos PHP, muito pouca E / S de disco, menos tempo de espera, mas mais tempo médio de E / S , que principalmente a transação do MySQL InnoDB confirma) 2 / APC atingiu o cache, mas a APC estava usando arquivos (então o cache do sistema operacional falha, não sei por que) 3 / breve, minha pergunta é "quando o cache funcionou mal, quase não há disco I / O "- o que você está dizendo é completamente contrário a isso.
jcisio

Respostas:

10

Se você usar o mapeamento de memória suportada por arquivo (por exemplo apc.mmap_file_mask=/tmp/apc.XXXXXX), poderá ver E / S elevada.

Tente configurar apc.mmap_file_maskpara usar memória compartilhada (por exemplo /apc.shm.XXXXXX) ou para /dev/zero(memória mmapped anônima). Manter a configuração indefinida usa como padrão a memória mmapped anônima.

Normalmente, os arquivos mmapped são ótimos:

  • Comparado a armazenar algo totalmente na memória, os arquivos mmapped geralmente requerem menos memória
  • Comparado a salvar algo em um arquivo, os arquivos mmapped requerem menos E / S de disco (já que as gravações podem ser agregadas).

No entanto, em comparação com o armazenamento de algo puramente na memória, eles incluem E / S adicional - consideravelmente quando o arquivo está sendo alterado continuamente. A desvantagem de não usar arquivos mmappedados é a falta de persistência - seu cache não sobreviverá a uma reinicialização, pois é armazenado apenas na memória.

Pode-se sugerir, portanto, que, enquanto o cache estava sendo preenchido e estabilizado, ele estava sofrendo a maior parte das alterações, que precisavam ser constantemente gravadas no disco; quando o cache estava cheio, o ttl de cada objeto diminuía a taxa de entrega dos dados no cache, diminuindo as alterações e reduzindo as gravações em disco.

cyberx86
fonte
4

Depois de alguns dias, agora quero voltar com alguns gráficos. A mudança melhora muito essa situação. Reduz tudo, exceto o tempo de serviço de IO (acho que é porque não há mais leitura de arquivos PHP trivial e barata).

insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui insira a descrição da imagem aqui

A carga do servidor (já era bastante baixa, então eu não havia descoberto a alteração).

insira a descrição da imagem aqui

jcisio
fonte
Poderia, por favor, fornecer as alterações que você fez?
Mircea Vutcovici
Leia o comentário da pergunta e a resposta aceita. Eu comenteiapc.mmap_file_mask=/tmp/apc.XXXXXX
jcisio
Ei, desculpe incomodá-lo. Você já viu algum efeito colateral ao comentar a linha mmap_file_mask ?. Estou vendo o mesmo problema ... e isso resolve claramente meus problemas de uso de E / S. Mas eu queria saber ... se nada mais vai quebrar! Obrigado!
Jorge Leandro Perez
Não tive nenhum problema em comentar essa linha.
jcisio