Urządzenie VTune Profiler firmy Intel może wykonać pewne czynności. Z witryny VTune:
Locks i czeka: Użyj narzędzia profilowania wydajności Intel® szybko znaleźć wspólną przyczyną niskiej wydajności w programach równoległych: zbyt długie oczekiwanie na blokadę zaś rdzenie są w pełni wykorzystany podczas czekania.
Oś czasu wizualizuje zachowanie się nici: Sprawdź, kiedy wątki są uruchomione i oczekują oraz kiedy występują przejścia.
Jeśli szukałeś czegoś, co jest open source/free, to Valgrind ma eksperymentalne narzędzie o nazwie Helgrind, które rzekomo znajduje wyścigi w programach wielowątkowych. Nie mogę tego komentować, nie wykorzystałem tego.
Należy zauważyć, że nie udało mi się wykorzystać tych lub innych profilerów do wielowątkowego debugowania i optymalizacji, a zamiast tego opracowałem własne techniki.
Aby zidentyfikować rywalizację o blokadę, moją preferowaną techniką jest użycie rozszerzonej klasy Mutex, która rejestruje wszystkie operacje wykonywane w każdej instancji. Robię to w bardzo lekki sposób, dzięki czemu wydajność aplikacji nie zmienia się w wielkim stylu.
Aby zidentyfikować warunki wyścigu, uważam, że podejście typu brute force jest najlepsze. Właśnie zaprojektowałem test, który można uruchomić przez dłuższy czas, czasami to godziny, lub dni, w zależności od przypadku. I zawsze przeprowadzam mój test na co najmniej dwóch różnych platformach (więcej, jeśli mogę), ponieważ różne systemy operacyjne korzystają z różnych harmonogramów i zapewniają lepszy zasięg.
Powodzenia, będę czekał na rozsądną odpowiedź. Myślę, że musisz dokładnie zrozumieć wątek wykonawczy, który dzielisz na multi. Istnieje wiele narzędzi do profilowania i tworzenia wykresów wykonania (fav to profiler wydajności Redgate, drogi, ale niesamowity), ale bez szczegółów, które kręcisz w ciemności. – Justin
@Justin Ah Zapomniałem wspomnieć, że aplikacja, nad którą pracuję jest w C++. – fantasticsid
@fantasticid: Zmieniłem twój tytuł, by odzwierciedlić twoje zainteresowanie. –