Significato della riga buffer / cache nell'output di free


168

Perché il mio server mostra

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

Non ho idea sul calcolo della memoria in Linux. Penso che dica che 5088232 viene utilizzato dove 7198224 è gratuito, il che significa che in realtà consuma 5 GB di RAM?



Risposte:


232

Significato dei valori

La prima riga significa:

  • total: La tua RAM (fisica) totale (escluso un piccolo bit che il kernel si riserva permanentemente per sé all'avvio); ecco perché mostra ca. 11,7 GiB e non 12 GiB, che probabilmente hai.
  • used: memoria utilizzata dal sistema operativo.
  • free: memoria non in uso.

total= used+free

  • shared/ buffers/ cached: Mostra l'utilizzo della memoria per scopi specifici, questi valori sono inclusi nel valore per used.

La seconda riga fornisce i valori della prima riga regolati. Fornisce il valore originale per used meno la somma buffers+cachede il valore originale per free più la somma buffers+cached, da cui il titolo. Questi nuovi valori sono spesso più significativi di quelli di prima linea.

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, è necessario un po 'di background sul sottosistema di memoria virtuale (VM) in Linux. Solo una versione breve: Linux (come la maggior parte dei sistemi operativi moderni) proverà sempre a utilizzare la RAM libera per la memorizzazione nella cache, quindi Mem: freesarà quasi sempre molto basso. Pertanto -/+ buffers/cache:viene visualizzata la riga , poiché mostra quanta memoria è libera quando si ignorano le cache; le cache verranno liberate automaticamente se la memoria si esaurisce, quindi non contano davvero.

Un sistema Linux ha davvero poca memoria se il freevalore in -/+ buffers/cache:linea diventa basso.

Per maggiori dettagli sul significato dei numeri, vedere ad esempio le domande:

Cambiamenti nei procps 3.3.10

Si noti che l'output di è freestato modificato in procps 3.3.10 (rilasciato nel 2014). Le colonne riportate sono ora "totale", "usato", "libero", "condiviso", "buff / cache", "disponibile" , e il significato di alcuni dei valori è cambiato, principalmente per meglio spiegare il slab del kernel Linux cache.

Vedi il rapporto Debian Bug # 565518 per la motivazione, e cosa significano i cambiamenti freenell'output dal 14.04 al 16.04? per maggiori dettagli informazioni.


Potresti espandere su quali tipi di cose Linux potrebbe essere memorizzato nella cache? Sarebbero i file a cui è stato effettuato l'accesso o roba di rete?
CMCDragonkai,

@CMCDragonkai: la risposta a serverfault.com/questions/23433/… risolve in dettaglio ciò che costituisce "cache" e "buffer".
sleske,

5
Non credo che la frase "total = used + free" sia corretta, vedi il seguente output sulla mia macchina:$ 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. Sembra che l'uscita di free sia stata modificata (in 3.3.10). Ho modificato la mia risposta per menzionarlo. Se sei interessato a questa modifica, considera di porre una nuova domanda :-).
sleske,

3
total = used + free + buff/cache
danger89,


2

La riga buffer / cache mostra la quantità di memoria utilizzata dai programmi (prima di quelle colonne) ed è gratuita per i programmi da utilizzare (seconda colonna). È un numero abbastanza esoterico, e non qualcosa che in realtà guarderesti molto.


E cosa fa la prima linea (linea mem) significa
Muahmmad Zeeshan

8
Che hai 12 GB di RAM installati nel sistema, di cui 11,5 GB utilizzati e 0,5 GB circa non sono attualmente utilizzati. Circa 82 MB di memoria utilizzata vengono utilizzati per i buffer (connessioni di rete, ecc.), Mentre circa 6,5 ​​GB vengono utilizzati per archiviare copie di dati su disco, in modo che i dati non debbano essere riletti se necessari di nuovo.
womble

3
@Muhammad: "82 MB è gratuito." - no, 57MiB è gratuito (ma non importa, vedi la mia risposta). "Ora significa che il sistema ha raggiunto i suoi limiti" - No, per niente. Il sistema ha 6.9GiB in uso per la memorizzazione nella cache, che darà prontamente alle applicazioni, quindi c'è molto spazio. Inoltre, l'utilizzo dello swap è molto basso (circa 50 MiB). Se la memoria inizia a restringersi, l'utilizzo dello swap aumenterà. Al momento stai usando a malapena metà della RAM che hai.
sleske,

4
Hai pensato di fare una nuova domanda ad un certo punto?
womble

3
Non sono d'accordo, la riga buffer / cache è l'effettiva memoria libera del sistema e quindi più rilevante se si desidera sapere se il sistema ha spazio per i programmi.
Verifica il
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.