112 votes

Effacer le cache de fichiers pour 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.

91voto

smallest Points 186

Utilisez l' application RAMMap de SysInternal.

rammap vide en attente

L'option de menu Liste vide / vide en veille effacera le cache de fichiers Windows.

14voto

John Nilsson Points 4650

Une recherche rapide donne ces options pour Linux

  1. Démontez et montez la partition contenant les fichiers
  2. sync && echo 1 > /proc/sys/vm/drop_caches

4voto

Mark Points 21
  #include <fcntl.h>

int posix_fadvise(int fd, off_t offset, off_t len, int advice);
 

avec option de conseil POSIX_FADV_DONTNEED :
Les données spécifiées ne seront pas accessibles dans un avenir proche.

3voto

Stephen Denne Points 17031

J'ai trouvé une technique (autres que de redémarrer) qui semble fonctionner:

  1. Exécuter quelques exemplaires de MemAlloc
  2. Avec chacun, d'allouer de gros morceaux de mémoire quelques fois
  3. Le Processus d'utilisation de l'Explorateur d'observer le Système de Cache de taille de réduction à des niveaux très bas
  4. Quittez le MemAlloc programmes

Il n'est pas sélective. 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X