Onde está minha memória RAM se não está em cache / buffers ou é usada por processos?

3

Eu sei que o Linux gosta de comer minha memória RAM, e isso é ótimo, mas não conta exatamente o que estou vendo em um VPS (KVM) rodando o CentOS 6.5. Na verdade, estou perdendo pelo menos 200 MB em uma VM de 1 GB. Onde poderia estar?

             total       used       free     shared    buffers     cached
Mem:           996        907         89          0         76        379
-/+ buffers/cache:        451        545
Swap:         1023          5       1018

free -m sugere que, sem buffer / cache, o sistema usa 451 MB de memória. No entanto, não há como os programas em execução (principalmente nginx / php-fpm / mysqld / sshd) adicionarem muita memória RAM.

ps_mem relata que 90MB estão atualmente em uso por programas, e aqui está o que smem diz:

Area                           Used      Cache   Noncache
firmware/hardware                 0          0          0
kernel image                      0          0          0
kernel dynamic memory        820912     775204      45708
userspace memory              96300      27988      68312
free memory                  103168     103168          0
----------------------------------------------------------
                            1020380     906360     114020

Existe alguma coisa fora dos processos de execução visíveis que possam estar comendo minha RAM? Ou está livre -m relatando incorretamente o uso de memória? Alguma dica sobre como recuperar essa memória (sem reinicializar)?

Resultados de cat /proc/meminfo : link

EDIT: Acaba por ser um grande cache de laje, veja: link . Eu estava confuso por ser muito maior do que estou acostumado, e o fato de que ferramentas como free -m , htop e similares relatam isso como memória usada em vez de cache / buffers.

    
por redburn 17.02.2014 / 15:30

2 respostas

3

  1. free -m está correto. Eu não estou familiarizado com ps_mem , mas suspeito que está relatando apenas certos tipos de uso de memória pelos programas. Tente usar top -a , veja se ele fornece mais informações.

  2. A memória provavelmente é usada pelo espaço "recurso" dos programas. Reiniciá-los vai esclarecer algumas dessas coisas, mas eu ficaria surpreso se não voltasse ao mesmo lugar em uma hora.

  3. Por que você quer "recuperar" essa memória? Você não está fora da RAM. Memória "livre" é memória desperdiçada. Seria melhor você usar 100%, mesmo que apenas para obter os ganhos de desempenho mais marginais (é por isso que o Linux o utiliza para fazer o cache de forma agressiva).

  4. Veja também: Por que o Linux relata a memória "gratuita" de maneira estranha?

    Parece que você tem os mesmos mal-entendidos de utilização de memória de muitas pessoas. Este Q & A tem uma ótima explicação do que está acontecendo, juntamente com links para mais informações. Mas, em suma, a menos que o OOM esteja eliminando processos, deixe que o sistema operacional faça isso. Sério, os programadores do kernel dedicaram grandes porções de suas vidas para acertar isso, eu não ouso questionar seus conhecimentos a menos que haja um problema óbvio.

por 17.02.2014 / 15:41
2

tente conferir:

cat / proc / meminfo

pode fornecer as informações extras necessárias:)

    
por 17.02.2014 / 15:40

Tags