Je regarde cette configuration:
- Windows Server 2012
- Disque NTFS 1 To, grappes de 4 Ko, ~ 90% plein
- ~ 10 millions de fichiers stockés dans 10 000 dossiers = ~ 1 000 fichiers / dossier
- Fichiers généralement assez petits <50 Ko
- Disque virtuel hébergé sur une baie de disques
Lorsqu'une application accède à des fichiers stockés dans des dossiers aléatoires, il faut 60 à 100 ms pour lire chaque fichier. Avec un outil de test, il semble que le retard se produit lors de l'ouverture du fichier. La lecture des données ne prend alors qu'une fraction du temps.
En résumé, cela signifie que la lecture de 50 fichiers peut facilement prendre de 3 à 4 secondes, ce qui est beaucoup plus que prévu. L'écriture se fait en batch donc les performances ne sont pas un problème ici.
J'ai déjà suivi les conseils sur SO et SF pour arriver à ces chiffres.
- Utilisation de dossiers pour réduire le nombre de fichiers par dossier ( Stockage d'un million d'images dans le système de fichiers )
- Exécuter
contig
pour défragmenter les dossiers et fichiers ( /programming//a/291292/1059776 ) - 8.3 noms et dernière heure d'accès désactivés ( Configuration du système de fichiers NTFS pour les performances )
Que faire des heures de lecture?
- Considérez que 60 à 100 ms par fichier sont corrects (ce n'est pas le cas, n'est-ce pas?)
- Des idées sur la façon dont la configuration peut être améliorée?
- Existe-t-il des outils de surveillance de bas niveau qui peuvent indiquer à quoi exactement le temps est consacré?
METTRE À JOUR
Comme mentionné dans les commentaires, le système exécute Symantec Endpoint Protection. Cependant, sa désactivation ne modifie pas les temps de lecture.
PerfMon mesure 10-20 ms par lecture. Cela signifierait que tout fichier lu prend ~ 6 opérations de lecture d'E / S, non? Serait-ce une recherche MFT et des contrôles ACL?
Le MFT a une taille de ~ 8,5 Go, ce qui est plus que la mémoire principale.