top
La manpage di non descrive i campi, ma free
's fa:
buffer
Memoria utilizzata dai buffer del kernel (
Buffers
in/proc/meminfo
)cache
Memoria utilizzata dalla cache della pagina e dagli slab (
Cached
eSReclaimable
in/proc/meminfo
)buff/cache
Somma di buffer e cache
disponibile
Stima della quantità di memoria disponibile per l'avvio di nuove applicazioni, senza swapping. A differenza dei dati forniti dalla cache o dai campi liberi, questo campo tiene conto della pagecache e anche del fatto che non tutte le lastre di memoria recuperabili verranno recuperate a causa degli elementi in uso (
MemAvailable
in/proc/meminfo
, disponibile sui kernel 3.14, emulato sui kernel 2.6.27+, altrimenti uguale a gratuito)
Fondamentalmente, "buff/cache" conta la memoria utilizzata per i dati che sono su disco o dovrebbero finire lì presto, e di conseguenza è potenzialmente utilizzabile (la memoria corrispondente può essere resa disponibile immediatamente, se non è stata modificata da quando è stata letta , o dato abbastanza tempo, se lo ha fatto); "disponibile" misura la quantità di memoria che può essere allocata e utilizzata senza causare ulteriori scambi (vedere Come posso ottenere la quantità di memoria disponibile in modo portabile tra le distribuzioni? per maggiori dettagli in merito).
Giusto per chiarire un po', buffer si riferisce ai dati che vengono scritti -- quella memoria non può essere recuperata finché la scrittura non è completa.
Cache si riferisce a dati che sono stati letti -- viene tenuto in giro nel caso sia necessario rileggerlo, ma può essere immediatamente recuperato poiché può sempre essere riletto dal disco.
La fonte canonica di queste informazioni è /usr/src/linux/Documentation/filesystems/proc.txt
Buffer :L'archiviazione relativamente temporanea per i blocchi del disco non elaborati non dovrebbe diventare eccessivamente grande (circa 20 MB)Memorizzato nella cache :cache in memoria per i file letti dal disco (la cache delle pagine). Non include SwapCached.
Puoi anche trovare ulteriori dettagli qui.
La Linux Page Cache ("Cache :" da meminfo ) è il più grande singolo consumatore di RAM sulla maggior parte dei sistemi. Ogni volta che esegui un read() da un file su disco, quei dati vengono letti in memoria e vanno nella pagecache(1.).
La cache del buffer ("Buffer :" in meminfo) è un parente più vicino alle cache dentry/inode.
Oppure analizza il codice sorgente in questo modo.
L'importo di buffers
è il valore restituito dalla funzione nr_blockdev_pages(void)
long nr_blockdev_pages(void)
{
struct block_device *bdev;
long ret = 0;
spin_lock(&bdev_lock);
list_for_each_entry(bdev, &all_bdevs, bd_list) {
ret += bdev->bd_inode->i_mapping->nrpages;
}
spin_unlock(&bdev_lock);
return ret;
}
La quantità di cached
:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram