Por que drop_caches aumenta a memória “disponível”

Por que drop_caches aumenta a memória “disponível”

Encontro problemas de pouca memória nos nós do proxmox 7 que estou gerenciando. Ao ler sobre problemas semelhantes fui direcionado para linuxatemyram.com, depois de ler esta página comecei a monitorar a memória "disponível" em vez da memória "usada". Mas o problema persistiu (a memória disponível diminui com o tempo de atividade).

Descobri então que poderia forçar caches Linux gratuitos emitindo o comando echo 3 > /proc/sys/vm/drop_caches. Eu esperava ver a memória "usada" ficando livre, mas não esperava que a memória "disponível" aumentasse porque, pelo que entendi, a memória disponível também é considerada usada porque é usada pelo Linux para armazenamento em cache.

Mas a memória "disponível" aumentou após drop_caches, como você pode ver abaixo:

root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        29Gi       1.1Gi        67Mi       258Mi       977Mi
Swap:             0B          0B          0B
root@proxmox13:~$ echo 2 > /proc/sys/vm/drop_caches
root@proxmox13:~$ free -h
               total        used        free      shared  buff/cache   available
Mem:            31Gi        26Gi       4.1Gi        67Mi       205Mi       3.9Gi
Swap:             0B          0B          0B

Por que aumentou? Por que a memória liberada não foi considerada disponível antes se foi usada para armazenamento em cache?

Obrigado pela ajuda.

Responder1

Em alto nível, disponível é gratuitomaiscaches e outras coisas fáceis de recuperar, para a conveniência dos humanos.https://www.linuxatemyram.com/usos disponíveis na tentativa de explicar o que está acontecendo. Existem outros contadores para vários caches que excluem o gratuito.

Na realidade, o Linux VMM é complicado e confuso. Raramente o uso da memória corresponde exatamente à contabilidade simples. Eu pensoArmazenado em cache em /proc/meminfo significa cache de páginamas você também caiudentries e inodes. Então buff/cache no free não mudou muito. Experimente o Slabtop se precisar se aprofundar nos objetos do kernel.

Um GB disponível em 32 não é muito do ponto de vista do planejamento de capacidade. Considere reduzir o número de convidados por host VM ou aumentar a memória física.

Não use /proc/sys/vm/drop_cacheso que provavelmente prejudicará o desempenho devido ao trabalho de eliminar os caches e de reler os dados do disco. Isso é para testes de desempenho de armazenamento frio, quando as pessoas sentem preguiça de reinicializar o host.

Falando em reinicializações, os programas não precisam vazar memória para que a disponibilidade diminua lentamente. Os hosts da VM e os convidados internos estão executando provavelmente milhares de tarefas, algumas das quais permanecem em execução e mantêm várias alocações de memória. Você deve reiniciar a cada poucos meses para atualizações de software; portanto, desde que o "vazamento" seja lento, talvez não valha a pena investigar em detalhes.

Melhore o monitoramento da sua memória observando tambéminformações de parada de pressão. A métrica que realmente me interessa é se as tarefas estão paralisadas por falta de memória, e o PSI rastreia isso.

informação relacionada