Soluzione 1:
Significato dei valori
La prima riga significa:
total
:La tua RAM (fisica) totale (esclusa una piccola parte che il kernel si riserva permanentemente all'avvio); ecco perché mostra ca. 11,7 GiB e non 12 GiB, che probabilmente hai.used
:memoria in uso dal sistema operativo.free
:memoria non in uso.
total
=used
+ free
shared
/buffers
/cached
:Questo mostra l'utilizzo della memoria per scopi specifici, questi valori sono inclusi nel valore perused
.
La seconda riga fornisce i valori della prima riga regolati. Fornisce il valore originale per used
meno la somma buffers+cached
e il valore originale per free
più la somma buffers+cached
, da cui il titolo. Questi nuovi valori sono spesso più significativi di quelli della prima riga.
L'ultima riga (Swap:
) fornisce informazioni sull'utilizzo dello spazio di swap (ovvero i contenuti della memoria che sono stati temporaneamente spostati su disco).
Sfondo
Per capire effettivamente cosa significano i numeri, hai bisogno di un po 'di background sul sottosistema di memoria virtuale (VM) in Linux. Solo una breve versione:Linux (come la maggior parte dei sistemi operativi moderni) cercherà sempre di utilizzare la RAM libera per la memorizzazione nella cache, quindi Mem: free
sarà quasi sempre molto basso. Quindi la riga -/+ buffers/cache:
è mostrato, perché mostra quanta memoria è libera quando si ignorano le cache; le cache verranno liberate automaticamente se la memoria diventa scarsa, quindi non hanno molta importanza.
Un sistema Linux ha poca memoria se free
valore in -/+ buffers/cache:
la linea si abbassa.
Per maggiori dettagli sul significato dei numeri, vedere ad es. le domande:
- In Linux, qual è la differenza tra "buffer" e "cache" segnalata dal comando free?
- Perché Red Hat Linux segnala meno memoria libera sul sistema rispetto a quella effettivamente disponibile?
Modifiche in procps 3.3.10
Nota che l'output di free
è stato modificato in procps 3.3.10 (rilasciato nel 2014). Le colonne riportate sono ora "total", "used", "free", "shared", "buff/cache", "available" , e i significati di alcuni dei valori sono cambiati, principalmente per tenere meglio conto della slab cache del kernel Linux.
Vedi Debian Bug report #565518 per la motivazione, e Cosa fanno i cambiamenti in free
uscita dalle 14.04 alle 16.04 media? per ulteriori informazioni dettagliate.
Soluzione 2:
La risposta attualmente accettata del 2009 è obsoleta. È importante assicurarsi che le informazioni ottenute siano corrette e corrispondano alla versione di free
(distribuito nel pacchetto Debian procps
o equivalente nella distribuzione). È anche utile esaminare l'output di man free
e anche man 5 proc
, che contiene informazioni su /proc/meminfo
, il file dove free
ottiene i suoi dati da su Linux.
Per impostazione predefinita, free
L'output di è in kibibyte (1 kibibyte =1024 byte), come puoi vedere nella pagina di manuale. Preferisco usare il -h
argomento, che mostra i suffissi, come questo:
$ free -h
total used free shared buff/cache available
Mem: 15Gi 6.1Gi 1.9Gi 301Mi 7.5Gi 8.8Gi
Swap: 979Mi 0B 979Mi
La prima riga Mem
significa:
total
(Mem):memoria totale installata (ovveroMemTotal
da/proc/meminfo
), questa è tutta la memoria nella RAMused
(Mem):memoria utilizzata, pari atotal - free - buffers - cache
free
(Mem):memoria inutilizzata (ovveroMemFree
), questa è tutta la memoria inutilizzata per qualsiasi cosa (anche cache) nella RAMshared
(Mem):questa è la quantità di memoria utilizzata principalmente pertmpfs
(Shmem
)buff/cache
(Mem), somma dibuffers
ecache
:buffers
:memoria utilizzata dai buffer del kernel (Buffers
), che è la memoria che il kernel può sfruttarecache
:memoria utilizzata dalla cache della pagina e dagli slab (Cached
eSReclaimable
). La cache della pagina contiene il contenuto dei file nel filesystem memorizzati nella cache della RAM, ed è generalmente una buona cosa che questo sia un numero elevato. Presumo che gli "slabs" siano una funzione di memorizzazione nella cache simile.
available
(Mem):è una stima di quanta memoria è disponibile per l'avvio di nuove applicazioni, senza swapping. Include la maggior parte della memoria conteggiata nelcache
campo (poiché la cache della pagina può essere eliminata per avviare nuove applicazioni), ma non conta lo scambio (poiché è generalmente preferibile non utilizzare lo spazio di scambio lento).
La seconda riga è Swap
. Questa è la mia spiegazione:
total
(Swap):questa è la quantità totale di spazio su disco riservata per lo swap (SwapTotal
inproc/meminfo
). Puoi verificare controllando che questo corrisponda all'output diswapon -s
.used
(Swap):la quantità di spazio su disco di swap attualmente in uso. Di nuovo, puoi verificarlo confrontandolo con l'output diswapon -s
free
(Swap):la quantità di spazio su disco di swap attualmente non utilizzata (SwapFree
in/proc/meminfo
). È uguale atotal (Swap) - used (Swap)