(Lesen) Datei-E / A-Jitter

8

Ich habe eine Anwendung (C # .Net 3.5 und .Net 2.0), die mehrere Readfile-Operationen durchführt. Das System zeigt jedoch immer wieder hickups (Jitter). Ich habe einen VTune-Profiler angehängt und eine Locks & amp; waits-Analyse durchgeführt, siehe erstes Bild unten.

Die Analyse der Sperren und Wartezeiten hat gezeigt, dass ein "Sync-Objekt: Stream-Dateipfad" dazu führt, dass die Anwendung auf allen Threads gesperrt wird (wartet). Die CPU-Auslastung sinkt während dieser Zeit auf 0%.

Als Nächstes habe ich mit SysInternals Process Monitor protokolliert, welche Operation ausgeführt wurde, als die hickups auftraten. Es zeigt einen FileRead-Vorgang an, der ca. 1 Sekunde, aber nur gelegentlich (Jitter). Siehe das zweite Bild.

Klicken Sie auf eine große Version des Bildes: hier

Einzelklick auf eine große Version des Bildes: hier

Ich bin verwirrt. Was könnte diesen Jitter in File I / O verursachen? Es ist ein synchrones Lesen. Ich habe versucht, den Lesepuffer von 32.768b auf 4096b zu reduzieren, aber das hat nichts geändert. Vielleicht ist es wichtig zu beachten, dass die Maschine, die diese Zahlen sammelt, eine SSD hat. Allerdings sehen wir ähnliche Probleme auf Computern ohne SSDs.

Irgendwelche Leads, in die man schauen könnte, wären willkommen.

    
bastijn 20.02.2014, 09:56
quelle

1 Antwort

2

Diese Frage muss aktualisiert werden. Ich werde dies in Form einer Antwort veröffentlichen, da ich das Problem gelöst habe, aber nicht so, dass ich mit Sicherheit sagen kann, was das ursprüngliche Problem ist.

Ich habe viele Dinge ausprobiert, um herauszufinden, was die gelegentliche Spitze der IO-Lesezeit (Datei) verursacht hat. Vor allem Virenscanner sind wichtig, insbesondere McAfee verursachte einige Probleme. Die Kommentare zu der Frage haben hier bereits angedeutet, und @remus rusanus Tipp, die WPA / WPR-Kombination zu verwenden, zeigte dies ebenfalls. WPA / WPR-Kombination überrascht mich angenehm und ist ein nützliches Werkzeug neben VTune und ProcMon. Das erste Bild zeigt eine Spitze in McAfee Taskmanager kurz vor einigen langen Dauer Flush und Lesebeginn (& gt; 1s). Die zweite zeigt, dass alle Informationen in WPA über alle Graphen hinweg gut miteinander verknüpft sind. Ein schönes und starkes Werkzeug, wenn man im Heuhaufen nach dieser Nadel sucht.

Quicklink große Version: hier .

Schnell größere Version: hier .

Als ich die Virusscan-Software deinstallierte, traten dennoch Spikes auf. Weniger häufig, und sie waren kürzer in der Dauer, aber immer noch sichtbar in der Anwendung. Ich habe viele Dinge ausprobiert, um herauszufinden, was es war. Benutzte VMWare-Setups, so dass ich das System komplett entfernen konnte und sah, ob andere Prozesse das Problem sein könnten. Am Ende gab ich auf. Ich habe ein System implementiert, um das Problem zu umgehen, und das reicht jetzt aus. Wenn ich alle meine Handlungen kenne, würde ich sagen, dass es einen anderen Konflikt gab. Eine andere Option ist das verknüpfte nicht-verwaltete Programm, das Mutexes verwendet und möglicherweise problematische Dinge erledigt. Ich habe den Mutex in CriticalSections geändert, aber keine direkt sichtbaren Ergebnisse, also habe ich diese Route aufgegeben.

Zum Schluss, leider habe ich keine direkte Antwort. Aus Zeitgründen musste ich mich darum kümmern und werde wahrscheinlich nie wissen, was die Ursache für das Problem war. Ich denke, das ist auch das wahre Leben ..

Danke für all die Tipps, ich habe ein paar Dinge gelernt, die ich sicher in Zukunft verwenden werde.

    
bastijn 22.02.2014 16:55
quelle

Tags und Links