Solution 1 :
vmtouch semble être un bon outil pour le travail.
Faits saillants :
- demander combien d'un répertoire est mis en cache
- demander quelle quantité d'un fichier est mise en cache (également quelles pages, représentation graphique)
- charger le fichier dans le cache
- supprimer le fichier du cache
- verrouiller les fichiers dans le cache
- exécuter en tant que démon
manuel vmtouch
MODIF : L'utilisation telle que demandée dans la question est répertoriée dans l'exemple 5 sur vmtouch Hompage
Example 5
Daemonise and lock all files in a directory into physical memory:
vmtouch -dl /var/www/htdocs/critical/
EDIT2 : Comme indiqué dans les commentaires, un dépôt git est désormais disponible.
Solution 2 :
Ceci est également possible en utilisant le vmtouch Virtual Memory Toucher utilitaire.
L'outil vous permet de contrôler le cache du système de fichiers sur un système Linux. Vous pouvez forcer ou verrouiller un fichier ou un répertoire spécifique dans le sous-système de cache de la VM, ou l'utiliser pour vérifier quelles parties d'un fichier/répertoire sont contenues dans la 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
Ou...
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
Solution 3 :
L'astuce d'un pauvre homme pour obtenir des éléments dans le cache du système de fichiers consiste simplement à le cater et à le rediriger vers /dev/null.
Solution 4 :
Linux mettra en cache autant d'E/S de disque en mémoire que possible. C'est ce que sont les statistiques du cache et de la mémoire tampon. Il fera probablement un meilleur travail que vous pour stocker les bonnes choses.
Cependant, si vous insistez pour stocker vos données en mémoire, vous pouvez créer un lecteur RAM en utilisant tmpfs ou ramfs. La différence est que ramfs allouera toute la mémoire que vous demandez, alors que tmpfs n'utilisera que la mémoire utilisée par votre périphérique bloc. Ma mémoire est un peu rouillée, mais vous devriez pouvoir faire :
# mount -t ramfs ram /mnt/ram
ou
# mount -t tmpfs tmp /mnt/tmp
puis copiez vos données dans le répertoire. Évidemment, lorsque vous éteignez la machine ou démontez cette partition, vos données seront perdues.
Solution 5 :
Après quelques lectures approfondies sur les fonctionnalités d'échange et de mise en cache des pages du noyau 2.6, j'ai trouvé «fcoretools». Qui se compose de deux outils ;
- fincore :révélera le nombre de pages que l'application a stockées dans la mémoire centrale
- fadvise :permet de manipuler la mémoire centrale (page-cache).
(Au cas où quelqu'un d'autre trouverait cela intéressant, je le poste ici)