Innerhalb der Ausgabe von top gibt es zwei Felder mit den Bezeichnungen "buff / cache" und "avail Mem" in den Speicher- und Swap-Verwendungszeilen:
Was bedeuten diese beiden Felder?
Ich habe versucht, sie zu googeln, aber die Ergebnisse führen nur zu allgemeinen Artikeln, und sie erklären nicht, was diese Felder bedeuten.
Um ein bisschen zu verdeutlichen, beziehen sich Puffer auf Daten, die geschrieben werden - dieser Speicher kann nicht zurückgefordert werden, bis der Schreibvorgang abgeschlossen ist.
Cache bezieht sich auf Daten, die gelesen wurden - es wird beibehalten, falls es erneut gelesen werden muss, kann jedoch sofort zurückgefordert werden, da es immer wieder von der Festplatte gelesen werden kann.
quelle
/proc/meminfo
hat ein Feld fürWriteback
speziell. Es gibt ein separates FeldBuffers
, und das ist, wiebuffers
in gezeigtfree -w
. Ein häufiger Grund für dieBuffers
Speichernutzung ist hier angegeben: " 30% des Arbeitsspeichers sind" Puffer ". Was ist das? "Buffers
ist (jetzt) ein Teil des Seiten-Cache; es wird nicht mitgezähltCached
, aber es wird als Teil von gezähltActive(file) + Inactive(file)
. Siehe Kommentare zu Stephen Kitts Antwort.Dirty
ist der Teil des Seiten-Caches, in den geschrieben wurde und der eventuell auf die Festplatte zurückgeschrieben werden muss.Writeback
beinhaltet nichtDirty
. DaherWriteback
ist nicht ein Teil des Wertes vonBuffers
.Buffers
tatsächlich bedeutet, ist der dem Blockgerät zugeordnete Seiten-Cache. Einige Dateisysteme verwenden dies intern. andere benutzen es überhaupt nicht. Ich behebe meine Antwort auf die Frage "30% meines RAM sind Puffer".Die kanonische Quelle dieser Informationen ist /usr/src/linux/Documentation/filesystems/proc.txt
Weitere Details finden Sie auch hier .
Oder analysieren Sie den Quellcode wie folgt .
Der Betrag von
buffers
ist der Rückgabewert von functionnr_blockdev_pages(void)
Die Menge von
cached
:quelle