Desempenho

Como limpar o cache no Linux

Como limpar o cache no Linux
O cache do sistema de arquivos linux (Cache de página) é usado para tornar as operações de IO mais rápidas.  Sob certas circunstâncias, um administrador ou desenvolvedor pode querer limpar manualmente o cache.  Neste artigo, explicaremos como o cache do Linux File System funciona.  Em seguida, demonstraremos como monitorar o uso do cache e como limpá-lo.  Faremos alguns experimentos de desempenho simples para verificar se o cache está funcionando conforme o esperado e se o procedimento de limpeza e limpeza do cache também está funcionando conforme o esperado.

Como funciona o cache do sistema de arquivos Linux

O kernel reserva uma certa quantidade de memória do sistema para armazenar em cache os acessos ao disco do sistema de arquivos, a fim de tornar o desempenho geral mais rápido.  O cache no Linux é chamado de Cache de página. O tamanho do cache de página é configurável com padrões generosos habilitados para armazenar em cache grandes quantidades de blocos de disco.  O tamanho máximo do cache e as políticas de quando despejar dados do cache são ajustáveis ​​com os parâmetros do kernel.  A abordagem de cache do Linux é chamada de cache de write-back.  Isso significa que se os dados são gravados no disco, eles são gravados na memória no cache e marcados como sujos no cache até que sejam sincronizados com o disco.  O kernel mantém estruturas de dados internas para otimizar quais dados despejar do cache quando mais espaço é necessário no cache.

Durante as chamadas de sistema de leitura do Linux, o kernel verificará se os dados solicitados estão armazenados em blocos de dados no cache, isso seria um acerto de cache bem-sucedido e os dados serão retornados do cache sem fazer qualquer IO para o sistema de disco.  Para uma perda de cache, os dados serão obtidos do sistema IO e o cache atualizado com base nas políticas de cache, pois esses mesmos dados provavelmente serão solicitados novamente.

Quando certos limites de uso de memória são atingidos, as tarefas em segundo plano começam a gravar dados sujos no disco para garantir que estão limpando o cache de memória.  Isso pode ter um impacto no desempenho de aplicativos com uso intensivo de memória e CPU e exigir ajuste por administradores e / ou desenvolvedores.

Usando o comando Free para visualizar o uso do cache

Podemos usar o comando free da linha de comando para analisar a memória do sistema e a quantidade de memória alocada para o cache.  Veja o comando abaixo:

# free -m

O que vemos do gratuitamente comando acima é que há 7.5 GB de RAM neste sistema.  Destes, apenas 209 MB são usados ​​e 6.5 MB é grátis.  667 MB são usados ​​no cache de buffer.  Agora vamos tentar aumentar esse número executando um comando para gerar um arquivo de 1 Gigabyte e lendo o arquivo.  O comando abaixo irá gerar aproximadamente 100 MB de dados aleatórios e, em seguida, anexar 10 cópias do arquivo em um arquivo_grande.

# dd if = / dev / random of = / root / data_file count = 1400000
# para i em 'seq 1 10'; faça echo $ i; cat data_file >> large_file; feito

Agora vamos nos certificar de ler este arquivo de 1 Gig e, em seguida, verificar o comando gratuito novamente:

# cat large_file> / dev / null
# free -m

Podemos ver que o uso do cache de buffer aumentou de 667 para 1735 Megabytes, um aumento de cerca de 1 Gigabyte no uso do cache de buffer.

Comando Proc Sys VM Drop Caches

O kernel do linux fornece uma interface para descartar o cache, vamos experimentar esses comandos e ver o impacto na configuração gratuita.

# echo 1> / proc / sys / vm / drop_caches
# free -m

Podemos ver acima que a maior parte da alocação do cache do buffer foi liberada com este comando.

Verificação Experimental de que Drop Caches Funciona

Podemos fazer uma validação de desempenho de uso do cache para ler o arquivo? Vamos ler o arquivo e gravá-lo de volta em / dev / null para testar quanto tempo leva para ler o arquivo do disco.  Vamos cronometrar com o Tempo comando.  Fazemos este comando imediatamente após limpar o cache com os comandos acima.

Demorou 8.4 segundos para ler o arquivo.  Vamos ler novamente agora que o arquivo deve estar no cache do sistema de arquivos e ver quanto tempo leva agora.

estrondo!  Demorou apenas .2 segundos em comparação com 8.4 segundos para lê-lo quando o arquivo não foi armazenado em cache.  Para verificar, vamos repetir isso primeiro limpando o cache e depois lendo o arquivo 2 vezes.

Funcionou perfeitamente como esperado.  8.5 segundos para a leitura não armazenada em cache e .2 segundos para a leitura em cache.

Conclusão

O cache de página é habilitado automaticamente em sistemas Linux e tornará o IO mais rápido de forma transparente, armazenando dados usados ​​recentemente no cache.  Se você quiser limpar o cache manualmente, isso pode ser feito facilmente enviando um comando echo para o sistema de arquivos / proc indicando ao kernel para remover o cache e liberar a memória usada para o cache.  As instruções para executar o comando foram mostradas acima neste artigo e a validação experimental do comportamento do cache antes e depois da limpeza também foi mostrada.

Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...
Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...
Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...