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

39

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?

    
por amoooc 30.11.2012 / 09:13

4 respostas

31

Você tem 112 MB de memória completamente livre, MAS os 501 MB que você vê não possuem memória 'cacheada'. 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 "livre" é apenas 112), mas está realmente disponível para você, se necessário.

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

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

veja para referência estas páginas:

link
link

    
por Nanne 30.11.2012 / 09:50
23

Interpretando a saída de free :
A primeira linha das listas de saída free :

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

Os dois últimos itens, cache e buffers, são memórias que não são alocadas 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 vão aumentar ou diminuir dependendo das políticas do kernel em relação ao armazenamento em cache, pressão de memória, padrões de E / S do aplicativo, etc.

Como essas duas colunas não são alocadas pelo usuário, e as zonas podem ser reduzidas (praticamente a zero) se as alocações de usuários exigirem, elas são, de certo modo, "livres" - há RAM lá que pode ser liberada pelo kernel se seus aplicativos precisarem ativamente.

Isso é o que a segunda linha diz a você. Ele remove o buffer e a memória cache da coluna used (é o que significa o - ) e adiciona ( + ) à coluna free . (Questão de arredondamento vai acontecer.)

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

Cortesia: link

Assim, no seu caso, 112MB é a memória completamente livre, e se você levar em consideração a memória usada para armazenar 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.

    
por saji89 30.11.2012 / 10:26
4

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

[email protected]_master:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          61406        1571         506       17131       59328       42150
Swap:             0           0           0
[email protected]_master:~$ free -V
free from procps-ng 3.3.10

Você pode ler o commit do free (1) que removeu a linha em seu repo . Também o commit para adicionar a nova coluna available .

    
por Paul A Jungwirth 05.09.2017 / 20:02
3
O comando

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

Abaixo, a explicação fornecida pelo link

  

A primeira linha, chamada Mem , exibe a utilização da memória física,   incluindo a quantidade de memória alocada para buffers e caches. UMA   buffer, também chamado de memória buffer, é geralmente definido como uma parte   memória que é reservada como um local de retenção temporário para dados que são   ser enviado para ou recebido de um dispositivo externo, como um HDD,   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 buffer do sistema   cache. Isto é particularmente significativo em relação à aplicação   programas, como todos os dados acessados a partir de arquivos no sistema   executado através do uso de read () e write () system calls1 pass   através deste cache. Esse cache pode acelerar bastante o acesso aos dados   reduzir ou eliminar a necessidade de ler ou gravar no HDD ou   outro disco.

     

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

Vamos analisar o uso de memória do seu sistema

Você usou o comando free com a opção '-m', que é usada para exibir o resultado em megabytes

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

A memória total é 595 (Usada + livre)

Usado: 482 Grátis: 112

482MB de 595MB é usado pelo seu sistema, no qual apenas 93MB são usados pelos programas ativos e os restantes 324MB estão no cache

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

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

    
por devav2 30.11.2012 / 10:35