Sobre o cache de memória do Linux

4

Eu estou executando um script python para fazer algumas estatísticas e a memória que realmente usou é baixa, cerca de 10% .E nenhum outro processo custou mais memória.No entanto, quando eu uso free -m e mostra que quase 95% a memória tem sido usada.O ponto é que o meu script deve fazer um monte de leitura de arquivos, então eu me pergunto se existe algum mecanismo de cache de memória 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 faz um efeito ruim na leitura de arquivos?

    
por cheneydeng 28.09.2012 / 09:05

2 respostas

7

O kernel do Linux armazena automaticamente os arquivos na memória para 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 da memória, o kernel liberará parte do cache. Você não deve tentar gerenciá-lo sozinho.

    
por 28.09.2012 / 09:17
5

Eu não acho que você tenha um problema real aqui.

Por que você se importa quanta memória total está sendo usada? Está doendo alguma coisa?

O Linux tenta usar sua memória da forma mais eficiente possível. Se você tiver toneladas de memória livre e estiver lendo muitos arquivos, ela usará a memória livre para armazenar esses arquivos em cache. Se você tiver toneladas de memória ativa, usará muito menos memória para o armazenamento em cache. É assim que deve funcionar. Se você não quiser que a memória seja usada, tire os chips do computador.

Existem alguns casos incomuns em que muita cache pode ser ruim. Talvez a explosão de leitura sempre aconteça antes de uma explosão de alocação de memória. Talvez algo sobre o seu caso específico signifique que não há nenhum benefício possível, e você precisa extrair esse último custo de desempenho de 0,1%. Talvez você esteja em um sistema embarcado que usa RAM com uma vida útil limitada. Se você tem esse caso, diga-nos o que é isso.

    
por 28.09.2012 / 09:14