Effacer le cache du fichier à répéter les tests de performance
Quels sont les outils ou les techniques que j'utilise pour supprimer les fichiers mis en cache le contenu pour éviter que mes résultats de performance de biaisés? Je crois que j'ai besoin de soit tout à fait clair, ou supprimer les informations mises en cache du fichier et le contenu d'un répertoire.
L'application que je suis en développement est spécialisé utilitaire de compression, et devrait faire beaucoup de travail de lecture et d'écriture de fichiers que le système d'exploitation n'a pas touché récemment, et dont les blocs de disque sont peu susceptibles d'être mis en cache.
Je souhaite supprimer la variabilité je vois dans les IO de temps lorsque je le répète, la tâche de profilage des stratégies différentes pour faire le traitement d'un fichier de travail.
Je suis principalement intéressé par les solutions pour Windows XP, car c'est mon principal du développement de la machine, mais je peux également tester l'utilisation de linux, et je le suis aussi intéressé par les réponses pour l'environnement aussi.
J'ai essayé de SysInternals CacheSet, mais en cliquant sur "Effacer" ne risque pas d'entraîner une augmentation mesurable de (rétablissement du calendrier après un froid boot) dans le temps de re-lire les fichiers que je viens de lire quelques fois.
- double possible de Comment faire pour invalider le cache du système de fichiers?
- Pourquoi cette question deleted?
Vous devez vous connecter pour publier un commentaire.
Utilisation de Sysinternals de RAMMap app.
Le Vide /Vide la Liste d'Attente option de menu vous permet d'effacer le fichier Windows cache.
The Empty / Empty Standby List menu option will clear the Windows file cache.
Comment le savez-vous? Comment faire le lien entre cet élément de menu et le disque-cache?Pour Windows XP, vous devriez être en mesure d'effacer le cache pour un fichier spécifique en ouvrant le fichier à l'aide de CreateFile avec le FILE_FLAG_NO_BUFFERING options et la fermeture de la poignée. Ce n'est pas documenté, et je ne sais pas si cela fonctionne sur les versions ultérieures de Windows, mais j'ai utilisé ce il y a longtemps lors de la rédaction d'un code de test pour comparer la compression de fichiers des bibliothèques. Je ne me souviens pas si l'accès en lecture /écriture affectés à cette astuce.
Une rapide recherche sur google donne à ces options pour Linux
sync && echo 1 > /proc/sys/vm/drop_caches
Un utilitaire de ligne de commande peut être trouvé ici
à partir de la source:
J'ai trouvé une technique (autres que de redémarrer) qui semble fonctionner:
Il n'est pas sélectif si. Idéalement, je voudrais être en mesure d'effacer les parties spécifiques de mémoire utilisée pour la mise en cache du disque des blocs de fichiers que je veux plus être mis en cache.
avec des conseils option
POSIX_FADV_DONTNEED
:Les données spécifiées ne seront pas accessibles dans un avenir proche.
Pour une bien meilleure vue de la Windows XP système de fichiers de Cache - essayez ATM par Tim Murgent - il vous permet de voir à la fois le système de fichiers du cache du Jeu de Travail de taille et de Veille de la taille de la Liste dans une vue plus détaillée et précise. Pour Windows XP vous devez l'ancienne version 1 de l'ATM, qui est disponible pour téléchargement ici depuis V2 et V3 exiger Server 2003,Vista ou supérieur.
Vous pourrez observer que, bien que Sysinternals Cacheset permettra de réduire le "Cache WS Min" - les données réelles continue d'exister sous la forme de listes d'Attente, d'où il peut être utilisé jusqu'à ce qu'il a été remplacé par quelque chose d'autre. Puis remplacer avec quelque chose d'autre l'utilisation d'un outil tel que MemAlloc ou flushmem par le Tchad Austin ou Consume.exe à partir de la Windows Server 2003 Resource Kit Tools.
Que la question s'est aussi posée pour Linux, il n'y est une réponse similaire ici.
L'outil de ligne de commande vmtouch vous permet d'ajouter et de supprimer des fichiers et répertoires à partir du cache du système de fichiers, entre autres choses.
Il y a un appel d'API de windows https://docs.microsoft.com/en-us/windows/desktop/api/memoryapi/nf-memoryapi-setsystemfilecachesize qui peut être utilisé pour vider le cache du système de fichiers. Il peut également être utilisé pour limiter la taille du cache à une valeur très faible. Est parfait pour ces sortes de tests.