GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist der Unterschied zwischen Puffer- und Cache-Speicher in Linux?

Puffer sind einem bestimmten Blockgerät zugeordnet und decken das Zwischenspeichern von Dateisystem-Metadaten sowie das Verfolgen von In-Flight-Seiten ab. Der Cache enthält nur geparkte Dateidaten. Das heißt, die Puffer merken sich, was sich in Verzeichnissen befindet, welche Dateiberechtigungen gelten, und verfolgen, aus welchem ​​Speicher für ein bestimmtes Blockgerät geschrieben oder gelesen wird. Der Cache enthält nur den Inhalt der Dateien selbst.

Link zitieren


Zitierte Antwort (als Referenz):

Kurze Antwort:Cached ist die Größe des Seitencaches. Puffer ist die Größe der speicherinternen Block-E/A-Puffer. Zwischengespeicherte Angelegenheiten; Puffer sind weitgehend irrelevant.

Lange Antwort:Cached ist die Größe des Linux-Seitencaches abzüglich des Speichers im Swap-Cache, der durch SwapCached dargestellt wird (daher ist die Gesamtgröße des Seitencaches Cached + SwapCached). Linux führt alle Datei-I/Os über den Page-Cache durch. Schreibvorgänge werden so implementiert, dass die entsprechenden Seiten im Seiten-Cache einfach als schmutzig markiert werden; die Flusher-Threads schreiben dann regelmäßig alle unsauberen Seiten auf die Platte zurück. Lesevorgänge werden implementiert, indem die Daten aus dem Seitencache zurückgegeben werden; wenn die Daten noch nicht im Cache sind, werden sie zuerst gefüllt. Auf einem modernen Linux-System kann Cached leicht mehrere Gigabyte betragen. Es schrumpft nur als Reaktion auf Speicherdruck. Das System löscht den Seiten-Cache zusammen mit dem Auslagern von Daten auf die Festplatte, um bei Bedarf mehr Speicher verfügbar zu machen.

Puffer sind speicherinterne Block-E/A-Puffer. Sie sind relativ kurzlebig. Vor der Linux-Kernel-Version 2.4 hatte Linux separate Seiten- und Puffer-Caches. Seit 2.4 sind der Seiten- und Puffer-Cache vereinheitlicht und Puffer sind rohe Festplattenblöcke, die nicht im Seiten-Cache dargestellt werden – d. h. keine Dateidaten. Die Puffermetrik ist daher von minimaler Bedeutung. Auf den meisten Systemen sind Puffer oft nur zehn Megabyte groß.


Linux
  1. Was ist der Unterschied zwischen env und set (unter Mac OS X oder Linux)?

  2. Was ist der Unterschied zwischen dem Schreiben in eine Datei und einem zugeordneten Speicher?

  3. Was ist der Unterschied zwischen strtok_r und strtok_s in C?

  4. Was ist der Unterschied zwischen einem Linux-Plattformtreiber und einem normalen Gerätetreiber?

  5. Was ist der Unterschied zwischen „locate“ und „find“ in Linux?

Was ist der Unterschied zwischen macOS- und Linux-Kernels

Was ist der Unterschied zwischen Linux und Unix?

Was ist der Unterschied zwischen Rsync und BTRFS unter Linux?

Was ist ein Hypervisor? Was ist der Unterschied zwischen Typ 1 und 2?

Was ist der Unterschied zwischen Curl und Wget?

Was ist der Unterschied zwischen DMA und Memory-Mapped IO?