Je vais d'abord admettre que c'est pour un projet de classe, car ce sera assez évident. Nous sommes supposés faire des lectures pour tester la taille de bloc du système de fichiers. Mon problème est que le temps pris pour faire ceci semble augmenter linéairement, sans étapes comme je m'attendrais.Sondage pour la taille de bloc de système de fichiers
Je chronométrer la lecture comme ceci:
double startTime = getticks();
read = fread(x, 1, toRead, fp);
double endTime = getticks();
où GetTicks utilise des instructions RDTSC. J'ai peur qu'il y ait une mise en cache/préextraction qui fait en sorte que les lectures ne prennent pas de temps pendant le fread. J'ai essayé de créer un fichier aléatoire entre chaque exécution de mon programme, mais cela ne soulage pas mon problème.
Quelle est la meilleure façon de mesurer avec précision le temps nécessaire à la lecture d'un disque? Je suis assez sûr que ma taille de bloc est 4096, mais comment puis-je obtenir des données pour soutenir cela?
Voulez-vous que quelque chose donne la taille du bloc, ou des conseils sur l'amélioration de votre expérience pour deviner la taille du bloc à partir de la synchronisation? –
Je suppose que je suis à la recherche d'aide expérimentale. J'ai du mal à faire en sorte que C fasse ce que je veux avec les E/S. – plor
Extraire fcntl (.., F_NOCACHE, ..) pour désactiver complètement la mise en cache. – rpj