Palavras-chave: linux, cache, buffers, limpeza, memória, carregamento, disco, filesystem
O Linux mantém em memória os dados recentemente carregados do disco, e ali eles ficam enquanto possível. Isso acelera o processo de carregamento destes mesmos dados no futuro, como na execução de programas e leitura de arquivos.
As áreas na memória que carregam esses dados chamam-se caches. Você pode notar os caches em ação quando roda um programa pela segunda vez e ele carrega muito mais rapidamente que na primeira.
Mas às vezes é necessário fazer algum teste onde esse efeito de cache deve ser anulado, por exemplo, medir tempo de carregamento de um programa, ou o tempo necessário para processar algum arquivo. Já vi gente reiniciando a máquina só para poder ter uma medição confiável no tempo de carregamento de um programa.
Para economizar nosso tempo e paciência, e ter um efeito semelhante sem precisar reiniciar a máquina, podemos pedir ao kernel que limpe todos os caches que estiverem em memória. Basta usar uma entrada no /proc
, existente nas versões mais recentes do kernel, rodando o comando:
echo 1 > /proc/sys/vm/drop_caches
Só uma observação: essa feature é relativamente nova no kernel (acho que 2.6.16 após uma rápida “googlada”). Segue um link com mais detalhes:
http://linux.inet.hr/proc_sys_vm_drop_caches.html
Ou tambem utilizando o “sysctl” para manipular os files do proc.
[root@muriqui:home]# sysctl vm.drop_caches
vm.drop_caches = 3
[root@muriqui:home]# sysctl -w vm.drop_caches=1
vm.drop_caches = 1
[root@muriqui:home]# sysctl vm.drop_caches
vm.drop_caches = 1
[root@muriqui:home]#
done
=)
Resolveu meu problema de lerdeza no Apache2 após certo tempo de utilização.
“Armazenamento de lixo”.
Obrigado