Profiling von C ++ Multithread-Anwendungen

7

Haben Sie ein Profiling-Tool wie den Intel Vtune Analyzer verwendet?

Was sind Ihre Empfehlungen für eine C ++ - Multithread-Anwendung unter Linux und Windows? Ich bin hauptsächlich an Cache-Misses, Speicherauslastung, Speicherlecks und CPU-Auslastung interessiert.

Ich benutze Valgrind (nur unter UNIX), aber hauptsächlich um Speicherfehler und Lecks zu finden.

    
amit_grepclub 12.03.2009, 10:50
quelle

7 Antworten

8

Im Folgenden sind die guten Werkzeuge für Multithread-Anwendungen. Sie können die Testversion testen.

  1. Laufzeitüberprüfungs-Tool
    • Thread Checker - Intel Threadchecker / VTune, hier
  2. Speicherkonsistenzprüfungswerkzeuge (Speichernutzung, Speicherlecks)     - Speichervalidator, hier
  3. Leistungsanalyse. (CPU auslastung)     - AQTime, hier

BEARBEITEN : Der Intel Thread Checker kann verwendet werden, um Datenrennen, Deadlocks, festgefahrene Threads, abgebrochene Sperren usw. zu diagnostizieren. Bitte haben Sie viel Geduld bei der Analyse der Ergebnisse, da es leicht zu verwirren ist / p>

Einige Tipps:

  1. Deaktivieren Sie die Funktionen, die nicht benötigt werden. (Im Falle der Identifizierung von Deadlocks kann das Datenrennen deaktiviert werden und umgekehrt.)
  2. Verwenden Sie die Instrumentationsstufe basierend auf Ihren Anforderungen. Ebenen wie "All Function" und "Full Image" werden für Datenrennen verwendet, wobei "API Imports" für die Deadlock-Erkennung verwendet werden können.
  3. verwenden häufig das kontextsensitive Menü "Diagnosehilfe".
aJ. 12.03.2009, 11:04
quelle
5

Unter Linux versuchen Sie oprofile . Es unterstützt verschiedene Leistungsindikatoren.

Unter Windows ist AMDs CodeAnalyst (kostenlos, im Gegensatz zu VTune) einen Blick wert. Es unterstützt jedoch nur Event-Profiling auf AMD-Hardware (auf Intel-CPUs ist es nur ein praktischer Timer-basierter Profiler).

Ein Kollege hat kürzlich versucht, Intel Parallel Studio (beta) zu testen und hat es positiv bewertet (es fand einige interessante Parallelismus-Probleme in einigen Code).

    
timday 12.03.2009 13:36
quelle
3

VTune gibt Ihnen eine Menge Details darüber, was der Prozessor macht und manchmal fällt es mir schwer, das Holz für die Bäume zu sehen. VTune meldet keine Speicherlecks. Sie müssen dafür reinigen, oder wenn Sie auf einer Linux-Box laufen können, ist valgrind gut für Speicherlecks zu einem günstigen Preis.

VTune zeigt zwei Ansichten, eine ist nützlich die tabellarische, die andere ich denke, ist nur für Verkäufer, um Menschen zu beeindrucken, aber nicht so nützlich.

Für eine schnelle und billige Option würde ich mit Valgrind gehen. Valgrind hat auch einen Cache-Grind-Teil, aber ich habe es nicht benutzt, aber vermute es ist auch sehr gut.

Prost, Martin.

    
martsbradley 12.03.2009 11:14
quelle
2

Ich werde eine andere Antwort für valgrind einfügen, insbesondere den Callgrind-Teil mit der Benutzeroberfläche. Es kann mehrere Threads verarbeiten, indem es jeden Thread für Cache-Misses usw. profiliert. Sie haben auch einen Multithread-Fehlerprüfer namens helgrind, aber ich habe ihn nie benutzt und weiß nicht, wie gut er ist.

    
Caleb Huitt - cjhuitt 12.03.2009 13:54
quelle
2

Sie können den CPU Profiler von AMD CodeXL testen. Es ist kostenlos und für Windows und Linux verfügbar.

Der CPU-Profiler von AMD CodeXL ersetzt das nicht mehr unterstützte CodeAnalyst-Tool (das in der obigen Antwort von timday erwähnt wurde).

Weitere Informationen und Download-Links finden Sie auf der AMD CodeXL-Webseite .

    
AmitB 30.04.2014 08:19
quelle
1

Die Rational PurifyPlus -Suite umfasst sowohl einen bewährten Leckdetektor als auch einen ziemlich guten Profiler. Ich bin mir nicht sicher, ob es bis auf die Ebene der Cache-Misses geht, aber - VTune könnte dafür nötig sein.

PurifyPlus ist sowohl auf verschiedenen Unices als auch auf Windows verfügbar, so dass es Ihre Anforderungen abdecken sollte, aber im Gegensatz zu Valgrind ist es leider nicht kostenlos.

    
Timo Geusch 12.03.2009 11:00
quelle
1

Für ein einfaches Profiling gprof ist ziemlich gut ..

    
sean riley 16.03.2009 19:50
quelle