2011-07-24 4 views
7

Threadscope(およびNPTL Trace toolより新しい)のようなフリーでオープンソースなツールがあり、CPU使用率/スレッディングエラーを分析できますか?には、HaskellのThreadscopeのようなC/C++用のスレッドトレーサがありますか?

+0

CPU使用率を分析する方法(すべてのCPUが使用されているかどうかを知りたいですか?)と、関心のあるスレッドエラーの種類に? – osgx

答えて

1

CPU使用率分析とスレッドエラーチェッカーを同じツールに含めることはできません。スレッディングエラーを見つけるには、メモリアクセスの膨大な分析が必要です。私はvalngrindのhelgrind http://valgrind.org/docs/manual/hg-manual.htmlとgoogle threadSanitizer、tsan(helgrindに基づいて)の名前をつけることができますhttp://code.google.com/p/data-race-test/wiki/ThreadSanitizer。どちらのツールも、valgrindのlibVEX動的コード変更フレームワークを使用して、コードのランタイムインスツルメンテーションを実行します。これにより、大幅な減速につながります。 Helgrind(hg-manualより):

パフォーマンスは非常に悪い可能性があります。 100:1の順番の低下は珍しいことではありません。パフォーマンスの向上のための範囲は限られています。

CPU使用率については、アプリケーションのパフォーマンスにわずか(最大5~10%)しか影響を与えないプロファイラを使用する必要があります。 oprofileまたはlinuxのperf https://perf.wiki.kernel.org/index.php/Main_Page

OpenMPを使用してアプリケーションのスレッドを追加する場合、OMPスレッドの分散を分析するソリューションがあります。インテルのOpenMPインプリメンテーションでは、ここに示すような情報を記録することができます.gvs (GuideView openmp statistics) file format