Możesz użyć (bezpłatnie) Windows Performance Toolki t od systemu Windows 8, który działa również w systemie Windows Vista i nowszych. Możesz włączyć profilowanie systemowe, aby zobaczyć, co dzieje się we wszystkich procesach jednocześnie. Żadne oprzyrządowanie nie jest konieczne. Wymagane jest tylko jedno ponowne uruchomienie, aby ustawić tajemniczy klucz rejestru, który jest automatycznie wykonywany przez WPRUI.exe.
Z XPerf można włączyć chodzenie stosu IO Init tak, aby stos wywoławczy był brany za każde rozpoczęte IO. Jedynym problemem jest to, że stosy będą zepsute dla procesów 64-bitowych, co oznacza, że zobaczysz tylko pierwszą metodę powyżej metod BCL twojego kodu, ponieważ istnieje błąd Windows 7 w funkcjach stackwalking systemu operacyjnego.
Rozwiązaniem jest Ngenowanie złożeń lub przenoszenie na serwer 2012 lub przejście na x86 w celu profilowania, aby wyświetlić głębsze stosy połączeń.
Zobaczysz całą aktywność IO i procesora pliku, nawet bez stosów wywołań i nazwy plików wraz z czasem użycia dysku twardego. To powinno dać ci dobrą informację, która część twojej aplikacji powoduje dysk IO. Z częściowych stosów połączeń powinieneś być w stanie wskazać swój problem, nawet bez pełnych stacków.
Narzędzie daje znacznie więcej wglądu niż jakikolwiek dostępny na rynku profiler, kosztem, którego potrzebujesz, aby nauczyć się go używać. Ponieważ stosy wywołań nie kończą się na kodzie lub w trybie użytkownika, ale w jądrze można również określić, czy np. skaner antywirusowy powoduje znaczące opóźnienia IO. Ale musisz wiedzieć, jak działa twój procesor. Ten zestaw narzędzi był pierwotnie przeznaczony dla twórców jądra, co wyjaśnia, dlaczego widzisz tyle bezużytecznych kolumn.
Na poniższym obrazie widać zużycie IO i procesora. Po wybraniu wysokiego pliku IO na wykresie IO dysku, podświetlone zostanie zużycie procesora wszystkich powiązanych stosów połączeń, które zostały pobrane w tym samym czasie, gdy IO było aktywne. W ten sposób możesz bezpardonowo nawigować z IO do potencjalnie zablokowanych wątków.
Czy masz jakiś pomysł, gdzie może się dziać w kodzie, czy są uruchomione całkowicie ślepy? –
Nie mam pojęcia, przeszedłem cały kod kilka razy (to całkiem spora strona, dużo funkcjonalności). Możliwe jest przesyłanie i wysyłanie zdjęć, ale to około 10 GB danych miesięcznie. –
Czy przetwarzasz te obrazy w aplikacji przez przypadek? –