Como interpretar a saída do comando "free -m"?

48

A saída de free -mé:

                     total    used    free    shared  buffers  cached
Mem:                  595      482     112         0       63     324
-/+ buffers/cache:              93     501
swap:                   0        0       0

Qual valor da memória usada está correto, 482 ou 93?

amoooc
fonte

Respostas:

41

Você tem 112 MB de memória completamente livre, MAS os 501 mb que você vê não possuem memória 'em cache'. Isso significa que o sistema operacional colocou algumas coisas em sua memória para ser mais rápido. Ele chama isso de "usado" (portanto, seu número 'gratuito' é apenas 112), mas está realmente disponível para você, se você precisar.

Isso é bom, porque a memória não utilizada é inútil. A memória em cache pode ser limpa, se necessário. As coisas antigas "Preciso limpar a memória" que as pessoas costumavam fazer no Windows 95 não são necessárias aqui: está tudo bem e feliz :)

O número que você está procurando é 501 grátis (em megabytes por causa de -m).

veja para referência estas páginas:

http://www.linuxatemyram.com/
http://www.itworld.com/it-managementstrategy/280695/making-sense-memory-usage-linux

Nanne
fonte
Basicamente: "basta olhar para a segunda linha, aquela com os buffers / cache".
amigos estão dizendo
25

Interpretação da saída de free:
A primeira linha da freesaída lista:

  • total Sua memória física total (supondo que não haja virtualização)
  • used Quanto disso é usado atualmente (por qualquer coisa)
  • free Quanto disso é totalmente gratuito (nem sequer utilizado)
  • shared (nunca nada lá, ignore essa coluna)
  • buffers Memória usada pelos buffers do kernel
  • cached Memória usada para cache

Os dois últimos itens, cache e buffers, são memória que não está alocada para processos específicos do usuário. É a memória reservada pelo kernel para melhorar o desempenho geral, mas não é a memória de "aplicativo". Essas áreas aumentarão ou diminuirão dependendo das políticas do kernel com relação ao cache, pressão da memória, padrões de E / S do aplicativo, etc.

Como essas duas colunas não são memória alocada pelo usuário e as zonas podem encolher (praticamente a zero) se as alocações do usuário exigirem, elas estão, de certa forma, "livres" - há RAM lá que pode ser liberada pelo kernel se seus aplicativos precisa ativamente.

É o que a segunda linha diz. Ele remove o buffer e a memória cache da usedcoluna (é isso que -significa) e os adiciona ( +) à freecoluna. (Problema de arredondamento ocorrerá.)

(A última linha mostra o estado do seu espaço de troca.)

Cortesia: https://unix.stackexchange.com/a/33549/14497

Portanto, no seu caso, 112 MB são a memória completamente livre e, se você levar em consideração a memória usada para armazenamento em cache, que pode ser alocada para os aplicativos do usuário, se necessário; então 501 MB é a memória máxima real disponível para uso.

saji89
fonte
Uma pessoa que procura uma leitura de memória nunca está interessada (ou quase nunca) em quanta memória é completamente livre, mas quanto é livre para usar. a memória em cache está 'em uso', mas também é de uso gratuito; portanto, você deve observar isso.
amigos estão dizendo
Não sei bem por que você diz isso? Parece implicar que alguém removeria deliberadamente o cache (o que é realmente uma coisa ruim)? O ponto é que carregar coisas acuall (como um programa que você deseja usar) nessa memória é realmente uma opção. Você quer que o número 112 seja o mais baixo possível, mas isso significa na sua teoria que você não pode abrir nenhum programa. Não é o objetivo que eu diria. Também: que o cache não é apenas disco de cache, é também cache do sistema e os gostos
Nanne
@Nanne, Ok. Eu concordo cara. Obrigado pela correção. Atualizei minha resposta para refletir o mesmo.
saji89
##### OBRIGADO A TODOS @ Nanne @ devav2 @ saji89 para partilha de conhecimento - Você é impressionante #####
amoooc
10

A resposta de @ saji89 é excelente, mas atualmente free -mnão imprime mais a -/+ buffers/cachelinha, mas coloca a quantidade de RAM disponível em uma nova availablecoluna na primeira linha, por exemplo:

ubuntu@pg_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
ubuntu@pg_master:~$ free -V
free from procps-ng 3.3.10

Você pode ler o commit para liberar (1) que removeu a linha em seu repositório . Também o commit para adicionar a nova availablecoluna .

Paul A Jungwirth
fonte
4

free O comando mostra as informações sobre memória não utilizada e usada e espaço de troca.

Abaixo está a explicação fornecida por http://www.linfo.org/free.html

A primeira linha, denominada Mem , exibe a utilização da memória física, incluindo a quantidade de memória alocada para buffers e caches. Um buffer, também chamado de memória buffer, é geralmente definido como uma parte da memória reservada como um local de armazenamento temporário para dados enviados ou recebidos de um dispositivo externo, como um disco rígido, teclado, impressora ou rede.

A segunda linha de dados, que começa com - / + buffers / cache , mostra a quantidade de memória física atualmente dedicada ao cache do buffer do sistema. Isso é particularmente significativo em relação aos programas aplicativos, pois todos os dados acessados ​​a partir de arquivos no sistema que são executados através do uso de chamadas de sistema read () e write ()1 passam por esse cache. Esse cache pode acelerar bastante o acesso aos dados, reduzindo ou eliminando a necessidade de ler ou gravar no disco rígido ou outro disco.

A terceira linha, que começa com Troca , mostra o espaço total de troca, bem como quanto está atualmente em uso e quanto ainda está disponível.

Vamos analisar o uso de memória do seu sistema

Você usou o freecomando com a opção '-m', usada para exibir o resultado em megabytes

-m, --mega
              Display the amount of memory in megabytes.

A memória total é 595 (usada + gratuita)

Usado: 482 Grátis: 112

482 MB dos 595 MB são usados ​​pelo seu sistema, nos quais apenas 93 MB são usados ​​pelos programas ativos e os 324 MB restantes estão no cache

Portanto, quando você executar qualquer programa no futuro, diga o que exige mais 120 MB. Todos os 112 MB (atualmente gratuitos) serão fornecidos e os 8 MB restantes serão obtidos do buffer / cache do programa não ativo.

Editar : Encontrei este link , que fornece uma boa explicação.

devav2
fonte
Eu não acho que isso esteja correto. Se você descartar o cache, você terá 93mb usados, restando 501.
amigos estão dizendo
Por que você acha que isso não está correto? A memória livre no sistema OP é 112 MB + 324 MB (que é armazenado em cache). Portanto, quando um novo programa é iniciado, ele usa 112 MB primeiro e depois o cache.
devav2
basicamente, porque 595-93=501 e (dê ou receba 1mb para arredondar) e meio que lê como se 112fosse o número que você acha que o op está procurando.
Nanne
501 está correto e é isso que estou tentando explicar. Fora de 595, 482 é usado. Na qual apenas 93 é a memória ativa usada pelos programas. Portanto, 112 é o disponível gratuitamente +, se necessário, mais, a memória pode ser retirada do cache, que foi usado anteriormente e atualmente não está ativo.
Devv2
ok, concordam então :)
Nanne