インテル® VTune™ Amplifier 2018 ヘルプ

ロックと待機解析

効率良いプロセッサーの利用を妨げる同期オブジェクトを特定するため、ロックと待機解析を使用します。

最も一般的な問題の 1 つは、同期オブジェクトで長時間待機しているスレッドです (ロック)。コアが十分利用されていないときに待機が発生すると、パフォーマンスに影響します。

ロックと待機解析は、ユーザーモード・サンプリング/トレース収集を使用します。解析中に、各同期オブジェクトがアプリケーションに与える影響を予測して、アプリケーションが各同期オブジェクトを (ブロッキング API の場合、スリープやブロッキング I/O を) どの程度使用する必要があるかを把握します。

インテル® VTune™ Amplifier がサポートする同期オブジェクトのグループは 2 つあります。

ロックと待機解析タイプを使用するには次を確認します。

設定オプション

ロックと待機解析向けのオプションを設定するには、次の操作を行います。

必要条件: プロジェクトを作成し、解析ターゲットを指定します。

  1. インテル® VTune™ Amplifier ツールバーの [New Analysis (新規解析)] ボタン (スタンドアロン GUI)/(Visual Studio* IDE) をクリックします。

    [Analysis Type (解析タイプ)] ウィンドウをアクティブにして、[New Amplifier Result (新規 Amplifier 結果)] タブを開きます。

  2. 左のペインにある解析ツリーから、[Algorithm Analysis (アルゴリズム解析)] > [Locks and Waits (ロックと待機)] 解析タイプを選択します。

    右ペインに [Locks and Waits] の設定が表示されたら、

  3. 解析オプションを設定します。

    [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... (コマンドライン...)] ボタンをクリックして、この設定のコマンドラインを生成できます。

  4. 解析を実行するには、[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] ビューポイントに表示します。

次にすることは?

  1. 競合を引き起こすクリティカルなオブジェクトを特定して、ソースコードを解析します。

  2. クリティカルな関数のハイライトされている最もホットなコード行から開始し、ホットスポットのナビゲーション・オプションによってさらにソースを解析を行います。

  3. コードを修正してボトルネックを解消し、アプリケーションのパフォーマンスを改善します。

    待機中にシステムの使用率が低い (赤いバー)、待機時間が長いオブジェクトをチューニングします。並列化、競合の不均衡の是正または軽減を考慮します。実行しているスレッドの数と利用可能なコアの数が等しい場合、理想的な使用率 (緑のバー) になります。

  4. 最適化を検証するため比較モードで解析を再実行して、さらに改善可能なエリアを特定します。

関連情報