GNU/Linux >> Linux Esercitazione >  >> Linux

Cosa significano i campi buff/cache e avail mem in alto?

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

Linux
  1. Cosa significano i numeri in una pagina uomo?

  2. Informazioni su Mem e Vmem?

  3. In Linux, cosa significano tutti i valori nel comando top?

  4. Qual è la differenza tra la scrittura su un file e una memoria mappata?

  5. Qual è la differenza tra PAE a 32 bit e kernel a 64 bit?

Il kernel Linux:le 5 migliori innovazioni

Qual è la differenza tra Linux e Unix?

Qual è la differenza tra DMA e IO mappato in memoria?

Cos'è /dev/mem?

Qual è la differenza tra ls e l?

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