Estou executando um script python para fazer algumas estatísticas e a memória usada é baixa, cerca de 10%. E nenhum outro processo custa mais memória free -m
. O ponto é que meu script deve ler bastante os arquivos, então me pergunto se existe algum mecanismo de cache de memória do Linux que causou o problema. echo 1 >> /proc/sys/vm/drop_caches
funciona, mas parece manualmente. Como posso reduzir o custo de memória e não prejudicar a leitura de arquivos?
Responder1
O kernel do Linux armazena automaticamente os arquivos na memória para maior eficiência. Isso não é uma coisa ruim. Ao executar free -m
você verá à direita a quantidade de memória usada no cache. Se um aplicativo precisar de memória, o kernel liberará parte do cache. Você não deve tentar administrar isso sozinho.
Responder2
Não acho que você tenha um problema real aqui.
Por que você se importa com a quantidade total de memória que está sendo usada? Está doendo alguma coisa?
O Linux tenta usar sua memória da maneira mais eficiente possível. Se você tiver muita memória livre e estiver lendo muitos arquivos, ele usará a memória livre para armazenar esses arquivos em cache. Se você tiver muita memória ativa, usará muito menos memória para armazenamento em cache. É assim que deveria funcionar. Se você não quiser que a memória seja usada, retire os chips do seu computador.
Existem alguns casos incomuns em que muito cache pode ser ruim. Talvez a explosão de leitura sempre aconteça logo antes de uma explosão de alocação de memória. Talvez algo no seu caso específico signifique que não há benefício possível e você precise reduzir os últimos 0,1% de custo de desempenho. Talvez você esteja em um sistema embarcado que usa RAM com vida útil limitada. Se você tiver um caso assim, conte-nos qual é.