Cosa significano i campi "buff / cache" e "dispari mem" nella parte superiore?


28

All'interno dell'output di top, ci sono due campi, contrassegnati "buff / cache" e "dispari Mem" nelle righe di utilizzo della memoria e dello scambio:

inserisci qui la descrizione dell'immagine

Cosa significano questi due campi?

Ho provato a cercarli su Google, ma i risultati portano in primo piano solo articoli generici e non spiegano cosa significano questi campi.

Risposte:


31

top's pagina di manuale non descrive i campi, ma free' s fa:

tamponi

Memoria utilizzata dai buffer del kernel ( Buffersin /proc/meminfo)

nascondiglio

Memoria utilizzata dalla cache della pagina e dai solai ( Cachede SReclaimablein /proc/meminfo)

appassionato / cache

Somma di buffer e cache

a disposizione

Stima della quantità di memoria disponibile per l'avvio di nuove applicazioni, senza scambio. A differenza dei dati forniti dalla cache o dai campi liberi, questo campo prende in considerazione la cache della pagina e inoltre non tutti i blocchi di memoria recuperabili verranno recuperati a causa degli elementi in uso ( MemAvailablein /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 si trovano sul disco o dovrebbe finire lì presto e, di conseguenza, è potenzialmente utilizzabile (la memoria corrispondente può essere resa immediatamente disponibile, nel caso della cache, o se ha abbastanza tempo, nel caso dei buffer - questi ultimi dovrebbero comunque rimanere piccoli); "Disponibile" misura la quantità di memoria che può essere allocata e utilizzata senza causare più scambi (vedere Come posso ottenere la quantità di memoria disponibile in modo trasferibile attraverso le distribuzioni? Per ulteriori dettagli al riguardo).


1
Buffer / cache non vengono resi disponibili se viene concesso tempo sufficiente ; sono segmenti di memoria che sono immediatamente disponibili nel caso in cui un programma richieda allocazione della memoria. Vedi anche linuxatemyram.com
DopeGhoti,

4

Solo per chiarire un po ', i buffer si riferiscono ai dati che vengono scritti - che la memoria non può essere recuperata fino al completamento della scrittura.

La cache si riferisce ai dati che sono stati letti : viene conservata nel caso in cui debba essere letta di nuovo, ma può essere recuperata immediatamente poiché può sempre essere riletta dal disco.


Non è proprio quello che significa qui. /proc/meminfoha un campo Writebackspecifico. C'è un campo separato Buffers, ed è quello che viene mostrato come buffersin free -w. Un motivo comune per Buffersl'utilizzo della memoria è mostrato qui: "Il 30% della RAM è" buffer ". Che cos'è? "
sourcejedi

Da questo ( access.redhat.com/solutions/406773 ) prendo che Writeback è quella porzione di buffer che non è stata ancora scritta sul disco. O stai dicendo qualcos'altro?
WallStProg,

Tale descrizione sarebbe fuorviante. Buffersfa parte (ora) della cache della pagina; non viene conteggiato Cached, ma viene conteggiato come parte di Active(file) + Inactive(file). Vedi i commenti sulla risposta di Stephen Kitt. Dirtyè la parte della cache della pagina in cui è stata scritta e quindi alla fine deve essere riscritta sul disco. Writebacknon includeDirty . Pertanto, Writebacknon è una porzione del valore di Buffers.
FonteJedi

Ciò che Bufferseffettivamente significa è la cache della pagina associata al dispositivo a blocchi. Alcuni filesystem lo usano internamente; altri non lo usano affatto. / va a sistemare la mia risposta sulla domanda "Il 30% della mia RAM è buffer".
FonteJedi

2

La fonte canonica di queste informazioni è /usr/src/linux/Documentation/filesystems/proc.txt

Buffer : l'archiviazione relativamente temporanea per i blocchi di dischi grezzi non dovrebbe diventare tremendamente grande (circa 20 MB) Cache: cache in memoria per i file letti dal disco (la cache della pagina). Non include SwapCached.

Puoi anche trovare altri dettagli qui .

Il Linux Page Cache ( " Cached :" da meminfo) è il più grande consumatore singolo di RAM sulla maggior parte dei sistemi. Ogni volta che si esegue un read () da un file su disco, i dati vengono letti in memoria e vanno nella cache della pagina (1.).
La cache del buffer (" Buffers :" in meminfo) è un parente stretto delle cache dentice / inode.

Oppure analizza il codice sorgente in questo modo .

La quantità di buffersè il valore di ritorno della funzionenr_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
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.