2013-06-27 4 views
6

FrageWie Profil Sperre Konflikte unter g ++/std :: Mutex?

Gibt es Open-Source-Tools oder jemand einen Techniken/code zur Profilierung des Grades der std::mutex Behauptungen hat Code in Laufen?

Ich möchte den Prozentsatz der Sperrenkonflikte bei der Granularität (entweder nach Zeit oder Anzahl) jeder std::mutex Instanz zählen. Wenn es ein Drop-In-Tool gibt, das keine Neucodierung erfordert, wäre das sogar noch besser.

ich für eine Technik, bin auf der Suche, das mit std::thread arbeiten und g ++: am Ausgang der Anwendung, würde Ich mag ein Profil von Mutex Anstoß Statistiken in eine Protokolldatei auskippen, so dass ich die Qualität überwachen von Threading-Code unter tatsächlichen laufenden Kontexten.

Hinweis

I this thread gesehen haben. Leider erfordern die Antworten entweder einen Haufen Geld oder laufen auf Windows.

Antwort

4

Ich empfehle etwas wie AMD CodeXL oder Intel VTune. CodeXL ist kostenlos; Intel VTune hat eine kostenlose akademische Lizenz, wenn diese für Sie anwendbar ist, oder Sie können eine 30-Tage-Testversion ausprobieren. Beide arbeiten unter Linux.

Auf der einfachsten Ebene können diese Tools Hotspots identifizieren, indem Sie z. B. messen, wie viel Zeit Sie in Methoden von std::mutex verbringen. Es gibt weitere fortschrittliche Analysetechniken/Tools, die in jedem Tool enthalten sind und Ihnen möglicherweise weiterhelfen. Sie müssen Ihren Code überhaupt nicht ändern, obwohl Sie möglicherweise überprüfen müssen, ob Sie mit Debug-Symbolen kompiliert und/oder die Binärdateien nicht entfernt haben. Sie werden wahrscheinlich auch von extremen Optimierungsstufen wie -O3 fernbleiben und sich an -O1, -O2 oder -Og halten wollen.

PS: Wie alle Optimierungs Anfragen, ich Sie erinnern müssen immer messen, wo tatsächlich Ihre Leistungsprobleme sind, bevor Sie die Optimierung starten. Unabhängig davon, wie sehr Sie sich über Sperrkonflikte Sorgen machen, validieren Sie Ihre Bedenken mit einem Profiler, bevor Sie große Anstrengungen unternehmen, um zu versuchen, etwaige Sperrkonflikte, die Sie möglicherweise haben oder nicht, zu beheben.

+0

Wird 'gprof' nicht die gleichen Informationen geben (wenn auch ein bisschen voreingenommen)? – rubenvb

Verwandte Themen