Como faço para limpar ou desativar o cache da memória?


49

Depois que o sistema inicia, em alguns minutos meu cache de memória se enche e começa a usar a troca. Aqui está uma captura de tela de / proc / meminfo.

memória

No entanto, se eu puder desativar esse processo / limpar o cache uma vez depois disso, acho que meu sistema irá acelerar até certo ponto. Corrija-me se eu estiver errado aqui.

Eu também tentei limpar a memória do Bleachbit, mas ele não parece limpar o cache da memória corretamente. Além disso, o recurso ainda está em fase experimental.

memória bleachbit

Já havia uma pergunta semelhante postada aqui: como posso desativar o cache de pré-busca? , mas estava relacionado ao Ubuntu Server, e também as respostas envolviam configurações manuais, etc.

Então, eu quero saber se há algum software para desativar / ativar o Cache de Memória para Ubuntu 12.04.


Tem certeza de que isso resolverá seu problema? A memória não enche sem uma razão. Eu também tive o problema que minha memória estava enchendo e a rastreei de volta tracker-miner. Depois de desinstalar todos os pacotes do rastreador, meu problema desapareceu. Também tenho 4 GB de memória e 2 GB são usados ​​por chaches, mas não estou tendo problemas.
Daniel kullmann 25/06/12

1
@danielkullmann: Ele está se referindo a memória cache, não memória usada por aplicativos ...
ish

@ Izx Sim, eu sei. Pode ser que ele procure a solução do problema errado. O kernel é inteligente o suficiente para não encher a memória com caches quando necessário pelos programas. É por isso que acho que os problemas de memória dele vêm de um programa que usa muita memória.
Daniel kullmann 26/06/12

@danielkullmann: Estou curioso para saber como você o rastreou até um processo que está devorando toda a memória ... Existe alguma ferramenta / comando para isso?
Bharadwaj Srigiriraju

Acabei de usar o comando htop e classificado por uso de memória.
Daniel kullmann 26/06/12

Respostas:


58

Nota: o Linux NÃO está "comendo" sua RAM! Dê uma olhada na excelente resposta de Geirha abaixo para entender por que ...

Após a observação acima, se você ainda acha que "limpar" o cache pode ajudar, certamente pode tentar: é uma linha do terminal:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Não há uma maneira fácil de desativar o cache, mas você pode obter o mesmo efeito limpando-o sempre que a cada minuto , se desejar:

  • Faça um cron-job
  • Pressione Alt-F2, digite gksudo gedit /etc/crontabe adicione esta linha na parte inferior:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Isso limpa a cada 15 minutos. Você pode definir para 1 ou 5 minutos, se realmente desejar , alterando o primeiro parâmetro para *ou em */5vez de*/15

Um liner para conhecer RAM livre REAL, exceto cache

A resposta de Geirha explica os detalhes, mas, em suma, você obtém o número de megabytes gratuitos com:

free -m | sed -n -e '3p' | grep -Po "\d+$"

que no meu servidor de linha de comando de 2 GB retorna uma integridade extremamente alta 1835.


3
Ergh! Nocautear o cache já é ruim o suficiente, mas fazer um cronjob para ele? Quero dizer, isso "resolve" a questão, por assim dizer, mas isso não a torna menos dolorosa.
Reid


@ Izx: hmm ... então é assim que se cria um cronjob. Se vou eliminar o cache periodicamente, isso não significa que estou realmente atrasando o sistema? Se fosse esse o caso, acho que sua resposta parece mais uma resposta teórica do que a resposta de Geirha. : p Boa resposta ...
Bharadwaj Srigiriraju

1
@ForbiddenOverseer: eu apenas coloquei isso porque você queria "desativar" o cache, e largá-lo periodicamente é a única maneira de conseguir isso. Minha observação no topo (e no link da Geirha) afirma claramente que o cache realmente acelera o sistema na maioria das vezes, mesmo que pareça estar "consumindo sua RAM) --- então sim, na IMO você diminuiria a velocidade do sistema , mas você queria tentar, então eu apenas respondi sua pergunta em vez de simplesmente incomodá-lo e dizer que é uma má idéia e que você não deve fazê-lo! Eu apenas lhe dei o poder de experimentar ...: D
ish

1
Estou usando o Ubuntu Server 12.04 LTS como um VDS. Estou tentando a abordagem fornecida nesta resposta, mas estou constantemente obtendo tee: /proc/sys/vm/drop_caches: Permission denied. Alguma dica?
Eimantas

44

Socorro! Linux comeu minha RAM!

www.linuxatemyram.com explica isso muito bem no formulário de perguntas frequentes, com o essencial:

O que está acontecendo?

O Linux está emprestando memória não utilizada para cache de disco. Isso faz parecer que você está com pouca memória, mas não está! Tudo está bem!

Por que está fazendo isso?

O cache de disco torna o sistema muito mais rápido! Não há desvantagens, exceto para iniciantes confusos. Nunca afasta a memória dos aplicativos, nunca!

E se eu quiser executar mais aplicativos?

Se seus aplicativos desejam mais memória, eles apenas recuperam um pedaço emprestado pelo cache do disco. O cache do disco sempre pode ser devolvido aos aplicativos imediatamente! Você não está com pouca memória RAM!

Como vejo quanto de memória livre tenho realmente?

Para ver quanto RAM seus aplicativos poderiam usar sem trocar, execute free -m e veja a coluna "disponível":

$ free -m
              total de buff / cache compartilhado gratuito usado disponível
Mem: 1504 1491 13 0 855       792
Troca: 2047 6 2041
Esta é sua resposta em mebibytes.


Fonte: como mencionado, o excelente www.linuxatemyram.com - visite para mais informações.


1
@geirha: Obrigado pelo link ... Foi muito informativo e gostei das experiências feitas no final !!
Bharadwaj Srigiriraju

@izx: tbh, estou tendo dificuldade para decidir a resposta aceita. Para não mencionar, esta ligação foi realmente informativo em todos os outros ...;)
Bharadwaj Srigiriraju

@ForbiddenOverseer: veja meu comentário na minha resposta para obter uma resposta detalhada - eu dei a você uma versão curta do por que você não deveria fazer isso, mas depois respondi sua pergunta de qualquer maneira, dando-lhe o poder de experimentar e experimentar por si mesmo. Se você não acha que a limpeza / soltando o cache ajuda, só não mais fazer isso :)
ish

@ Izx, achei um pouco difícil fazer isso neste caso. No entanto, você escreveu um texto útil sobre o assunto, então talvez você possa apenas adicionar o URL à sua resposta e excluir a minha resposta?
geirha

Não há necessidade, seu link é um excelente recurso; Acabei de incorporar algumas partes da resposta (com atribuição), para que agora seja uma alternativa perfeitamente válida (na verdade, a melhor resposta vista pelo público!) Ótimo trabalho, votado - bem-vindo ao 5k!
Ish

4

Para verificar seu uso atual da memória

 watch -n 1 free -m

ou

 watch -n 1 cat /proc/meminfo

Para liberar espaço

 sudo sysctl -w vm.drop_caches=3

NOTA: esta ação não tornará seu sistema mais rápido, nem afetará sua estabilidade e desempenho, apenas limpará a memória usada pelo Kernel Linux nos caches.

ou

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

NOTA: Você pode usar tarefas cron para agendar os comandos acima para serem executados em intervalos de tempo específicos.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.