GNU/Linux >> Linux Esercitazione >  >> Linux

Significato della riga buffer/cache nell'output di free

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 per used .

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 (ovvero MemTotal da /proc/meminfo ), questa è tutta la memoria nella RAM
  • used (Mem):memoria utilizzata, pari a total - free - buffers - cache
  • free (Mem):memoria inutilizzata (ovvero MemFree ), questa è tutta la memoria inutilizzata per qualsiasi cosa (anche cache) nella RAM
  • shared (Mem):questa è la quantità di memoria utilizzata principalmente per tmpfs (Shmem )
  • buff/cache (Mem), somma di buffers e cache :
    • buffers :memoria utilizzata dai buffer del kernel (Buffers ), che è la memoria che il kernel può sfruttare
    • cache :memoria utilizzata dalla cache della pagina e dagli slab (Cached e SReclaimable ). 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 nel cache 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 in proc/meminfo ). Puoi verificare controllando che questo corrisponda all'output di swapon -s .
  • used (Swap):la quantità di spazio su disco di swap attualmente in uso. Di nuovo, puoi verificarlo confrontandolo con l'output di swapon -s
  • free (Swap):la quantità di spazio su disco di swap attualmente non utilizzata (SwapFree in /proc/meminfo ). È uguale a total (Swap) - used (Swap)

Linux
  1. Come eliminare i buffer di memoria e la cache in Linux

  2. Qual è il significato di POSIX?

  3. Come registrare il consumo di memoria su Linux?

  4. Qual è il significato di ciascuna riga dell'output dell'assieme di un ciao mondo?

  5. Omissione della prima riga da qualsiasi output di comando Linux

Usando il comando gratuito di Linux

Come stampare l'output su più righe sulla stessa riga?

Qual è la differenza tra memoria buffer e cache in Linux?

Come posso determinare la dimensione corrente dell'ARC in ZFS e in che modo l'ARC si riferisce alla memoria libera o cache?

In Linux, qual è la differenza tra buffer e cache segnalati dal comando free?

Posso fare in modo che rsync emetta solo il riepilogo?