Soluzione 1:
vmtouch sembra un buon strumento per il lavoro.
In evidenza:
- interroga la quantità di una directory memorizzata nella cache
- interroga la quantità di un file memorizzato nella cache (anche quali pagine, rappresentazione grafica)
- carica il file nella cache
- rimuove il file dalla cache
- blocca i file nella cache
- esegui come demone
manuale di vmtouch
MODIFICA: L'utilizzo come richiesto nella domanda è elencato nell'esempio 5 su vmtouch Homepage
Example 5
Daemonise and lock all files in a directory into physical memory:
vmtouch -dl /var/www/htdocs/critical/
EDIT2: Come notato nei commenti, ora è disponibile un repository git.
Soluzione 2:
Ciò è possibile anche utilizzando vmtouch Virtual Memory Toucher utilità.
Lo strumento consente di controllare la cache del filesystem su un sistema Linux. Puoi forzare o bloccare un file o una directory specifici nel sottosistema della cache della VM, oppure utilizzarlo per verificare quali parti di un file/directory sono contenute all'interno della VM.
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
Oppure...
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
Soluzione 3:
Il trucco di un uomo povero per inserire roba nella cache del filesystem è semplicemente catturarlo e reindirizzarlo a /dev/null.
Soluzione 4:
Linux memorizzerà nella memoria quanto più IO del disco possibile. Questo è ciò che sono le statistiche della cache e della memoria buffer. Probabilmente farà un lavoro migliore di te nell'archiviare le cose giuste.
Tuttavia, se insisti a memorizzare i tuoi dati in memoria, puoi creare un'unità RAM utilizzando tmpfs o ramfs. La differenza è che ramfs allocherà tutta la memoria richiesta, mentre tmpfs utilizzerà solo la memoria utilizzata dal dispositivo a blocchi. La mia memoria è un po' arrugginita, ma dovresti essere in grado di fare:
# mount -t ramfs ram /mnt/ram
o
# mount -t tmpfs tmp /mnt/tmp
e quindi copiare i dati nella directory. Ovviamente, quando spegni la macchina o smonti quella partizione, i tuoi dati andranno persi.
Soluzione 5:
Dopo alcune approfondite letture sulle funzionalità di swapping del kernel 2.6 e di cache delle pagine ho trovato 'fcoretools'. Che consiste in due strumenti;
- fincore:rivelerà quante pagine l'applicazione ha memorizzato nella memoria principale
- fadvise:ti permette di manipolare la memoria centrale (page-cache).
(Nel caso in cui qualcun altro lo trovi interessante, lo pubblico qui)