Os caches de memória virtual do Ubuntu consomem memória

1

Eu tenho um servidor Ubuntu 9.10 de 64 bits que parece consumir toda a memória disponível. De acordo com meus gráficos municipais, quase toda a memória usada está no cache de troca, cache e cache slab. (Eu levo isso para significar caches de memória virtual, estou certo em assumir isso?)

Quando o uso da memória se aproxima de 100%, alguns (embora não todos) serviços do sistema, como o SSH, tornam-se lentos e não respondem. Após a reinicialização do sistema, o desempenho e o uso da memória se tornam normais por um tempo.

Algumas informações interessantes:

  • O sistema executa o Apache 2, MySQL, Munin e sshd.
  • Os picos de uso de memória ocorrem na mesma hora todas as noites (às 10h em ponto).
  • Parece não haver nada no crontab para nenhum dos usuários, e nada em /etc/cron.d/* fora do comum, muito menos algo que ocorreria às 22h.

A minha pergunta é: como faço para descobrir o que está causando a sucção de memória? Eu tentei os utilitários usuais (por exemplo, ps, top, etc), mas eu não consigo encontrar nada de anormal.

Alguma ideia? Obrigado antecipadamente!

    
por Tom 08.09.2010 / 19:46

2 respostas

1

Tem certeza de que é relacionado à memória? Caches não deveria estar sugando toda a memória; eles são temporários e dinâmicos, e realocam como a memória ativa é necessária. Os caches estão lá apenas para acelerar as coisas e fazer uso da memória que de outra forma seria desperdiçada.

Eu provavelmente veria se você tem algo mais ocupando o sistema. Ao usar o Top, você está vendo um alto carregamento do sistema? O que é nessas horas comparado com os tempos "normais"? Você classifica o topo em uso da CPU e uso de memória ativa?

Você tentou executar o iotop para ver o disco i / o e ver se algo está martelando a unidade?

Como são todos os crontabs?

Você tirou uma foto de ps durante o dia algumas vezes e a comparou por volta das 10:00 para ver quais processos apareceram?

Em um longo tempo, como sobre conexões de rede com o netstat? qualquer coisa incomum entrando ou saindo do sistema naquela época?

Parece que ele pode estar reconstruindo ou indexando um banco de dados do sistema como "locate", mas não deve atrasar o sistema fazendo isso.

    
por 08.09.2010 / 20:21
0

O uso da memória e a lentidão são sintomas do mesmo problema. Algo acontece nesse momento que faz com que o cache de disco do sistema seja espancado. O sistema usa cada gota de memória para evitar excesso de E / S de disco, mas ainda falha.

Isso é mais comum quando muitas leituras de disco acontecem em áreas do disco que não foram lidas recentemente. Os dados usados recentemente que podem ser usados novamente são enviados para fora do cache e, quando precisam ser lidos novamente, precisam competir com o fluxo existente de leituras.

Verifique se há algum processo que faça muitas E / S de disco. Por exemplo, updatedb ou algum tipo de script de backup. Se for uma ferramenta caseira, pode ser útil alterá-la para ignorar o cache de disco, para que não force outras coisas para fora do cache. Pode ajudar a ionice para que não prejudique tanto as leituras sensíveis ao tempo.

    
por 13.03.2012 / 08:19