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.