Come interpretare l'output del comando "free -m"?


48

L'output di free -mè:

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

Quale valore della memoria utilizzata è corretto, 482 o 93?

Risposte:


41

Hai 112 MB di memoria completamente libera, MA i 501 mb che vedi sono senza memoria "cache". Ciò significa che il sistema operativo ha messo alcune cose in memoria per essere più veloce. Lo chiama "usato" (quindi il tuo numero "gratuito" è solo 112), ma è effettivamente disponibile per te se ne hai bisogno.

Questa è una buona cosa, perché la memoria inutilizzata è memoria inutile. La memoria cache può essere cancellata se necessario. La vecchia roba "Ho bisogno di ripulire la memoria" che la gente faceva per Windows 95 non è necessaria qui: va tutto bene e felice :)

Il numero che stai cercando è 501 gratuito (in megabyte a causa di -m).

vedi per riferimento queste pagine:

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


Bascially: "basta guardare la seconda riga, quella con i buffer / cache".
Nanne,

25

Interpretazione dell'output di free:
La prima riga degli freeelenchi di output:

  • total La tua memoria totale, fisica (non presupponendo virtualizzazione)
  • used Quanto di questo è attualmente utilizzato (da qualsiasi cosa)
  • free Quanto di tutto ciò è completamente gratuito (non utilizzato affatto)
  • shared (mai niente lì, ignora quella colonna)
  • buffers Memoria utilizzata dai buffer del kernel
  • cached Memoria utilizzata per la cache

Gli ultimi due elementi, cache e buffer, è la memoria non allocata a processi utente specifici. È la memoria riservata dal kernel per migliorare le prestazioni complessive, ma non è la memoria "dell'applicazione". Queste aree cresceranno o si ridurranno a seconda delle politiche del kernel relative a cache, pressione della memoria, pattern I / O dell'applicazione, ecc.

Dato che queste due colonne non sono memoria allocata dall'utente e le zone possono ridursi (praticamente a zero) se le allocazioni dell'utente lo richiedono, sono in un certo senso "libere" - lì c'è RAM che può essere liberata dal kernel se le tue app ne ho bisogno attivamente.

Questo è ciò che ti dice la seconda riga. Rimuove il buffer e la memoria cache dalla usedcolonna (ecco cosa -significa) e li aggiunge ( +) alla freecolonna. (Si verificherà un problema di arrotondamento.)

(L'ultima riga mostra lo stato del tuo spazio di swap.)

Per gentile concessione: https://unix.stackexchange.com/a/33549/14497

Quindi, nel tuo caso, 112 MB è la memoria completamente libera e, se si prende in considerazione la memoria utilizzata per la memorizzazione nella cache, che può essere allocata alle applicazioni utente, se necessario; quindi 501 MB è la memoria massima effettiva disponibile per l'uso.


Una persona in cerca di una lettura della memoria non è mai interessata (o quasi mai) a quanta memoria è completamente libera, ma a quanto è libera da usare. la memoria cache è "in uso" ma è anche libera da usare, quindi dovresti guardarla.
Nanne,

Non sono davvero sicuro del perché lo dici? Sembra implicare che qualcuno rimuova deliberatamente la cache (che è davvero una cosa negativa)? Il punto è che caricare un sacco di cose (come un programma che vuoi usare) in quella memoria è in realtà un'opzione. Volete che il numero 112 sia il più basso possibile, ma ciò significherebbe nella vostra teoria che non potete aprire alcun programma. Non l'obiettivo che direi. Inoltre: quella cache non è solo disc-cache, è anche cache di sistema e simili
Nanne

@Nanne, Ok. Sono d'accordo amico. Grazie per la correzione. Ho aggiornato la mia risposta per riflettere lo stesso.
saji89,

##### GRAZIE A TUTTI @ Nanne @ devav2 @ saji89 PER CONDIVIDERE LA CONOSCENZA - SEI FANTASTICO #####
amoooc il

10

La risposta di @ saji89 è eccellente, ma in questi giorni free -mnon stampa più la -/+ buffers/cacheriga, ma inserisce invece la quantità di RAM disponibile in una nuova availablecolonna sulla prima riga, ad esempio:

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

Puoi leggere il commit in free (1) che ha rimosso la riga nel loro repository . Anche il commit per aggiungere la nuova availablecolonna .


4

free Il comando mostra le informazioni sulla memoria non utilizzata e utilizzata e lo spazio di scambio.

Di seguito è la spiegazione fornita da http://www.linfo.org/free.html

La prima riga, etichettata Mem , mostra l'utilizzo della memoria fisica, inclusa la quantità di memoria allocata a buffer e cache. Un buffer, chiamato anche memoria buffer, viene generalmente definito come una porzione di memoria che viene messa da parte come luogo di conservazione temporaneo per i dati inviati o ricevuti da un dispositivo esterno, come un disco rigido, una tastiera, una stampante o una rete.

La seconda riga di dati, che inizia con - / + buffer / cache , mostra la quantità di memoria fisica attualmente dedicata alla cache del buffer di sistema. Ciò è particolarmente significativo per quanto riguarda i programmi applicativi, poiché tutti i dati a cui accedono dai file sul sistema che vengono eseguiti mediante l'uso delle chiamate di sistema read () e write ()1 passano attraverso questa cache. Questa cache può velocizzare notevolmente l'accesso ai dati riducendo o eliminando la necessità di leggere o scrivere sull'HDD o su un altro disco.

La terza riga, che inizia con Swap , mostra lo spazio di swap totale nonché la quantità attualmente in uso e la quantità ancora disponibile.

Consente di analizzare l'utilizzo della memoria del sistema

Hai usato il freecomando con l'opzione '-m', che viene usato per visualizzare il risultato in megabyte

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

La memoria totale è 595 (usata + libera)

Usato: 482 Gratuito: 112

482 MB su 595 MB vengono utilizzati dal sistema, in cui solo 93 MB vengono utilizzati dai programmi attivi e i restanti 324 MB sono nella cache

Quindi, quando eseguirai qualsiasi programma in futuro, dì che richiede più 120 MB. Verranno dati tutti i 112 MB (attualmente gratuiti) e gli altri 8 MB verranno prelevati dal buffer / cache del programma non attivo.

Modifica : trovato questo link , che fornisce una buona spiegazione.


Non penso sia corretto. Se scarti la cache hai 93mb usati quindi ne rimangono 501.
Nanne,

Perché pensi che non sia corretto. La memoria libera sul sistema OP è di 112 MB + 324 MB (che viene memorizzata nella cache). Pertanto, all'avvio di un nuovo programma utilizzerà prima 112 MB e quindi la cache.
devav2,

in pratica, perché 595-93=501 e (dare o prendere 1 MB per arrotondamento), e in un 112certo senso si legge come se fosse il numero che si pensa che l'operazione stia cercando.
Nanne,

501 è corretto ed è quello che sto cercando di spiegare. Su 595, viene utilizzato 482. In cui solo 93 è la memoria attiva utilizzata dai programmi. Quindi 112 è il libero disponibile + se necessario di più, la memoria può essere prelevata dalla cache, che era precedentemente utilizzata e attualmente non attiva.
devav2,

ok, d'accordo allora :)
Nanne
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.