Um dos meus servidores hospedados é um guest Xen rodando Debian e linux kernel 2.6.32 e depois 2.6.38. Ele tem funcionado bem por algum tempo (mais de um ano), mas recentemente notei algo estranho. Por alguns meses, a parte da memória alocada para buffers (E / S de disco, rede) sempre fica em zero.
A saída de livre é assim:
total used free shared buffers cached
Mem: 2071148 1775284 295864 0 0 1139388
-/+ buffers/cache: 635896 1435252
Swap: 524280 19508 504772
A coluna buffers
sempre imprime 0, não importa o uso do servidor (este é um servidor de e-mail bastante ocupado executando o postfix e o courier).
Aqui estão mais algumas informações:
-
/proc/meminfo
e /proc/slabinfo
output: link
-
atsar -p
(paginação / troca) saída de um dia normal: link (mostra que há pouca troca envolvida)
Eu também tenho a impressão, mas não posso realmente medir isso, que o sistema é lento na leitura de alguns arquivos, arquivos que são pouco usados ou arquivos grandes como logs. Daí meu questionamento se essa buffers
memória poderia ser mal configurada de alguma forma e que a taxa de transferência do disco poderia ser aumentada.
No entanto, parece que não existe nenhum parâmetro do kernel do Linux para governar essa buffers
de memória, pelo menos nada como os parâmetros que existem para a cached
de memória. Ou talvez eu tenha perdido alguma coisa?
Como essa memória pode ser sempre zero? Isso é algo que eu deveria me preocupar? Como posso alterar esse comportamento para colocar um pouco de RAM para melhor uso se for realmente viável?
Atualização: Após a atualização do kernel (kernel personalizado 2.6.38 do meu provedor), o comportamento permanece o mesmo com os buffers ficando em 0. Isso dura há mais de um ano, com o servidor sendo muito usado (servidor de email para cerca de 2 centenas de usuários). Este servidor tem rodado o Debian 6 e agora está feliz com o Debian 7. Memória de buffer ainda permanecendo em 0!