Pesquisa de site

Como limpar cache, buffer e troca de memória RAM no Linux


Como qualquer outro sistema operacional, o GNU/Linux implementou o gerenciamento de memória de forma eficiente e ainda mais do que isso. No entanto, se algum processo estiver consumindo sua memória e você quiser limpá-lo, o Linux oferece uma maneira de liberar ou limpar o cache de RAM.

Neste artigo, exploraremos como limpar o cache, o buffer e o espaço de troca da memória RAM em um sistema Linux para melhorar o desempenho geral.

Compreendendo o cache, o buffer e o espaço de troca da memória RAM

Vamos explorar o cache, o buffer e o espaço de troca da memória RAM em um sistema Linux.

Cache de memória RAM

O cache de memória RAM é um mecanismo usado pelo kernel para manter os dados acessados regularmente. Embora isso aumente a capacidade de resposta do sistema, um cache sobrecarregado pode levar à retenção de dados obsoletos, afetando o desempenho.

Amortecedor

Assim como o cache, o buffer retém os dados temporariamente, mas difere em sua finalidade. Os buffers armazenam dados transferidos entre componentes como CPU e disco rígido, facilitando a comunicação tranquila. No entanto, um excesso de dados armazenados em buffer pode prejudicar a velocidade do sistema.

Trocar espaço

Espaço de troca é uma área alocada no disco rígido que atua como memória virtual quando a RAM física se esgota. Embora evite travamentos do sistema devido à falta de memória, pode tornar o sistema lento se for usado em excesso.

Limpando cache, buffer e espaço de troca no Linux

Em certas situações, pode ser necessário limpar o cache, o buffer ou o espaço de troca conforme explicado abaixo.

Como limpar o cache de memória RAM no Linux?

Cada sistema Linux possui três opções para limpar o cache sem interromper nenhum processo ou serviço.

Limpando PageCache

1. Para limpar apenas o PageCache, você pode usar o seguinte comando, que limpará especificamente o PageCache, ajudando a liberar recursos de memória.

sudo sync; echo 1 > /proc/sys/vm/drop_caches

Limpando Dentries e Inodes

2. Para limpar apenas os dentries e os inodes, você pode usar o seguinte comando, que sincronizará o sistema de arquivos e limpará os dentries e os inodes, melhorando o desempenho do sistema liberando diretório em cache e informações de inode.

sudo sync; echo 2 > /proc/sys/vm/drop_caches

Limpando PageCache, Dentries e Inodes

3. Para limpar o pagecache, dentries e inodes, você pode usar o seguinte comando, que irá sincronizar o sistema de arquivos e limpar o pagecache, dentries e inodes, ajudando a liberar memória e melhorar o desempenho do sistema.

sudo sync; echo 3 > /proc/sys/vm/drop_caches 

Aqui está uma explicação de cada parte do comando acima:

  • O sudo é usado para executar o comando como superusuário.
  • O sync liberará o buffer do sistema de arquivos.
  • O “; ” ponto e vírgula é usado para separar vários comandos em uma única linha.
  • O comando echo 3 > /proc/sys/vm/drop_caches é usado para eliminar o cache da página, uma área de armazenamento temporário para arquivos acessados recentemente.

Nota: O arquivo drop_caches controla qual tipo de dados em cache deve ser limpo e os valores são os seguintes:

  • 1 – Limpa apenas o cache da página.
  • 2 – Limpa dentries e inodes.
  • 3 – Limpa o cache da página, dentries e inodes.

Conforme mencionado na documentação do kernel, escrever em drop_caches limpará o cache sem matar nenhum aplicativo/serviço, o comando echo está fazendo o trabalho de escrever no arquivo.

Se você precisar limpar o cache do disco, o primeiro comando é mais seguro na empresa e na produção como “...echo 1 >…. ” limpará apenas o PageCache.

Não é recomendado usar a terceira opção acima de “...echo 3 > ” em produção até que você saiba o que está fazendo, pois isso limpará pagecache, dentries e inodes.

Como limpar espaço de troca no Linux?

Para liberar espaço de swap, você pode usar o comando swapoff com a opção -a, que desabilitará todas as partições swap.

sudo swapoff -a

Em seguida, volte executando o seguinte comando, que ativará todas as partições swap.

sudo swapon -a

É aconselhável liberar buffer, cache e swap no Linux?

Em geral, não é uma boa ideia liberar manualmente o Buffer e o Cache no Linux que podem ser usados pelo kernel do Linux, que é projetado para gerenciar esses recursos de forma eficiente, e limpá-los manualmente pode atrapalhar o desempenho do sistema.

No entanto, pode haver situações raras em que você precise limpar o Buffer e o Cache, como se você estiver enfrentando uma forte pressão de memória e não conseguir liberar memória por outros meios. Nesses casos, você deve proceder com cautela e estar ciente do impacto potencial no desempenho.

Da mesma forma, limpar o espaço de troca no Linux geralmente não é uma rotina ou prática aconselhável em circunstâncias normais.

Automatizando a otimização de memória

Para automatizar o processo e limpar regularmente a memória, você pode configurar um cron job para executar os comandos em intervalos especificados.

Abra a configuração do crontab.

crontab -e

Adicione as seguintes linhas para limpar o cache, o buffer e o espaço de troca diariamente à meia-noite:

0 0 * * * sudo sync; echo 3 > /proc/sys/vm/drop_caches
0 0 * * * sudo echo 1 > /proc/sys/vm/drop_caches
0 0 * * * sudo sync; echo 2 > /proc/sys/vm/drop_caches
0 0 * * * sudo swapoff -a && sudo swapon -a

Para obter informações adicionais sobre como agendar um trabalho com cron, você pode consultar nosso artigo intitulado ‘11 Cron Scheduling Jobs’.

É aconselhável limpar o cache RAM em um servidor de produção Linux?

Não não é. Considere um cenário em que você agendou um script para limpar o cache de RAM todos os dias às 2h. Todos os dias, às 2h, o script é executado, liberando o cache de RAM. No entanto, um dia, um número inesperadamente elevado de utilizadores está online no seu site, colocando uma procura significativa nos recursos do seu servidor.

Simultaneamente, o script agendado é executado e limpa tudo no cache. Agora, todos os usuários estão recuperando dados do disco, o que pode levar à falha do servidor e à corrupção do banco de dados. Portanto, é fundamental limpar o cache RAM somente quando necessário, estando atento às suas ações. Caso contrário, você corre o risco de se tornar um administrador do sistema Cargo Cult.

Conclusão

O gerenciamento eficiente de memória é crucial para um sistema Linux funcionando perfeitamente. Limpar regularmente o cache, o buffer e o espaço de troca da memória RAM pode melhorar significativamente o desempenho do sistema. Ao compreender esses mecanismos e empregar os comandos fornecidos, você pode manter seu sistema Linux funcionando da melhor forma.

É tudo por agora. Se você gostou do artigo, lembre-se de compartilhar seus valiosos comentários nos comentários. Deixe-nos saber sua opinião sobre o que você acredita ser uma boa abordagem para limpar o cache e o buffer de RAM em ambientes de produção e corporativos.