image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
CARLOS
CARLOS01/10/2023 20:23
Compartilhe

SISTEMAS LINUX

    Matéria de Elias Praciano

    Use sync e sysctl para esvaziar a memória cache no Linux

    Conheça alguns métodos para limpar a memória cache no Linux.

    image

    Neste post, vou mostrar como usar algumas ferramentas de linha de comando para escoar o cache da memória RAM.

    O objetivo deste post é dar aos iniciantes um pouco mais de conhecimento sobre gerenciamento de memória no Linux e alguns comandos para gestão do sistema de cache.

    image

    Clique, para mais detalhes.

    Em que casos é necessário limpar a memória cache do meu sistema?

    Em duas palavras: quase nunca.

    O sistema já tem um excelente gerenciamento de memória e a tendência é sempre aproveitar toda a quantidade de memória disponível no seu computador ou smartphone, caso você esteja usando o Android.

    A função do caching é tornar o sistema mais veloz, na medida em que ele mantém sempre à mão as informações mais requisitadas. O Linux é extremamente eficiente nisto e não há por que “se meter” neste processo e fazer o trabalho “manualmente”.

    Em alguns casos, contudo, o processo de escoamento do cache pode ser útil.

    Ao transferir arquivos muito volumosos (vídeos, por exemplo) do seu HD para um pendrive ou um HD externo, conectado na entrada USB, o Linux usa muito o sistema de caching, como sistema intermediário de armazenamento.

    O motivo de o Linux usar intensivamente o caching é que o seu dispositivo interno transfere os dados muito mais rápido do que os dispositivos externos conseguem absorver.

    Este é um dos motivos para você não conseguir desmontar/ejetar um pendrive ou qualquer outro dispositivo conectado — por que ele ainda não gravou todos os dados, ainda armazenados no cache.

    Como esvaziar o cache

    Os comandos sysctl e o sync podem ser usados em conjunto ou separados para realizar a tarefa.

    Vamos verificar, antes, se o cache está sendo usado. Para isto, abra um terminal e digite o seguinte comando:

    free -m

                 total      usado     livre   compart. buffers    em cache

    Mem:         3,6G      2,9G      723M      172M      3,5M      1,5G

    -/+ buffers/cache:      1,4G      2,2G

    Swap:         15G        0B       15G

    Observe a última coluna em cache.

    No exemplo acima, há quase 1,5 Gb da memória cache em uso.

    Para limpar o cache será necessário executar comandos com privilégios administrativos.

    Veja como:

    sudo sync

    sudo sysctl -w vm.drop_caches=3

    sudo sysctl -w vm.drop_caches=0

    alternativamente, você pode executar os 3 comandos, em uma linha só:

    sudo sync && sudo sysctl -w vm.drop_caches=3 && sudo sysctl -w vm.drop_caches=0

    Saiba o que a linha de comando acima faz:

    • sync — este comando, assegura que os dados pendentes no sistema de cache sejam escoados pro disco.
    • sysctl -w vm.drop_caches = 3 — limpa o cache na memória
    • sysctl -w vm.drop_caches = 0 — reinicia o drop cache.

    Veja o resultado:

                 total      usado     livre   compart. buffers    em cache

    Mem:         3,6G      1,7G      1,8G      124M        0B      351M

    -/+ buffers/cache:      1,4G      2,2G

    Swap:         15G      156K       15G

    Observe como o uso do cache foi drasticamente reduzido.

    Esta linha de comando pode ser usada para limpar o cache armazenado na memória RAM.

    Método alternativo

    O método anterior funciona bem no Ubuntu.

    Mas pode não dar resultado em outras distros. Neste caso, recomendo usar o comando sync das seguintes formas:

    Para liberar pagecache, dentries e inodes, use o sync desta maneira:

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

    Para liberar dentries e inodes use-o assim:

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

    Para liberar apenas o pagecache, faça assim:

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

    Se você conhece outras maneiras para realizar o serviço, seja bem vindo para comentar sobre isso.

    Não esqueça de compartilhar o post! 😉

    GLOSSÁRIO

    • drop cache — versões superiores à 2.6.15 do kernel do Linux, dispõem de um mecanismo que faz o kernel eliminar o page cache e/ou o cache de inodes e o cache dentry — o que pode auxiliar significativamente na liberação de memória no sistema.
    • Para fazer uso manual do /proc/sys/vm/drop_caches, basta gravar um número nele — o que pode ser feito com o comando echo.
    • page cache — também chamado de disk cache é uma cópia de parte dos dados do disco, mantida na memória RAM, pelo sistema operacional.
    • O objetivo é dar acesso mais rápido a estes dados ao usuário.
    • dentries — A palavra “dentry” é uma abreviatura para “directory entry” (entrada de diretório).
    • Uma dentry é nada além de um componente específico no caminho para um arquivo a partir da raiz do sistema. Sua função é prover acesso a arquivos e diretórios. Mohan, I. Chandra (2013)
    • inodes — “inode” é abreviatura para “index node“. Em um sistema de arquivos Unix, um inode é uma estrutura de dados usada para representar um objeto do sistema de arquivos – qual seja um arquivo, um diretório etc.
    • Cada inode armazena os atributos e localizações dos blocos do disco referentes ao sistema de arquivos.
    • buffers — memória usada temporariamente para armazenar dados em tráfego no sistema.
    Compartilhe
    Comentários (0)