コンカレンシー解析はアプリケーションが並列でない場所を特定しますが、ロックと待機の解析はプロセッサー使用率が効率的ではない原因を特定します。最も一般的な問題の 1 つは、同期オブジェクトで長時間待機しているスレッドです (ロック)。コアが十分利用されていないときに待機が発生すると、パフォーマンスに影響があります。
ロックと待機の解析は、ユーザーモード・サンプリング/トレース収集を使用します。 解析中に、各同期オブジェクトがアプリケーションに与える影響を予測して、アプリケーションが各同期オブジェクトを (ブロッキング API の場合、スリープやブロッキング I/O を) どの程度待つ必要があるかを把握します。
インテル(R) VTune(TM) Amplifier XE でサポートしている同期オブジェクトのグループは 2 つあります。
1) スレッド間の同期に通常使用されるオブジェト (ミューテックスやセマフォーなど)。
2) I/O 操作の待機に関連するオブジェクト (ストリームなど)。
ロックと待機解析結果は、次のビューポイントで表示できます。
ビューポイント | 説明 |
---|---|
hotspot | 多くの CPU 時間を使用しているコード領域 (hotspots) を特定するのに役立ちます。 |
Hotspots by CPU Usage (CPU 使用率別 hotspot) | 多くの CPU 時間を使用しているコード領域 (hotspots) を特定するのに役立ちます。CPU 時間は CPU 使用率の状態 (idle、poor、fair、good) に分割されます。 |
Hotspots by Thread Concurrency (スレッドのコンカレンシー別 hotspot) | 多くの CPU 時間を使用しているコード領域 (hotspots) を特定するのに役立ちます。CPU 時間はスレッドのコンカレンシーの状態 (idle、poor、fair、good、over) に分割されます。 |
Locks and Waits (ロックと待機) | CPU コアが十分利用されずにスレッドが同期オブジェクト (ロック)、I/O、タイマーで長時間待機しているなど、アプリケーションが利用可能な CPU コアをどのように利用しているかを示して、効率良く活用されていない箇所を特定します。CPU 時間は、待機中の CPU 使用率によって色別に表示されます。 |
デフォルトでは、インテル(R) VTune(TM) Amplifier XE はロックと待機解析の結果を [Locks and Waits (ロックと待機)] ビューポイントに表示します。
競合が発生しているオブジェクトを特定し、ソースコードに移動して、問題を修正します。待機中にシステムの使用率が低い (赤いバー)、待機時間が長いオブジェクトをチューニングします。並列化、競合の不均衡の是正または軽減を考慮します。実行しているスレッドの数と利用可能なコアの数が等しい場合、理想的な使用率 (緑のバー) になります。
コードを修正した後、比較解析を実行してパフォーマンスの向上の度合いとより向上が見込める箇所を確認します。
© 2010 Intel Corporation. 無断での引用、転載を禁じます。