Limpando sua memória cache de forma simples

Publicado por Marcelo Cavalcante Rocha em 10/07/2008

[ Hits: 49.127 ]

 


Limpando sua memória cache de forma simples



Nesta dica apresentarei um comando simples para limpar sua memória em cache.

Resolvi escrever sobre por ter visto duas vezes na mesma semana problemas relacionados a isso. Um foi aqui mesmo onde trabalho, onde estávamos percebendo que o consumo de memória em um dos servidores estava muito alto, porém com pouca atividade no mesmo, no qual percebi que nada mais era do que muita memória alocada em cache sem necessidade no momento. Desenvolvedores java... vai entender.. hauhauha (brincadeira.. :p)

E outro caso foi uma dúvida que surgiu, bem parecida, em um fórum do qual faço parte no qual um rapaz estava passando pelo mesmo problema no servidor dele. Com consumo exagerado de memória. Ele até colou o resultado do top no qual podíamos ver claramente que não haviam processos consumindo tudo aquilo de memória, e mais uma vez pudemos ver que o grande vilão era o cache, o que lhe passava essa impressão de memória totalmente consumida.

O comando para se limpar este cache é o seguinte:

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

Exemplo:

Aqui vai uma saída do meu top antes de rodar o comando (reparem no consumo de memória armazenada em cache na última linha):

top - 09:40:03 up  1:42,  1 user,  load average: 0.06, 0.20, 0.20
Tasks:  83 total,   2 running,  80 sleeping,   0 stopped,   1 zombie
Cpu(s):  4.3%us,  0.5%sy,  0.2%ni, 95.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1944240k total,   898916k used,  245324k free,    51176k buffers
Swap:   996020k total,        0k used,   996020k free,   969000k cached

Repare agora o resultado obtido pelo top depois de executar o comando para limpar o cache:

top - 09:45:03 up  1:47,  1 user,  load average: 0.32, 0.16, 0.17
Tasks:  85 total,   3 running,  81 sleeping,   0 stopped,   1 zombie
Cpu(s): 11.2%us,  1.5%sy,  0.0%ni, 63.4%id, 23.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1944240k total,   329412k used,  1614828k free,      768k buffers
Swap:   996020k total,        0k used,   996020k free,    69088k cached

A memória armazenada em cache caiu de ~969mb para ~69mb. ;]

Outras dicas deste autor

99 99 99 99 99... falha no LILO

Configurando a JRE para funcionar no Ubuntu 8.04 e derivados com Firefox 3

Corrigindo incompatibilidade do kdemod após o "nascimento" do KDE 4.1 no Arch

Consertando boot negro do (K)Ubuntu 7.10

Descubra todos os hosts que estão em sua rede com o nmap

Leitura recomendada

Convertendo vídeos para FLV (any2flv)

systemctl - Ferramenta para gerenciar serviços

Dropbox com dual boot

Obtendo lista dos repositórios de pacotes em sistemas derivados do Debian

Monitorando o CPU no GNU/Linux em modo texto

  

Comentários
[1] Comentário enviado por Pianista em 10/07/2008 - 16:38h

eu digitei mas meus pensamentos poluidos e maliciosos ainda continuaram... rsrsrs

Valew! Otima dica. ajuda muito, principalmente com programadores Java.. rsrsrsrs

[2] Comentário enviado por maran em 10/07/2008 - 16:40h

Este é um comando muito útil kalib.
é de dicas assim que precisamos, e que queria ver todo dia aqui no VOL, que realmente me ajudassem no dia-a-dia.
Abraços

[3] Comentário enviado por kalib em 10/07/2008 - 16:54h

Huahuahaua
Vlw galera.. ;]
Depois devo estar postando uma dica sobre como tornar este processo automatizado..já que tive de fazer isto aqui na empresa..do contrário eu teria de efetuar este comando a cada meia hora no servidor dos desenvolvedores java... :p huahauha

[4] Comentário enviado por removido em 10/07/2008 - 21:49h

Outra dica interessante também é desativar a memoria swap. você pode fazer com este comando

parar o uso da swap com:
sudo swapoff -a

reativar:

sudo swapon /dev/hda5

antes

http://img126.imageshack.us/img126/1457/swap1ju8.jpg

depois

http://img161.imageshack.us/img161/3203/swap2it9.jpg

[5] Comentário enviado por hlegius em 10/07/2008 - 23:12h

A dica é super interessante e útil, mas não vejo a memória cache como uma vilã. Ela ajuda muito no desempenho das aplicações aqui no meu notebook. As aplicações e bibliotecas ficam em cache, facilita o acesso à outras aplicações e mantém a máquina sempre na mesma velo =)

Agora mesmo estou com 2.8GB em cache. Isso que liguei o note eram 9 horas da manhã. Continua rápido =)
Quem trabalha com a máquina - como eu que sou programador - acho que vale muito a pena investir em ram e economizar stress de máquina no limite de ram =~

Mas a dica é maneira e funcionou aqui hahaha =)


Abraço!

[6] Comentário enviado por shaitannechrist em 11/07/2008 - 04:30h

òtima dica Kalib!
Se você São posts como esses que deixam meu Dia mais Feliz!
vai ser útil para meus Servers..hehe

[7] Comentário enviado por kalib em 11/07/2008 - 08:32h

Acontece que o sistema operacional utiliza o cache como um ótimo recurso...sim..é verdade...auxilia em muitas vezes..
Mas, estranhamente, algumas aplicações..principalmente em java acabam por ignorar isso...como foi o que observamos aqui...e esquece que deixou algo alocado em cache... é como se alocasse...não desalocasse...e quando precisasse...alocasse mais memória ainda...enfim... o que no final do dia virava uma catástrofe. :/

[8] Comentário enviado por marcus-rj em 11/07/2008 - 09:46h

Muito bom, gostei, a consideracao do kalib e do hlegius foram muito esclarecedoras.

Abs!

[9] Comentário enviado por kalib em 11/07/2008 - 09:50h

Muito obrigado marcus-rj.. e aos demais também. ;]

Abraços

[10] Comentário enviado por luisbuso em 13/07/2008 - 01:17h

obrigado pela dica. Estou aprendendo muito no VOL....
valeu

[11] Comentário enviado por SmithuX em 14/07/2008 - 16:39h

Aê grande Kalib!
A dica realmente é bastante útil!!!

Pra quem quiser conhecer um pouquinho mais sobre esse e outro comando que tem a mesma função, acesse o link abaixo:

http://www.vivaolinux.com.br/dicas/verDica.php?codigo=10631

[12] Comentário enviado por kalib em 14/07/2008 - 16:55h

Opa..grande archsmith.. ;]

Putz..nem tinha visto tua dica..se tivesse visto teria pulado direto para a segunda..que mandei hoje...em breve deve estar sendo publicada...mas segue essa mesma linha. ;]

abraço

[13] Comentário enviado por SmithuX em 14/07/2008 - 18:28h

Esquenta não meu velho!!!

Quase ninguém viu minha dica quando postei mesmo.... Rsrsrsr!!!

Já que vc é mais conhecido no fórum, acho que repercurtiu mais a dica!!!

Mas o que eu acho que vale é que todos se beneficiem com a sua ou a minha dica, não importa!!!

Grande abraço! :D


[14] Comentário enviado por SmithuX em 14/07/2008 - 18:33h

Pô....

Além de tudo, assim que fiz a dica também pedi pra que publicassem aqui no VOL um script com para automatizar essa tarefa de limpeza de memória......

Mas até hoje nada.........

Já vi que o Fábio respondeu em outro tópico que as partes de CONF e SCRIPTS realmente estão com falta de moderadores....

Mas o que podemos fazer no momento é aguardar né?!

Grande abraço a todos!!!

[15] Comentário enviado por kalib em 14/07/2008 - 20:40h

Sem stress... também fiz uma segunda dica... com um simples shell e o agendamento no crontab. ;]
Deverá estar sendo publicado em breve! ;]

[16] Comentário enviado por annakamilla em 16/07/2008 - 23:19h

?comentario=
fiz isso daqui na minha máquina:
echo 3 > /proc/sys/vm/drop_caches drop caches=3

[17] Comentário enviado por femars em 06/05/2009 - 17:49h

na boa... ainda acho melhor deixar o sistema gerenciar a memória cache! fiz uns teste aqui com java e, nao vejo o pq limpar, ainda acho que é até mais vantegem deixar o sistema gerenciando maior quantidade da mémória. Acredito que a establidade ao longo prazo ficaria melhor! ... Minha opnião apenas! Abraços!

Mas a dica é excelente de qq forma!
Xiiico.

[18] Comentário enviado por removido em 08/10/2009 - 18:38h

Teste feito e 100%.
Quase a mesma proporção da sua diminiu.
Muito boa este dica.


[]'s

[19] Comentário enviado por arturbmallmann em 01/08/2010 - 23:37h

Entendi a piada quanto a desenvolvedores java, eu programo java e aqui de uma hora para outra usando o eclipse ficou lerdo o sistema olhei os procesos e e tava la vários processos vindos da pasta do jdk, e o cache tava cheio, pensei que o sistema ia travar! use no frame principal de seus aplicativos java (setDefaultCloseOperation(EXIT_ON_CLOSE);) senao tu esquece de dar stop sempre e ficam varios procesos em execucao só o frame fica escondido



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts