Liste tous les fichiers présents dans le cache

8

Cette question répond à la question sur la façon de trouver ce qui fait partie du cache. Cependant, dans l' fincoreexécutable, vous devez passer le nom du fichier pour vérifier s'il fait partie du cache.

Existe-t-il un outil ou une méthode pour trouver toutes les entrées qui font partie de la mémoire cache sans passer les noms de fichiers.

PS: Nous l'exécutons dans un système embarqué, et exécuter une boucle for et passer tous les fichiers à fincorelui-même est un processus plus gourmand en temps et en mémoire. Par conséquent, je recherche d'autres méthodes.

Joe
la source

Réponses:

6

Je ne connais aucun endroit où le noyau expose les noms de fichiers associés aux blocs qu'il a mis en cache. Selon cette réponse

https://stackoverflow.com/a/4941371

Le mieux que vous puissiez faire, même avec un module de noyau personnalisé, serait d'obtenir une liste des inodes et des périphériques. À partir de là, vous devrez probablement parcourir le système de fichiers à la recherche de ces fichiers.

Vous pouvez alors demander "Mais, comment fincoreconnaît les fichiers que j'ai répertoriés?" Ou peut-être pas, mais j'ai trouvé la méthode assez intelligente, alors la voici. L' fincoreoutil fonctionne en procédant comme suit:

L' mincoreappel système vous indique si les pages de mémoire données se trouvent dans la mémoire centrale (c'est-à-dire qu'elles ne causeraient pas de défaut de page lors de l'accès). Étant donné que mmaple fichier mappé est chargé paresseusement et que nous n'avons encore lu aucune région mappée, toutes les pages qui ne provoqueraient pas de défaillance de page doivent sinon faire partie de notre cache.

Steven D
la source