インテル® VTune™ Amplifier 2018 ヘルプ
効率良いプロセッサーの利用を妨げる同期オブジェクトを特定するため、ロックと待機解析を使用します。
最も一般的な問題の 1 つは、同期オブジェクトで長時間待機しているスレッドです (ロック)。コアが十分利用されていないときに待機が発生すると、パフォーマンスに影響します。
ロックと待機解析は、ユーザーモード・サンプリング/トレース収集を使用します。解析中に、各同期オブジェクトがアプリケーションに与える影響を予測して、アプリケーションが各同期オブジェクトを (ブロッキング API の場合、スリープやブロッキング I/O を) どの程度使用する必要があるかを把握します。
インテル® VTune™ Amplifier がサポートする同期オブジェクトのグループは 2 つあります。
スレッド間の同期に通常使用されるオブジェト (ミューテックスやセマフォーなど)。
I/O 操作の待機に関連するオブジェクト (ストリームなど)。
ロックと待機解析タイプを使用するには次を確認します。
ロックと待機解析向けのオプションを設定するには、次の操作を行います。
必要条件: プロジェクトを作成し、解析ターゲットを指定します。
インテル® VTune™ Amplifier ツールバーの [New Analysis (新規解析)] ボタン (スタンドアロン GUI)/(Visual Studio* IDE) をクリックします。
[Analysis Type (解析タイプ)] ウィンドウをアクティブにして、[New Amplifier Result (新規 Amplifier 結果)] タブを開きます。
左のペインにある解析ツリーから、[Algorithm Analysis (アルゴリズム解析)] > [Locks and Waits (ロックと待機)] 解析タイプを選択します。
右ペインに [Locks and Waits] の設定が表示されたら、
解析オプションを設定します。
[CPU sampling interval, ms (CPU サンプリング間隔、ミリ秒)] スピンボックス |
CPU サンプルの間隔 (ミリ秒で) を指定します。 指定可能な値 - 1-1000。 デフォルト値は、10。 |
[Analyze user tasks, events, and counters (ユーザータスク解析、イベント、カウンター)] チェックボックス |
ITT API を使用してコード中で指定したタスク、イベント、およびカウンターを解析します。このオプションを指定すると、高いオーバーヘッドが生じ、結果ファイルのサイズが増加します。 デフォルト値は、false です。 |
[Analyze Intel runtimes and user synchronization (インテルのランタイムとユーザー同期を解析)] チェックボックス |
OpenMP* やインテル® TBB など (またはユーザー定義の) インテルのランタイムで使用されるユーザー同期 API をプロファイルしてスレッドの同期を解析します。このオプションを指定すると、高いオーバーヘッドが生じ、結果ファイルのサイズが増加します。 デフォルト値は、false です。 |
[Details (詳細)] ボタン |
この解析タイプで使用されるデフォルト設定 (編集不可) のリストを展開/折りたたみます。解析向けの追加設定を修正または有効にする場合、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。この解析タイプ設定の編集可能なコピーが作成され、左ペインの [Custom Analysis (カスタム解析)] に追加されます。 |
下にある [Command Line... (コマンドライン...)] ボタンをクリックして、この設定のコマンドラインを生成できます。
解析を実行するには、[Start (開始)] をクリックします。
ロックと待機解析結果は、次のビューポイントで表示できます。
ビューポイント |
説明 |
---|---|
Hotspots (ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。 |
Hotspots by CPU Usage (CPU 使用率別ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。CPU 時間は CPU 使用率の状態 (idle、poor、fair、good) に分割されます。 |
Hotspots by Thread Concurrency (スレッドの並行性別ホットスポット) |
多くの CPU 時間を使用しているコード領域 (ホットスポット) を特定するのに役立ちます。CPU 時間はスレッドの並行性の状態 (idle、poor、fair、good、over) に分割されます。 |
Locks and Waits (ロックと待機) |
CPU コアが十分利用されずにスレッドが同期オブジェクト (ロック)、I/O、タイマーで長時間待機しているなど、アプリケーションが利用可能な CPU コアをどのように利用しているかを示して、効率良く活用されていない個所を特定します。CPU 時間は、待機中の CPU 使用率によって色別に表示されます。 |
デフォルトでインテル® VTune™ Amplifier はロックと待機解析の結果を [Locks and Waits] ビューポイントに表示します。
[Summary (サマリー)] ウィンドウ: CPU 時間とプロセッサー使用率の点からアプリケーションの実行における全体的な統計を表示します。
[Bottom-up (ボトムアップ)] ウィンドウ: ホットスポット関数 (ボトムアップ・ツリー形式)、関数ごとの CPU 時間と CPU 使用率を表示します。
[Top-down Tree (トップダウン・ツリー)] ウィンドウ: ホットスポット関数 (呼び出しツリー形式)、関数のみのパフォーマンス・メトリック (セルフ値)、関数とその子関数のメトリック (合計値) を表示します。
[Caller/Callee (呼び出し元/呼び出し先)] ウィンドウ: 選択された関数の親と子関数を表示します。
[Platform (プラットフォーム)] ウィンドウ: CPU と GPU の使用率、フレームレート、メモリー帯域幅、およびユーザータスクの詳細を提供します (対応するメトリックが収集されていれば)。
競合を引き起こすクリティカルなオブジェクトを特定して、ソースコードを解析します。
クリティカルな関数のハイライトされている最もホットなコード行から開始し、ホットスポットのナビゲーション・オプションによってさらにソースを解析を行います。
コードを修正してボトルネックを解消し、アプリケーションのパフォーマンスを改善します。
待機中にシステムの使用率が低い (赤いバー)、待機時間が長いオブジェクトをチューニングします。並列化、競合の不均衡の是正または軽減を考慮します。実行しているスレッドの数と利用可能なコアの数が等しい場合、理想的な使用率 (緑のバー) になります。
最適化を検証するため比較モードで解析を再実行して、さらに改善可能なエリアを特定します。