top
Die Manpage von beschreibt die Felder nicht, sondern free
's tut:
Puffer
Speicher, der von Kernelpuffern verwendet wird (Buffers
in /proc/meminfo
)
zwischenspeichern
Speicher, der vom Seitencache und Slabs verwendet wird (Cached
undSReclaimable
in /proc/meminfo
)
Buff/Cache
Summe Puffer und Cache
verfügbar
Abschätzung, wie viel Speicher zum Starten neuer Anwendungen ohne Austausch zur Verfügung steht. Im Gegensatz zu den vom Cache bereitgestellten Daten oder freien Feldern berücksichtigt dieses Feld den Seitencache und auch, dass nicht alle zurückgewinnbaren Speicherblöcke zurückgefordert werden, da Elemente verwendet werden (MemAvailable
in/proc/meminfo
, verfügbar auf Kernel 3.14, emuliert auf Kernel 2.6.27+, ansonsten genauso wie kostenlos)
Im Grunde zählt „buff/cache“ den Speicher, der für Daten verwendet wird, die auf der Festplatte sind oder bald dort landen sollen und somit potenziell nutzbar sind (der entsprechende Speicher kann sofort verfügbar gemacht werden, wenn er seit dem Lesen nicht geändert wurde , oder ausreichend Zeit gegeben, falls vorhanden); „verfügbar“ misst die Menge an Speicher, die zugewiesen und verwendet werden kann, ohne dass mehr Auslagerungen verursacht werden (siehe Wie kann ich die Menge an verfügbarem Speicher portabel über Distributionen hinweg abrufen? für weitere Einzelheiten dazu).
Nur zur Verdeutlichung, Puffer bezieht sich auf Daten, die geschrieben werden -- dieser Speicher kann nicht zurückgewonnen werden, bis der Schreibvorgang abgeschlossen ist.
Cache bezieht sich auf Daten, die gelesen wurden -- es wird aufbewahrt, falls es erneut gelesen werden muss, kann aber sofort zurückgefordert werden, da es immer wieder von der Festplatte gelesen werden kann.
Die kanonische Quelle dieser Informationen ist /usr/src/linux/Documentation/filesystems/proc.txt
Puffer :Relativ temporärer Speicher für Raw-Disk-Blöcke sollte nicht sehr groß werden (etwa 20 MB) gecacht :In-Memory-Cache für Dateien, die von der Festplatte gelesen werden (der Seiten-Cache). Enthält SwapCached nicht.
Hier finden Sie auch weitere Details.
Der Linux-Seiten-Cache ("Cached :" von meminfo ) ist auf den meisten Systemen der größte einzelne RAM-Verbraucher. Jedes Mal, wenn Sie ein read() von einer Datei auf der Festplatte ausführen, werden diese Daten in den Speicher gelesen und in den Pagecache (1.) verschoben.
Der Buffer-Cache ("Buffers :" in meminfo) ist näher verwandt mit den Dentry/Inode-Caches.
Oder den Quellcode so analysieren.
Der Betrag von buffers
ist der Rückgabewert der Funktion 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;
}
Der Betrag von cached
:
global_page_state(NR_FILE_PAGES) – total_swapcache_pages – i.bufferram