Significado da linha de buffers / cache na saída de free

168

Por que meu servidor mostra

            total      used      free   shared buffers    cached
    Mem: 12286456  11715372    571084        0   81912   6545228
-/+ buffers/cache:  5088232   7198224
   Swap: 24571408     54528  24516880

Não faço ideia de calcular a memória no linux. Eu acho que diz que 5088232 é usado onde 7198224 é gratuito, o que significa que está realmente consumindo 5 GB de RAM?

Muahmmad Zeeshan
fonte

Respostas:

232

Significado dos valores

A primeira linha significa:

  • total: Sua RAM total (física) (excluindo um pouco que o kernel reserva permanentemente para si mesmo na inicialização); é por isso que mostra ca. 11,7 GiB, e não 12 GiB, o que você provavelmente possui.
  • used: memória em uso pelo sistema operacional.
  • free: memória não em uso.

total= used+free

  • shared/ buffers/ cached: Mostra o uso da memória para fins específicos, esses valores estão incluídos no valor para used.

A segunda linha fornece os valores da primeira linha ajustados. Ele fornece o valor original para used menos a soma buffers+cachede o valor original para free mais a soma buffers+cached, daí o título. Esses novos valores geralmente são mais significativos do que os da primeira linha.

A última linha ( Swap:) fornece informações sobre o uso do espaço de troca (ou seja, o conteúdo da memória que foi temporariamente movido para o disco).

fundo

Para realmente entender o que os números significam, você precisa de um pouco de conhecimento sobre o subsistema de memória virtual (VM) no Linux. Apenas uma versão curta: o Linux (como o sistema operacional mais moderno) sempre tenta usar RAM grátis para armazenar coisas em cache, portanto Mem: free, quase sempre será muito baixo. Portanto, a linha -/+ buffers/cache:é mostrada, porque mostra quanta memória está livre ao ignorar caches; os caches serão liberados automaticamente se a memória ficar escassa, para que eles realmente não importem.

Um sistema Linux está realmente com pouca memória se o freevalor na -/+ buffers/cache:linha ficar baixo.

Para mais detalhes sobre o significado dos números, consulte, por exemplo, as perguntas:

Alterações nos procps 3.3.10

Observe que a saída de freefoi alterada no procps 3.3.10 (lançado em 2014). As colunas relatadas agora são "total", "usadas", "gratuitas", "compartilhadas", "buff / cache", "disponíveis" e os significados de alguns dos valores alterados, principalmente para melhor explicar a laje do kernel do Linux cache.

Veja o relatório de Bug Debian # 565518 para a motivação, e o que significam as mudanças na freesaída de 14.04 para 16.04? para mais informações detalhadas.

sleske
fonte
Você poderia expandir quais tipos de coisas o Linux pode estar armazenando em cache? Seriam arquivos acessados ​​ou coisas da rede?
CMCDragonkai
@CMCDragonkai: A resposta para serverfault.com/questions/23433/… aborda em detalhes o que constitui "cache" e "buffer".
sleske
5
Eu não acho que a declaração "total = usado + grátis" está correta, veja a seguinte saída na minha máquina:$ free -h total used free shared buff/cache available Mem: 3.4G 585M 152M 11M 2.6G 2.5G Swap: 4.0G 84M 3.9G
Sebastian
@ Sebastian: Ah, interessante. Parece que a saída do free foi alterada (em 3.3.10). Eu editei minha resposta para mencionar isso. Se você estiver interessado nessa alteração, considere fazer uma nova pergunta :-).
sleske
3
total = used + free + buff/cache
danger89
2

A linha de buffers / cache mostra a quantidade de memória usada pelos programas (primeira dessas colunas) e está livre para os programas usarem (segunda coluna). É um número bastante esotérico, e não é algo que você realmente vê muito na prática.

mulher
fonte
E o que faz a primeira linha (linha mem) significa
Muahmmad Zeeshan
8
Você tem 12 GB de RAM instalados no sistema, dos quais 11,5 GB são usados ​​e mais ou menos 0,5 GB atualmente não são utilizados. Aproximadamente 82 MB da memória usada são usados ​​para buffers (conexões de rede, etc.), enquanto cerca de 6,5 GB estão sendo usados ​​para armazenar cópias de dados no disco, para que os dados não precisem ser lidos novamente se forem necessários novamente.
Womble
3
@ Muhammad: "82 MB são gratuitos." - não, o 57MiB é gratuito (mas isso realmente não importa, veja minha resposta). "Agora tudo significa que o sistema atingiu seus limites" - Não, de jeito nenhum. O sistema tem 6.9GiB em uso para armazenamento em cache, o que prontamente dará aos aplicativos, para que haja muito espaço. Além disso, o uso de swap é muito baixo (apenas cerca de 50MiB). Se a memória começar a ficar fraca, o uso do swap aumentará. No momento, você mal usa metade da RAM que possui.
Sleske
4
Você já pensou em fazer uma nova pergunta em algum momento?
Womble
3
Discordo, a linha de buffers / cache é a memória livre real do sistema e, portanto, mais relevante se você quiser saber se o sistema tem espaço para programas.
Eckes