GNU/Linux >> Linux Esercitazione >  >> Linux

Qual è la colonna dei buffer nell'output da free?

free estrae i suoi dati da /proc/meminfo

slkwr133701:/usr/src/linux # free

             total       used       free     shared    buffers     cached
Mem:       2053456     434572    1618884          0      77888     201820

slkwr133701:/usr/src/linux # cat /proc/meminfo

MemTotal:        2053456 kB
MemFree:         1618736 kB
Buffers:           77928 kB
....

Si riferisce alla memoria utilizzata per l'archiviazione temporanea di I/O a blocchi. Il kernel deve assegnare e liberare costantemente unità della stessa dimensione come trasferimenti di I/O a blocchi, pacchetti di rete e buffer di socket

Puoi dare un'occhiata migliore alle cache e alle allocazioni dei buffer eseguendo slabtop

In risposta alla tua domanda sull'utilizzo:il sistema in genere assegnerà più blocchi del necessario, ma con l'aumentare della "pressione della memoria" questi blocchi aggiuntivi verranno rilasciati.


i "buffer" sono recuperabili sotto la pressione della memoria. Quindi è simile alla cache della pagina (colonna "cache"); non è un grande motivo di preoccupazione. Il valore "buffer" può essere piccolo o grande, dipende da cosa sta facendo il tuo sistema :-). Possiamo trovare diversi tipi di cache contati qui.

La cache del buffer è letteralmente la cache della pagina per il dispositivo a blocchi. Linux li segnala solo separatamente. [*] Potresti notare l'utilizzo di "buffer" mentre i programmi leggono/scrivono il nodo del dispositivo a blocchi, ad es. dd status=progress if=/dev/sda of=/dev/null . Apparentemente le persone lo notano anche durante l'esecuzione di un programma per lettori DVD.

Per prova, vedi:il 30% della RAM è "buffer". Che cos'è?

Se non hai effettuato l'accesso al nodo del dispositivo a blocchi, i tuoi "buffer" sono probabilmente tutti metadati del filesystem . I filesystem usano la cache del buffer internamente per comodità. Si assicurano che non duplichi mai il file data - contenuto del file - che è memorizzato nella cache della pagina principale. Esattamente ciò per cui il filesystem utilizza la cache del buffer - semmai - varia a seconda del filesystem.

Su una macchina con una piccola quantità di RAM fisica, ho notato che i "buffer" possono sembrare alti, quando ho filesystem ext3/ext4. Questo perché le scritture sul journal passano attraverso la cache del buffer. (Vedi link sopra). I filesystem ext3/4 memorizzano anche i contenuti delle directory nella cache del buffer.

In secondo luogo, i "buffer" mostrati dal free Il comando include anche SReclaimable, che significa lastre recuperabili. (Dimostrato qui:The Right Way to Monitor Linux Memory, Again).

La memoria della lastra non parte della pagina/buffer cache. Tuttavia è conveniente contarli insieme. Sono entrambi recuperabili e l'uso principale (unico?) Delle lastre recuperabili è per la memorizzazione nella cache del filesystem. Ad esempio, i metadati dei file (inode) e le ricerche dei percorsi (dentry) vengono memorizzati nella cache in slab recuperabili. "La memoria slab recuperabile [può] occupare una grande frazione della memoria di sistema su sistemi per lo più inattivi con molti file."

Puoi vedere il Buffers non elaborato e SReclaimable valori in cat /proc/meminfo . Puoi anche eseguire slabtop per vedere l'elenco delle lastre. AFAICT, slabtop non fornisce statistiche sulle lastre come recuperabili o meno. Ma di solito puoi indovinare, e se c'è qualche lastra sospetta immagino che tu possa cercarla per nome.

[*] Ai fini di questa risposta, "buffer cache" è la cache contata da Buffers in /proc/meminfo . Tuttavia, altre fonti possono fare riferimento all'intera cache della pagina come cache buffer unificata. Se vuoi la spiegazione storica, vedi il primo link.

Inoltre, gli sviluppatori Linux potrebbero aver usato "buffer cache" per indicare cose diverse, quando litigavano sulle implementazioni del filesystem.


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

  2. Qual è il refid nell'output di ntpq -p?

  3. emette la seconda colonna di un file

  4. Qual è il secondo stato nell'output di ip link show

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

Salva l'output di un comando dal terminale Debian in un file

Qual è il modo più semplice per liberare spazio su un disco rigido?

Come rimuovo il dispositivo cache da bcache?

Il 30% della RAM è buffer. Che cos'è?

Significato della riga buffer/cache nell'output di free

Cosa significa un + alla fine dei permessi da ls -l?