Como limpar o cache no Linux

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

Como funciona o cache do sistema de arquivos Linux

O kernel se reserva uma certa quantidade de memória do sistema para armazenar em cache os acessos de disco do sistema de arquivos para tornar o desempenho geral mais rápido. O cache em Linux é chamado de Cache da página. O tamanho do cache da página é configurável com padrões generosos habilitados para 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 do cache do Linux é chamada de cache de gravação. Isso significa que, se os dados forem gravados no disco, 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 do sistema de leitura do Linux, o kernel verificará se os dados solicitados sã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 nenhum IO para o sistema de disco. Para um cache, a falta dos dados será buscada no sistema IO e o cache atualizado com base nas políticas de cache, pois esses mesmos dados provavelmente serão solicitados novamente.

Quando certos limiares de uso da memória forem alcançados, as tarefas de fundo começarão a escrever dados sujos no disco para garantir que ele esteja limpando o cache de memória. Isso pode ter um impacto no desempenho de aplicações intensivas em memória e CPU e requer ajuste por administradores e / ou desenvolvedores.

Usando comando grátis para visualizar o uso do cache

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

# grátis -m

O que vemos do livre Comando acima é que há 7.5 GB de RAM neste sistema. Deste apenas 209 Mb é usado e 6.5 MB é grátis. 667 MB é usado no cache do buffer. Agora vamos tentar aumentar esse número executando um comando para gerar um arquivo de 1 gigabyte e ler o arquivo. O comando abaixo gerará aproximadamente 100 MB de dados aleatórios e depois anexará 10 cópias do arquivo juntas em um grande_file.

# dd if =/dev/aleatório de =/root/data_file count = 1400000
# para i na 'seq 1 10'; eco $ i; gato data_file >> grande_file; feito

Agora vamos ler este arquivo de 1 Gig e verificar o comando gratuito novamente:

# gato grande_file> /dev /null
# grátis -m

Podemos ver o uso do cache do buffer aumentou de 667 para 1735 megabytes um aumento de aproximadamente 1 gigabyte no uso do cache do buffer.

Proc Sys VM Drop Caches Comando

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

# eco 1>/proc/sys/vm/Drop_caches
# grátis -m

Podemos ver acima que a maioria da alocação de cache do buffer foi libertada com este comando.

Verificação experimental que solta os caches

Podemos fazer uma validação de desempenho de usar o cache para ler o arquivo? Vamos ler o arquivo e escrever de volta para /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! Levou 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 novamente limpando o cache e depois lendo o arquivo 2 vezes.

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

Conclusão

O cache da página é ativado automaticamente nos sistemas Linux e tornará transparentemente o IO mais rápido, armazenando dados usados ​​recentemente no cache. Se você deseja limpar manualmente o cache que pode ser feito facilmente, enviando um comando de eco para o sistema de arquivos /proc indicando ao kernel soltar o cache e libertar a memória usada para o cache. As instruções para a execução do comando foram mostradas acima neste artigo e a validação experimental do comportamento do cache antes e depois da descarga também foram mostradas.