Como qualquer outro sistema operacional, o GNU / Linux implementou o gerenciamento de memória com eficiência e até mais do que isso. Mas se algum processo estiver consumindo sua memória e você quiser limpá-lo (liberar), o GNU/Linux fornece uma maneira de limpar o cache de RAM.
Todo sistema Linux tem três opções para limpar o cache sem interromper nenhum processo ou serviço.
1- Limpe o cache apenas:# sync; echo 1 > /proc/sys/vm/drop_caches
2- Limpar dentries e inodes:
# sync; echo 2 > /proc/sys/vm/drop_caches
3- Limpar cache, dentries e inodes.
# sync; echo 3 > /proc/sys/vm/drop_caches
Vamos ver o que é cada coisa.
O sync limpará o buffer do sistema de arquivos. O caractere “;” é executado sequencialmente. O shell aguarda que cada comando termine antes de executar o próximo comando na sequência. Como mencionado na documentação principal, escrever drop_cache limpará o cache sem matar nenhum aplicativo/serviço, o comando echo está fazendo o trabalho de gravar em um arquivo.
Se você tiver que esvaziar o cache de disco, o primeiro comando é o mais seguro em uma empresa e produção, porque “… echo 1> ….” Apenas esvaziará o PageCache. Não é recomendado usar a terceira opção “… echo 3>” em produção até que você saiba o que está fazendo, pois você apagará PageCache, dentries e inodes.
É uma boa idéia liberar o Buffer e o Cache no GNU / Linux que podem ser usados pelo Kernel do Linux?
Quando você está aplicando várias configurações e deseja verificar se elas estão implementadas, especialmente no benchmark extenso de I/O, talvez seja necessário limpar o cache de buffer. Você pode descartar o cache conforme explicado acima sem reiniciar o sistema, ou seja, sem a necessidade de tempo de inatividade.
O GNU/Linux foi projetado de tal forma que procura no cache do disco antes de olhar para o disco. Se encontrar o recurso no cache, a solicitação não alcançará o disco. Se limparmos o cache, o cache de disco será menos útil, pois o sistema operacional procurará o recurso no disco.
Além disso, ele também reduz a velocidade do sistema por alguns segundos enquanto o cache é limpo e todos os recursos exigidos pelo sistema operacional são carregados de volta no cache de disco.
Agora vamos criar um script de shell para limpar automaticamente o cache de RAM diariamente às 2:00 através de uma tarefa Cron. Crie um arquivo de comando shell cleancache.sh e adicione as seguintes linhas:
#!/bin/bash # Tenha em mente que estamos usando "echo 3", mas não é recomendado na produção, em vez disso, use "echo 1". echo "echo 3 > /proc/sys/vm/drop_caches"
Defina a permissão de execução no arquivo limparcache.sh.
# chmod 755 limparcache.sh
Agora você pode chamar o script sempre que precisar limpar o cache de RAM.
Agora defina um cron para limpar o cache de RAM todos os dias às 2:00. Abra a guia crontab para editar.
# crontab -e
Adicione a linha abaixo, salve e saia para executar às 2:00 diariamente.
0 2 * * * /caminho/a/limparcache.sh
É uma boa ideia excluir automaticamente o cache de RAM no servidor de produção?
Não! Não é. Pense em uma situação na qual você programou o script para limpar o cache de RAM todos os dias às 2 da manhã. Todos os dias às 2 da manhã o script é executado e o cache de RAM é esvaziado. Um dia, por qualquer motivo, pode haver mais usuários do que o esperado on-line em seu site, gastando recursos em seu servidor.
Ao mesmo tempo, o script é executado e apaga tudo no cache. Agora todos os usuários estão recebendo dados do disco. Isso resultará em uma falha do servidor e danificará o banco de dados. Portanto, limpe o cache de RAM somente quando necessário.
Agora, como podemos tornar a troca de memória livre?
# swapoff -a && swapon -a
Você também pode adicionar o comando acima a um script cron anterior, depois de entender todo o risco associado.
Agora, combinaremos os dois comandos anteriores em um único comando para criar um script adequado para apagar o cache de RAM e o espaço de troca.
# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Cache de RAM e Swap liberadas' O ok $ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Cache de RAM e Swap liberadas'" root
Após testar os dois comandos, executaremos o comando “free -h” antes e depois de executar o script e verificaremos o cache.