2009-05-28 5 views
1

J'ai une application qui restaure beaucoup de données à partir d'une bibliothèque. Nous utilisons Windows Server 2003. À mesure que le processus progresse, nous constatons une dégradation des performances. J'ai ajouté des compteurs de performance pour 4 de mes tâches principales, Créer un fichier, Lire à partir de la bibliothèque, WriteData, Fermer le fichier. Nous restaurons des millions de fichiers. Ce que j'ai observé, c'est que les performances de l'API createfile se dégradent à mesure que le processus progresse. Les autres opérations sont cohérentes.Dégradation des performances de l'API CreateFile

Des idées de quoi cela pourrait-il être responsable?

Merci d'avance pour toutes les réponses/suggestions.

Cordialement, Bhushan

Répondre

0

lutte contre Peut-être le cache du système? Vous pouvez regarder la section Comportement de cache dans la documentation à CreateFile.

0

Pouvez-vous fournir des informations sur l'emplacement de stockage des données de la bibliothèque et sur l'emplacement de création des fichiers? Par exemple, si vous créez tous les fichiers de sortie dans le même répertoire, vous constaterez peut-être que CreateFile ralentit car il doit vérifier de plus en plus de noms de fichiers pour les collisions.

0

Mon débogueur psychique dit que vous avez des poignées qui fuient. Êtes-vous CloseHandle'ing tous ces appels que vous êtes CreateFile'ing?

+0

Thats ce que je pensais quand je lis l'article. –

1

Le système de fichiers NTFS est-il? Les millions de fichiers vont-ils dans le même répertoire et ont-ils des noms similaires? De l'technet article on NTFS internals:

Si vous avez un grand nombre de fichiers (300.000 ou plus) dans un dossier, et les fichiers ont de longs noms de fichiers avec les mêmes caractères initiaux, le temps nécessaire pour créer les fichiers augmente. L'augmentation se produit car NTFS base le nom de fichier court sur les six premiers caractères du nom de fichier long. Dans les dossiers contenant plus de 300 000 fichiers, les noms de fichiers courts commencent à entrer en conflit après que NTFS utilise tous les noms 8.3 similaires aux noms de fichiers longs. Des conflits répétés entre un nom de fichier court généré et des noms de fichiers courts existants obligent NTFS à régénérer le nom de fichier court de 6 à 8 fois.

Vous pouvez interroger ce comportement en utilisant la ligne de commande utilitaire « fsutil »:

fsutil behavior query disable8dot3 
Questions connexes