Ich suche nach einer Möglichkeit, zu messen, wie viel Zeit erforderlich ist, um den an den NTFS-Treiber ausgegebenen Dateivorgang abzuschließen (Datei öffnen, Datei löschen, schreiben, lesen usw.) und ihn protokollieren zu können. Ich kann die Anwendung nicht ändern, um die Zeit in der App zu messen. Mich interessiert, wie viel Zeit zwischen dem Ausgeben eines Anrufs und der Rückkehr zur Anwendungsausführung vergeht.
Die Anwendung schreibt kontinuierlich auf ein NTFS-Volume, das sich im iSCSI-Speicher befindet. Außerdem werden routinemäßig älteste Dateien entfernt. Die Dateigrößen liegen zwischen 100 und 200 MB. Es gibt immer ungefähr 10% des freien Speicherplatzes auf dem Volume. Irgendwann kann die Anwendung keine Daten mehr in normalem Tempo schreiben, sodass die Speicherung im Speicher beginnt. Dann passiert etwas und der Puffer leert sich und alles kehrt zum Normalzustand zurück.
Ich habe E / A-Vorgänge sowohl auf physischen als auch auf logischen Volumes getestet. Während eines "Ausfalls" werden keine Anomalien festgestellt.
Jetzt möchte ich herausfinden, ob das Problem in der Anwendung oder irgendwo im Betriebssystem liegt. Aus diesem Grund dachte ich, wenn ich in der Lage bin, alle Zeitabläufe für Dateioperationen zu protokollieren, kann ich herausfinden, ob das System mehr Zeit als gewöhnlich benötigt oder die Operationen schnell sind und etwas in der Anwendung blockiert.
Plattform ist 64bit Windows Server 2008R2. Ich habe sysinternals process monitor ausprobiert, aber es wird keine Ausführungszeit protokolliert. Es kann einige Stunden dauern, bis das Problem auftritt.
Können Sie das richtige Werkzeug für diesen Job vorschlagen?