Linux und Speicherpufferung/Cache und Festplattenspeicher

Linux und Speicherpufferung/Cache und Festplattenspeicher

Ich möchte eine Frage zum Speicherbuff/Cache stellen

Nehmen wir an, wir haben eine Linux-Maschine mit Festplatte und eine Anwendung, die Daten auf die Festplatte /var/data geschrieben hat

so wie ich es verstehe, werden Daten, die eine Anwendung auf die Festplatte schreibt, auch im Speichercache gespeichert.

für einige Zeit, und nach X Zeit werden die Anwendungsdaten aus dem Speichercache entfernt

ist es möglich, die Speicherung bestimmter Daten im Speichercache und nicht auf der Festplatte zu erzwingen?

der Grund für meine Frage ist, dass wir schnelles Lesen/Schreiben wollen und Festplatten diesbezüglich sehr langsam sind

Antwort1

im Speichercache gespeichert

So etwas gibt es eigentlich nicht. Man beginnt mit diesemBuff/Cache:

]# free -g
              total        used        free      shared  buff/cache   available
Mem:              7           0           3           0           3           6
Swap:             0           0           0

Dies gibt die Menge an RAM an, die derzeit als Puffer oder Cache verwendet wird. Der Kernel tut dies genau, weil Festplatten langsam sind und oft (wie gezeigt) genügend RAM vorhanden ist.

Wenn Sie einen Teil des RAM für bestimmte Dateien reservieren möchten, können Sie diese auf eine RAM-Disk ( mount -t tmpfs ...) legen. Sie müssen dann aber daran denken, sie wieder auf die Festplatte zu kopieren.

Antwort2

Ich glaube, Sie haben ein Missverständnis darüber, wie die Speicherhierarchie funktioniert. Die Hierarchie verläuft vom CPU-nahen/schnellsten zum langsamsten:

CPU-Register > Cache-Speicher > RAM/Arbeitsspeicher > Festplatte

Der Cache-Speicher liegt zwischen der CPU und dem Hauptspeicher und ist schneller zugänglich als der Hauptspeicher. Normalerweise werden beim Zugriff auf einen Speicherort benachbarte Datenblöcke (d. h. Kopien von Adressbereichsblöcken) in den Cache kopiert. Beim nächsten Zugriff auf einen Speicherort wird dann zuerst der Cache überprüft, um festzustellen, ob die Daten bereits vorhanden sind. Dadurch kann Zeit gespart werden, da nicht auf den Hauptspeicher zugegriffen werden muss.

Ich finde also, dass Ihre Frage nicht ganz sinnvoll ist. Normalerweise gibt es keinen Zwischenspeicher oder Cache zwischen dem Hauptspeicher und der Festplatte. Daten, die gerade verwendet werden, werden im RAM gespeichert, und das ist die effizienteste Art, sie zu speichern und darauf zuzugreifen. Wenn Sie sie für später speichern möchten, kopieren Sie sie nach dem Ausschalten des Computers auf die Festplatte (weil das Ihre einzige Option ist). Wenn Sie jetzt und schnell auf die Daten zugreifen möchten, sollten Sie die Festplatte nicht berühren, es sei denn, es ist unbedingt nötig.

Mir ist keine Möglichkeit bekannt, die Cache-Speicherverwaltung einfach zu überschreiben und etwas im Cache zu speichern, aber ausdrücklich nicht im RAM. Es gibt im Allgemeinen bereits sehr gute und effiziente Systeme zur Verwaltung des Speichercaches.

Außerdem glaube ich nicht, dass Daten nach einer bestimmten Zeit aus dem Cache-Speicher entfernt werden. Normalerweise werden sie durch neuere Daten verdrängt, auf die die CPU zugreifen möchte.

verwandte Informationen