Limpeza de memória cache no Linux

Dias atrás me deparei com algumas máquinas que estavam apresentando lentidão em qualquer comando executado. Um simples ls demorava uma eternidade para ser executado, o que não poderia acontecer, já que as máquinas possuem muito mais memória do que eu ;-).

Comecei verificando os processos que estavam sendo executados, quais usuários estavam conectados, fiquei observando o resultado do comando top e aparentemente tudo estava normal, vi que o consumo de CPU estava baixo, porém o consumo de memória estava lá nas alturas.

Já ia reiniciar a máquina quando olhei de novo para a saída do comando top e a linha que demonstra a estatística de uso do swap me chamou atenção (a saída abaixo é da minha máquina, a figura é somente para ilustrar):

Cabeçalho do comando top

O linux guarda um espaço na memória cache para programas e comandos que foram usados recentemente, permitindo que sejam executados de maneira mais rápida no futuro. E no caso das máquinas, esse espaço já estava chegando ao limite da memória física, causando lentidão na execução dos processos.

Ok, descobri o problema da lentidão, e um simples reboot resolveria o caso, mas em um ambiente de produção, isso não é interessante, então, pesquisando mais um pouco, localizei um procedimento que permite limpar a memória cache sem reiniciar a máquina.

Os procedimentos abaixo, devem ser executados como root:

# sync
# echo 3 > /proc/sys/vm/drop_caches

O comando sync faz com que todo o cache do sistema de arquivos que está temporariamente armazenado na memória, seja descarregado no disco e liberado, evitando a perda de dados.

Ao inserir o número “1” no arquivo /proc/sys/vm/drop_caches, é liberado somente pagecache, inserir o número “2” libera pagecache e inodes. A opção utilizada, número “3” faz como que o kernel libere pagecache, dentries e inodes.

Para checar novamente o uso da memória:

# free -m

ou

# top

Uma sugestão, para máquinas que ficam muito tempo ligadas, é criar um script com os comandos acima e inserir no cron, para ser executado regularmente.

Para saber mais:

http://www.kernel.org/doc/Documentation/sysctl/vm.txt
http://linux-mm.org/Drop_Caches
http://www.ibm.com/developerworks/linux/library/l-virtual-filesystem-switch/

Anúncios

1 Response to “Limpeza de memória cache no Linux”


  1. 1 Guilherme Fidelis 27/09/2013 às 5:29 PM

    Valeu pelos comandos, me ajudou bastante!


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




Follow Nix on WordPress.com
janeiro 2012
S T Q Q S S D
« dez   mar »
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

Flickr Photos

Geese Resort

Mais fotos

%d blogueiros gostam disto: