2009-03-12 6 views
7

インテルVtuneアナライザーのようなプロファイリング・ツールを使用しましたか?C++マルチスレッド・アプリケーションのプロファイリング

LinuxおよびWindows上のC++マルチスレッドアプリケーションの推奨事項を教えてください。私は、主にキャッシュミス、メモリ使用量、メモリリーク、CPU使用量に興味があります。

私はvalgrind(UNIXのみ)を使用しますが、主にメモリエラーやリークを検出するために使用します。

+0

私は最近、この論文をプロファイリングしました:http://www.iop.org/EJ/article/1742-6596/119/4/042030/jpconf8_119_042030.pdf?request-id=6fb45e59-676f-4728- 86bd-f324abdc5053。 igprof https://twiki.cern.ch/twiki/bin/view/CMS/IgProfAnalysisは素晴らしいツールのように見えますが(まだ試してみる必要がありますが)。 –

答えて

8

以下は、マルチスレッドアプリケーションに適したツールです。あなたは評価コピーを試すことができます。

  1. ランタイム健全性チェックツール
    • スレッド・チェッカー - インテル®スレッド・チェッカー/インテル®VTune、here
  2. メモリー整合性チェックツール(メモリ使用量、メモリリーク) - メモリバリ、here
  3. パフォーマンス分析。 (CPU使用率) - AQtimeは、here

EDIT:インテルスレッド・チェッカーは、データ競合を診断するために使用することができ、デッドロック、停滞スレッド、放棄されたロックなどがそれとして結果を分析する際に忍耐を持ってください。混乱するのは簡単です。

いくつかのヒント:

  1. 必要とされていない機能を無効にし、あなたの必要性に基づいて
  2. 使用計装レベル。(デッドロックを特定する場合には、データレースは無効とその逆のことができます。)。 "API Imports"としてデッドロック検出に使用できるデータレースでは、 "All Function"や "Full Image"などのレベルが使用されます。
  3. 「診断ヘルプ」を頻繁に使用します。
1

Rational PurifyPlusスイートには、実績のあるリークディテクタと非常に優れたプロファイラが含まれています。キャッシュミスのレベルまで下がっているかどうかは分かりませんが、VTuneが必要な場合があります。

PurifyPlusはさまざまなUnixおよびWindowsで使用できますので、要件を満たす必要がありますが、残念ながらValgrindとは対照的に、Freeではありません。

3

VTuneは、プロセッサが何をしているかについて多くの詳細を教えてくれます。時には、木の木が見えないこともあります。 VTuneはメモリーリークを報告しません。あなたはそのために浄化する必要があります。もしあなたがLinuxボックス上で動くことができれば、valgrindは素晴らしい価格でメモリリークに適しています。

VTuneは2つのビューを表示しますが、1つは表形式のもの、もう1つは販売担当者にとって役立つものではありません。

迅速で安価なオプションとして、私はvalgrindと一緒に行きます。 Valgrindにはキャッシュ・グラインド・パートもありますが、私はそれを使用していませんが、非常に良いとも考えています。

歓声、 Martin。

5

Linuxの場合、oprofileを試してください。 さまざまなパフォーマンスカウンターをサポートしています。

Windowsでは、AMDのCodeAnalyst(無料、VTuneとは異なります)が一見価値があります。 (Intel CPU上では便利なタイマーベースのプロファイラー)、AMDハードウェアでのイベントプロファイリングのみサポートしています。

最近、同僚がIntel Parallel Studio(ベータ版)を試して好意的に と評価しました(一部のコードでは面白い並列関係の問題が見つかりました)。

2

私はvalgrindの別の答え、特にUIのコールグレイン部分を入れます。キャッシュミスなどのために各スレッドをプロファイリングすることで、複数のスレッドを処理することもできます。helgrindというマルチスレッドエラーチェッカーもありますが、これを使用したことはなく、どれくらい良いのか分かりません。シンプルなプロファイリングgprofについては

+2

Helgrindは、相互排他ロックの順序の不一致、競合状態などの潜在的なスレッドの問題を見つけるのには非常に優れています。しかし、これはpthreadでも機能します。したがって、他のスレッドライブラリのユーザーは不運になる可能性があります。 私のマシンではvalgrindよりもはるかに遅く動作するので、使用するときは忍耐が重要です! –

1

はかなり良い..です

2

あなたはAMD CodeXLのCPUプロファイラを試すことができます。これは無料で、WindowsとLinuxの両方で利用できます。

AMD CodeXLのCPUプロファイラは、もはやサポートされていないCodeAnalystツール(上記の答えはtimdayで指定されています)を置き換えます。

詳細およびダウンロードリンクについては、AMD CodeXL web pageをご覧ください。

関連する問題