Lösung 1:
vmtouch scheint ein gutes Werkzeug für diesen Job zu sein.
Höhepunkte:
- abfragen, wie viel von einem Verzeichnis zwischengespeichert wird
- abfragen, wie viel von einer Datei zwischengespeichert ist (auch welche Seiten, grafische Darstellung)
- Datei in den Cache laden
- Datei aus Cache entfernen
- Dateien im Cache sperren
- als Daemon ausführen
vmtouch-Handbuch
BEARBEITEN: Die in der Frage gestellte Verwendung ist in Beispiel 5 auf der vmtouch-Homepage aufgeführt
Example 5
Daemonise and lock all files in a directory into physical memory:
vmtouch -dl /var/www/htdocs/critical/
EDIT2: Wie in den Kommentaren erwähnt, ist jetzt ein Git-Repository verfügbar.
Lösung 2:
Dies ist auch mit dem vmtouch Virtual Memory Toucher möglich Dienstprogramm.
Mit dem Tool können Sie den Dateisystem-Cache auf einem Linux-System steuern. Sie können eine bestimmte Datei oder ein bestimmtes Verzeichnis im VM-Cache-Subsystem erzwingen oder sperren oder damit überprüfen, welche Teile einer Datei/eines Verzeichnisses in der VM enthalten sind.
How much of the /bin/ directory is currently in cache?
$ vmtouch /bin/
Files: 92
Directories: 1
Resident Pages: 348/1307 1M/5M 26.6%
Elapsed: 0.003426 seconds
Oder...
Let's bring the rest of big-dataset.txt into memory...
$ vmtouch -vt big-dataset.txt
big-dataset.txt
[OOo oOOOOOOO] 6887/42116
[OOOOOOOOo oOOOOOOO] 10631/42116
[OOOOOOOOOOOOOOo oOOOOOOO] 15351/42116
[OOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 19719/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 24183/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 28615/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 31415/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 36775/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOo oOOOOOOO] 39431/42116
[OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO] 42116/42116
Files: 1
Directories: 0
Touched Pages: 42116 (164M)
Elapsed: 12.107 seconds
Lösung 3:
Der Trick eines armen Mannes, um Dinge in den Dateisystem-Cache zu bekommen, besteht darin, sie einfach zu kategorisieren und nach /dev/null umzuleiten.
Lösung 4:
Linux speichert so viel Festplatten-E/A wie möglich im Arbeitsspeicher. Dies sind die Cache- und Pufferspeicherstatistiken. Es wird wahrscheinlich einen besseren Job machen als Sie, wenn es darum geht, die richtigen Dinge zu speichern.
Wenn Sie jedoch darauf bestehen, Ihre Daten im Arbeitsspeicher zu speichern, können Sie mit tmpfs oder ramfs ein RAM-Laufwerk erstellen. Der Unterschied besteht darin, dass ramfs den gesamten von Ihnen angeforderten Speicher zuweist, während tmpfs nur den Speicher verwendet, den Ihr Blockgerät verwendet. Mein Gedächtnis ist etwas eingerostet, aber Sie sollten in der Lage sein:
# mount -t ramfs ram /mnt/ram
oder
# mount -t tmpfs tmp /mnt/tmp
und kopieren Sie dann Ihre Daten in das Verzeichnis. Offensichtlich gehen Ihre Daten verloren, wenn Sie den Rechner ausschalten oder diese Partition aushängen.
Lösung 5:
Nach einigem ausführlichen Lesen der Kernel-Swapping- und Page-Caching-Funktionen von 2.6 fand ich 'fcoretools'. Welches aus zwei Werkzeugen besteht;
- fincore:Gibt an, wie viele Seiten die Anwendung im Kernspeicher gespeichert hat
- fadvise:Erlaubt Ihnen, den Hauptspeicher (Page-Cache) zu manipulieren.
(Falls jemand anderes das interessant findet, poste ich es hier)