Für mich ist nicht klar, was der Unterschied zwischen den beiden Linux-Speicherkonzepten ist: buffer
und cache
. Ich habe diesen Beitrag gelesen und es scheint mir, dass der Unterschied zwischen ihnen die Ablaufrichtlinie ist:
- Die Richtlinie von buffer lautet first-in, first-out
- Die Cache-Richtlinie lautet "Am wenigsten verwendet".
Habe ich recht?
Insbesondere betrachte ich die beiden Befehle: free
undvmstat
james@utopia:~$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
5 0 0 173 67 912 0 0 19 59 75 1087 24 4 71 1
james@utopia:~$ free -m
total used free shared buffers cached
Mem: 2007 1834 172 0 67 914
-/+ buffers/cache: 853 1153
Swap: 2859 0 2859
free
Befehlsausgabe?Antworten:
"Puffer" geben an, wie viel Teil des RAM für Cache-Plattenblöcke reserviert ist. "Cached" ähnelt "Buffers", nur dass diesmal Seiten beim Lesen von Dateien zwischengespeichert werden.
Zitat aus:
quelle
cache
gefüllt wird, wie von gemeldetfree -w -h
, nicht diebuffers
Spalte. Ich denke, diecache
Spalte zählt sowohl Festplattenschreibvorgänge als auch Festplattenlesevorgänge undbuffers
wird für etwas anderes verwendet.Zitat Link
quelle
Zitierte Antwort (als Referenz):
quelle
Es ist nicht ganz so einfach, aber es könnte helfen zu verstehen:
Der Puffer dient zum Speichern von Dateimetadaten (Berechtigungen, Speicherort usw.). Jede Speicherseite wird hier verfolgt.
Der Cache dient zum Speichern des tatsächlichen Dateiinhalts.
quelle
Erklärt von RedHat :
Cache-Seiten:
Ein Cache ist der Teil des Speichers, in dem Daten transparent gespeichert werden, damit zukünftige Anforderungen für diese Daten schneller bearbeitet werden können. Dieser Speicher wird vom Kernel verwendet, um Datenträgerdaten zwischenzuspeichern und die E / A-Leistung zu verbessern.
Der Linux-Kernel ist so aufgebaut, dass er so viel RAM wie möglich verwendet, um Informationen von Ihren lokalen und Remote-Dateisystemen und -Datenträgern zwischenzuspeichern. Während die Zeit vergeht, werden verschiedene Lese- und Schreibvorgänge auf dem System ausgeführt, und der Kernel versucht, Daten für die verschiedenen Prozesse, die auf dem System ausgeführt werden, oder die Daten relevanter Prozesse, die in naher Zukunft verwendet werden, im Speicher zu speichern. Der Cache wird zu dem Zeitpunkt nicht zurückgefordert, zu dem der Prozess gestoppt / beendet wird. Wenn die anderen Prozesse jedoch mehr Speicher als der frei verfügbare Speicher benötigen, führt der Kernel Heuristiken aus, um den Speicher zurückzugewinnen, indem die Cache-Daten gespeichert und dieser Speicher einem neuen Prozess zugewiesen werden.
Wenn irgendeine Art von Datei / Daten angefordert wird, sucht der Kernel nach einer Kopie des Teils der Datei, auf den der Benutzer reagiert, und wenn keine solche Kopie vorhanden ist, weist er eine neue Seite des Cache-Speichers zu und füllt sie mit Der entsprechende Inhalt wird von der Festplatte ausgelesen.
Die Daten, die in einem Cache gespeichert werden, können Werte sein, die zuvor berechnet wurden, oder Duplikate von Originalwerten, die an anderer Stelle auf der Festplatte gespeichert sind. Wenn einige Daten angefordert werden, wird der Cache zuerst überprüft, um festzustellen, ob er diese Daten enthält. Die Daten können schneller aus dem Cache als aus dem Quellursprung abgerufen werden.
SysV-Shared-Memory-Segmente werden ebenfalls als Cache berücksichtigt, obwohl sie keine Daten auf den Festplatten darstellen. Sie können die Größe der gemeinsam genutzten Speichersegmente mit dem Befehl ipcs -m und der Spalte bytes überprüfen.
Puffer:
Puffer sind die Plattenblockdarstellung der Daten, die unter den Seitencaches gespeichert sind. Puffer enthalten die Metadaten der Dateien / Daten, die sich unter dem Seitencache befinden. Beispiel: Wenn Daten angefordert werden, die im Seitencache vorhanden sind, überprüft der Kernel zunächst die Daten in den Puffern, die die Metadaten enthalten, die auf die tatsächlichen Dateien / Daten in den Seitencaches verweisen. Sobald aus den Metadaten die tatsächliche Blockadresse der Datei bekannt ist, wird sie vom Kernel zur Verarbeitung aufgenommen.
quelle
Puffer und Cache.
Ein Puffer muss noch auf die Festplatte "geschrieben" werden.
Ein Cache wurde von der Festplatte "gelesen" und zur späteren Verwendung gespeichert.
quelle
Ich denke, diese Seite wird helfen, den Unterschied zwischen Puffer und Cache tief zu verstehen. http://www.tldp.org/LDP/sag/html/buffer-cache.html
Das Lesen von einer Festplatte ist im Vergleich zum Zugriff auf (echten) Speicher sehr langsam. Darüber hinaus ist es üblich, denselben Teil einer Festplatte in relativ kurzen Zeiträumen mehrmals zu lesen. Beispielsweise könnte man zuerst eine E-Mail-Nachricht lesen, dann den Brief in einen Editor lesen, wenn man darauf antwortet, und dann das Mail-Programm veranlassen, ihn erneut zu lesen, wenn man ihn in einen Ordner kopiert. Oder überlegen Sie, wie oft der Befehl
ls
auf einem System mit vielen Benutzern ausgeführt werden kann. Wenn Sie die Informationen nur einmal von der Festplatte lesen und dann im Speicher behalten, bis sie nicht mehr benötigt werden, können Sie alle bis auf den ersten Lesevorgang beschleunigen. Dies wird als Festplattenpufferung bezeichnet, und der für diesen Zweck verwendete Speicher wird als Puffercache bezeichnet.Da der Speicher leider eine endliche, ja knappe Ressource ist, kann der Puffercache normalerweise nicht groß genug sein (er kann nicht alle Daten enthalten, die jemals verwendet werden sollen). Wenn der Cache voll ist, werden die Daten, die am längsten nicht verwendet wurden, verworfen und der so freigegebene Speicher für die neuen Daten verwendet.
Die Festplattenpufferung funktioniert auch für Schreibvorgänge. Einerseits werden geschriebene Daten häufig bald wieder gelesen (z. B. wird eine Quellcodedatei in einer Datei gespeichert und dann vom Compiler gelesen). Daher ist es eine gute Idee, Daten, die in den Cache geschrieben werden, abzulegen. Auf der anderen Seite wird das Programm, das schreibt, schneller ausgeführt, indem die Daten nur in den Cache gestellt und nicht sofort auf die Festplatte geschrieben werden. Die Schreibvorgänge können dann im Hintergrund ausgeführt werden, ohne die anderen Programme zu verlangsamen.
quelle
In Link 2 von Seth Robertson heißt es: "Um diese Begriffe gründlich zu verstehen, lesen Sie das Linux-Kernel-Buch wie Linux Kernel Development von Robert M. Love."
Ich habe in der 2. Ausgabe des Buches einige Inhalte zum Thema "Puffer" gefunden.
quelle
Der Puffer enthält Metadaten, die zur Verbesserung der Schreibleistung beitragen
Der Cache enthält den Dateiinhalt selbst (manchmal noch nicht auf die Festplatte geschrieben), wodurch die Leseleistung verbessert wird
quelle
Zitat aus dem Buch: Einführung in das Abrufen von Informationen
Zwischenspeicher
Puffer
quelle
Ein Puffer ist ein Speicherbereich, in dem Daten vorübergehend gespeichert werden, während sie innerhalb eines Computers von einem Ort an einen anderen verschoben werden. Ein Cache ist ein temporärer Speicherbereich, in dem häufig aufgerufene Daten für einen schnellen Zugriff gespeichert werden können. Sobald die Daten im Cache gespeichert sind, kann die zukünftige Verwendung durch Zugriff auf die zwischengespeicherte Kopie erfolgen, anstatt die Originaldaten erneut abzurufen, sodass die durchschnittliche Zugriffszeit kürzer ist.
quelle