2009-05-28 9 views
1

Ich habe eine Anwendung, die viele Daten aus einer Bibliothek wiederherstellt. Wir verwenden Windows Server 2003. Im Laufe des Prozesses sehen wir eine Verschlechterung der Leistung. Ich habe einige Leistungsindikatoren für 4 meiner wichtigsten Aufgaben hinzugefügt: Datei erstellen, Aus Bibliothek lesen, WriteData, Datei schließen. Wir stellen Millionen von Dateien wieder her. Was ich beobachtet habe, ist, dass die Leistung der API createfile mit fortschreitendem Prozess abnimmt. Die anderen Operationen sind konsistent.Leistungseinbuße von CreateFile API

Irgendwelche Ideen, was könnte das verursachen?

Vielen Dank im Voraus für alle Antworten/Vorschläge.

Grüße, Bhushan

Antwort

0

Möglicherweise den Systemcache zu kämpfen? Sie können sich den Abschnitt Caching-Verhalten in der Dokumentation zu CreateFile ansehen.

0

Können Sie Informationen darüber bereitstellen, wo die Bibliotheksdaten gespeichert sind und wo die Dateien erstellt werden?

Zum Beispiel, wenn Sie alle Ausgabedateien in das gleiche Verzeichnis erstellen, können Sie feststellen, dass CreateFile verlangsamt wird, weil es gegen mehr und mehr Dateinamen für Kollisionen überprüfen muss.

0

Mein psychischer Debugger sagt, dass Sie Griffe leckt. Sind Sie CloseHandle alle diese Anrufe Sie sind CreateFile'ing?

+0

Das ist, was ich dachte, als ich den Artikel zu lesen. –

1

Ist das Dateisystem NTFS? Gehen die Millionen von Dateien in dasselbe Verzeichnis und haben sie ähnliche Namen? Vom technet article on NTFS internals:

Wenn Sie eine große Anzahl von Dateien (300.000 oder mehr) in einem Ordner und die Dateien haben lange Dateinamen mit den gleichen Anfangsbuchstaben, die Zeit benötigt, um die Dateien erhöht zu erstellen. Die Erhöhung tritt auf, weil NTFS den kurzen Dateinamen auf den ersten sechs Zeichen des langen Dateinamens basiert. In Ordnern mit mehr als 300.000 Dateien beginnen die kurzen Dateinamen Konflikte zu verursachen, nachdem NTFS alle 8.3-Namen verwendet hat, die den langen Dateinamen ähneln. Wiederholte Konflikte zwischen einem generierten kurzen Dateinamen und vorhandenen kurzen Dateinamen führen dazu, dass NTFS den kurzen Dateinamen 6 bis 8 Mal neu generiert.

können Sie dieses Verhalten abfragen, um die Befehlszeilenprogramm ‚fsutil‘:

fsutil behavior query disable8dot3 
Verwandte Themen