Profiling in C++ multi-Thread-Anwendungen
Haben Sie eine profiling-tool wie Intel Vtune analyzer?
Was sind Ihre Empfehlungen für einen C++ multi-threaded-Anwendung, die auf Linux und windows? Ich bin in Erster Linie daran interessiert, cache-misses, Speicherverbrauch, Speicherlecks und CPU-Auslastung.
Ich benutze valgrind (nur auf UNIX), aber vor allem für das Auffinden von memory-Fehlern und Lecks.
- Ich kam vor kurzem in diesem Papier, die auf profiling: iop.org/EJ/article/1742-6596/119/4/042030/... . igprof twiki.cern.ch/twiki/bin/view/CMS/IgProfAnalysis sieht aus wie ein schickes tool (obwohl ich immer noch haben, es zu versuchen).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden sind die guten tools für Multithread-Anwendungen. Sie können versuchen, die Auswertung zu kopieren.
- Memory-Validator, hier
- AQTime , hier
BEARBEITEN: Intel thread checker kann verwendet werden, um zu diagnostizieren, Data-races, Deadlocks, ins Stocken geraten threads, verlassene Schlösser etc. Bitte haben Sie viel Geduld bei der Analyse der Ergebnisse, wie es ist leicht zu verwechseln.
Paar Tipps:
Unter Linux versuchen oprofile.
Es unterstützt verschiedene Leistungsindikatoren.
Unter Windows, AMD CodeAnalyst (kostenlos, im Gegensatz zu VTune) ist einen Blick Wert.
Es unterstützt nur die event-profiling auf AMD-hardware, obwohl
(auf Intel CPUs, es ist nur eine praktische timer-basierter profiler).
Kürzlich ein Kollege versucht Intel Parallel Studio (beta) und bewertet es positiv
(es finden einige interessante Parallelität-bezogene Probleme in einigen code).
VTune geben Sie eine Menge von details auf, was der Prozessor tun, und manchmal finde ich es schwer zu sehen, das Holz für die Bäume. VTune nicht Bericht über memory leaks. Sie müssen reinigen Sie plus für, die, oder wenn Sie laufen auf einer Linux-box valgrind ist gut für Speicherlecks zu einem tollen Preis.
VTune zeigt zwei Ansichten, eine ist sinnvoll, die tabellarische, die andere ist glaube ich nur für den Verkauf Männer, um Leute zu beeindrucken, aber nicht nützlich.
Für schnelle und günstige Möglichkeit, würde ich gehen mit valgrind. Valgrind hat auch einen cache-Schleifen Teil, aber ich habe nicht verwendet, aber vermute, die auch sehr gut.
cheers,
Martin.
Werde ich in einer anderen Antwort für valgrind, vor allem die callgrind Teil mit der Benutzeroberfläche. Es kann mit mehreren threads durch Profilierung jeder thread für cache misses, etc. Sie haben auch eine multi-thread-Fehler-checker genannt helgrind, aber ich habe es nie benutzt und weiß nicht, wie gut es ist.
Können Sie versuchen, AMD CodeXL CPU-profiler. Es ist kostenlos und erhältlich für Windows und Linux.
AMD CodeXL CPU-profiler ersetzt die nicht mehr unterstützt CodeAnalyst-tool (das erwähnt wurde, in der oben eine Antwort gegeben, indem timday).
Weitere Informationen und download-links finden Sie unter: AMD CodeXL web-Seite.
Den Rational PurifyPlus suite umfasst sowohl bewährte Leck-Detektor und ziemlich guter profiler. Ich bin mir nicht sicher, ob es geht, bis hinunter auf die Ebene der cache-misses, wenn Sie benötigen könnten, VTune für, die.
PurifyPlus ist sowohl auf verschiedenen Unices-und Windows-so sollte es decken Ihre Anforderungen, aber leider im Gegensatz zu Valgrind, es ist nicht gratis.
Für einfache profiling - gprof ist ziemlich gut..