Ich möchte in der Lage sein zu sehen, wie "teuer" jeder Thread in meiner Anwendung callgrind verwendet. Ich profilierte mit der Option --separate-thread=yes
, die eine Callgrind-Datei für die gesamte App und dann eine pro Thread liefert.
Dies ist nützlich, um das Profil eines bestimmten Threads anzuzeigen, aber was ich wirklich will, ist nur eine sortierte Liste der CPU-Zeit von jedem Thread, damit ich sehen kann, welche Threads die größten Schweine sind.
Valgrind / Callgrind lässt dieses Verhalten nicht zu. Weder kcachegrind, noch ich denke es wird eine gute Verbesserung sein. Vielleicht könnten einige Antworten auf ihrer Mailing-Liste gefunden werden.
Eine funktionierende aber wirklich langweilige Möglichkeit könnte sein, die Option --separate-thread=no
zu verwenden und Ihren Code zu aktualisieren, um für jeden Thread einen anderen Funktionsnamen oder Klassennamen zu verwenden. Je nach Komplexität Ihres Codes könnte dies die Antwort sein (mit 1computeData (), 2computeData (), ..)
Tags und Links multithreading valgrind kcachegrind callgrind