Limpar memória cache no Ubuntu
Acho que muitos devem utilizar (se não utilizam, deveriam utilizar…) um aplicativo chamado “System Monitor” ou “Monitor do Sistema” no Ubuntu. Trata-se de um aplicativo que monitora em tempo real uso da CPU/memória/rede/hd/etc… Para adicionar o aplicativo à sua barra do gnome, clique com o botão direito na barra e escolha a opção “Add to panel…” ou “Adicionar ao painel…”. Faça a busca por “System monitor” ou “Monitor do Sistema”.
Você configura o que quer monitorar e de quanto em quanto tempo o gráfico é atualizado. Exemplo:
![]()
O primeiro quadro com as barras azuis é o monitoramento do processador e o segundo quadro é o monitoramento da memória RAM. Esse segundo quadro é o que interessa: a faixa verde corresponde à memória que está sendo utilizada no momento e a faixa vermelha é a memória que está em cache (o padrão da cor para memória em cache é um verde claro… eu alterei para vermelho para fácil identificação).
De uma forma bem simplificada o que acontece é o seguinte: o sistema automaticamente armazena na memória cache alguns programas, comandos, etc para que quando você execute novamente esse processo, seja executado de uma forma muito mais rápida, pois o sistema não terá que ler do disco novamente e sim direto da memória. Ex: quando você abre um programa (OpenOffice, Firefox, editores de texto, etc..), automaticamente o programa é armazenado na memória cache, para quando você executar o programa novamente o sistema irá executá-lo diretamente da memória em cache.
O problema é o seguinte: o kernel faz o controle desse cache, limpando-o de tempo em tempo entradas do cache que não são utilizadas por um determinado tempo, mas muitas vezes executamos programas mais pesados, como: apache, mysql, openoffice, aptana, eclipse, netbeans, etc… com isso o sistema ocupa muita memória no cache e isso pode deixar alguns programas mais lentos.
A solução para isso é você fazer a limpeza manual do cache, rodando os seguintes comandos (como root):
# sync
# echo 3 > /proc/sys/vm/drop_caches
O comando sync irá fazer a sincronização dos dados que estão em disco e na memória.
Ao escrever o número 3 no arquivo /proc/sys/vm/drop_caches o sistema irá fazer a limpeza instantânea do pagecache, dentries e inodes. Para limpar somente o pagecache, deve ser escrito o número 1 e para limpar somente dentries e inodes deve ser escrito o número 2.
Após rodar o comando, esse é o resultado do novo gráfico:
![]()
Repare que logo após rodar os comandos, a linha vermelha que correspondia à memória cache é liberada e some do gráfico!
OBS: essa entrada no /proc só é válida para kernel a partir da versão 2.6.16!
Para mais informações:
# man proc


Cara, show de bola a dica.. procurei isso por umas 3 horas na net, até achar esse artigo, e o resultado é imediato :
root@andre-AO532h:/home/andre# free -m
total used free shared buffers cached
Mem: 2002 1129 872 0 56 603
-/+ buffers/cache: 469 1532
Swap: 5998 0 5998
root@andre-AO532h:/home/andre# echo 3 > /proc/sys/vm/drop_caches
root@andre-AO532h:/home/andre# free -m
total used free shared buffers cached
Mem: 2002 662 1339 0 0 208
-/+ buffers/cache: 453 1548
Swap: 5998 0 5998
Valeuuu cara!