free
zieht seine Daten aus /proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
Dies bezieht sich auf Speicher, der für die temporäre Block-I/O-Speicherung verwendet wird. Der Kernel muss ständig Einheiten derselben Größe wie Block-I/O-Übertragungen, Netzwerkpakete und Socket-Puffer zuweisen und freigeben
Sie können sich Caches und Pufferzuordnungen besser ansehen, indem Sie slabtop
ausführen
Als Antwort auf Ihre Nutzungsfrage:Das System weist normalerweise mehr Blöcke zu, als es benötigt, aber wenn der "Speicherdruck" zunimmt, werden diese zusätzlichen Blöcke freigegeben.
"Puffer" sind unter Speicherdruck wiederherstellbar. Es ist also ähnlich wie beim Seiten-Cache (Spalte "Cache"); kein großer Grund zur Sorge. Der "Puffer"-Wert kann klein oder groß sein, es hängt davon ab, was Ihr System tut :-). Wir können hier verschiedene Arten von Caches finden.
Der Puffercache ist buchstäblich der Seitencache für das Blockgerät. Linux meldet diese nur separat.[*] Sie könnten die Verwendung von "Puffer" feststellen, während Programme den Blockgeräteknoten lesen/schreiben, z. dd status=progress if=/dev/sda of=/dev/null
. Anscheinend bemerken es die Leute auch, wenn sie ein DVD-Player-Programm ausführen.
Zum Beweis siehe:30% des RAM sind "Puffer". Was ist das?
Wenn Sie nicht auf den Blockgeräteknoten zugegriffen haben, sind Ihre "Puffer" wahrscheinlich alle Metadaten des Dateisystems . Dateisysteme verwenden den Puffer-Cache intern aus praktischen Gründen. Sie stellen sicher, dass die Datei data niemals dupliziert wird - Dateiinhalt - der im Hauptseiten-Cache gespeichert wird. Wofür genau das Dateisystem den Buffer-Cache verwendet - wenn überhaupt - variiert je nach Dateisystem.
Auf einer Maschine mit wenig physischem RAM ist mir aufgefallen, dass "Puffer" hoch aussehen können, wenn ich ext3/ext4-Dateisysteme habe. Dies lag daran, dass Schreibvorgänge in das Journal den Puffercache durchlaufen. (Siehe Link oben). ext3/4-Dateisysteme speichern auch Verzeichnisinhalte im Puffercache.
Zweitens "Puffer", die durch free
angezeigt werden Der Befehl enthält auch SReclaimable, was regenerierbare Platten bedeutet. (Hier demonstriert:Noch einmal der richtige Weg, um Linux-Speicher zu überwachen).
Slab-Speicher ist nicht Teil des Seiten-/Puffer-Cache. Es ist jedoch bequem, sie zusammen zu zählen. Sie sind beide wiederherstellbar, und die hauptsächliche (einzige?) Verwendung von wiederherstellbaren Slabs ist das Zwischenspeichern von Dateisystemen. Beispielsweise werden Datei-Metadaten (Inodes) und Pfadsuchen (Dentry's) in zurückgewinnbaren Slabs zwischengespeichert. "Wiederverwendbarer Slab-Speicher [kann] einen großen Teil des Systemspeichers auf meist inaktiven Systemen mit vielen Dateien beanspruchen."
Sie können den rohen Buffers
sehen und SReclaimable
Werte in cat /proc/meminfo
. Sie können auch slabtop
ausführen , um die Liste der Platten anzuzeigen. AFAICT, slabtop
gibt keine Statistiken auf Platten als zurückgewinnbar oder nicht. Aber Sie können es normalerweise erraten, und wenn es eine verdächtige Platte gibt, können Sie sie wahrscheinlich anhand des Namens nachschlagen.
[*] Für die Zwecke dieser Antwort ist "Puffer-Cache" der Cache, der von Buffers
gezählt wird in /proc/meminfo
. Andere Quellen können sich jedoch auf den gesamten Seiten-Cache als einheitlichen Puffer-Cache beziehen. Wenn Sie die historische Erklärung wollen, sehen Sie sich den ersten Link an.
Auch Linux-Entwickler haben möglicherweise "Puffer-Cache" für verschiedene Dinge verwendet, als sie sich über Dateisystem-Implementierungen gestritten haben.