インテル® VTune™ Amplifier 2018 ヘルプ
アプリケーションのスレッドがどれくらい並列に実行されているか、またアプリケーションが利用可能な CPU コアをどれくらい効率良く使用しているかを解析するには、インテル® VTune™ Amplifier のビューポイントを使用します。
次のビューポイントが利用できます。
[Hotspots by CPU Usage (CPU 使用率別ホットスポット)] ビューポイント (デフォルト) では、CPU 時間を最も費やしているプログラムユニットを特定し、CPU 時間が効率良く使用されたかどうか確認できます。
[Hotspots by Thread Concurrency (スレッドの並行性別ホットスポット)] ビューポイントでは、アプリケーションの論理スレッドがシステムの CPU に効率良くスケジュールされたかどうか確認できます。
これらのビューポイントで示されるパフォーマンス・データを解釈するため、次のステップに従います。
この解析結果で提供される [Summary (サマリー)] ウィンドウでアプリケーション・レベルのデータを確認することから開始します。最適化の前後の結果を比較するため、主要な指標およびベースラインとして経過時間を使用します。
経過時間と指定した数の実行スレッドと利用可能な CPU の使用状況を表した [CPU Usage (CPU 使用率)] チャートと [Thread Concurrency (スレッドの並行性)] チャートを確認します。最も長いバーがインテル® VTune™ Amplifier で定義されている OK (許容範囲) または Ideal (理想) 範囲内にあるのが理想的です。
利用可能なプロセッサー時間を効率良く活用していない関数を特定するには、[Bottom-up (ボトムアップ)] ウィンドウを確認します。
CPU 使用率が Poor な関数を特定するには、[Hotspots by CPU Usage] ビューポイントに切り替えます。デフォルトでは、関数は Poor (低) プロセッサー使用率でソートされています。最もクリティカルな関数が最初に表示されます。[CPU Time (CPU 時間)] 列見出しで ボタンをクリックすると、列を展開して使用率タイプごとの時間分布を確認できます。
シリアルで実行され、利用可能なコアを効率良く使用していない関数を特定するには、[Hotspots by Thread Concurrency] ビューポイントに切り替えます。関数は並行性レベルの低い CPU 時間でソートされています。このモードは、[Hotspots by CPU Usage] ビューポイントに似ています。
CPU 使用率で Poor (低) (バー形式の場合は赤いバー ) の時間が最も長い関数の最適化を行います。次に、CPU 使用率で Over (高) (青いバー ) の時間が最も長いものを探します。
目標は、CPU 使用率/並行性が Poor (低) および Over (高) のものを短くし、Ideal (理想) (緑 ) または OK (許容範囲) (オレンジ ) になるように最適化します。
インテル® VTune™ Amplifier はまた、オーバーヘッド時間とスピン時間を測定します。これらのメトリックが解析中のインテル® アーキテクチャーのプロセッサー・タイプ向けに定義されているしきい値を超えた場合、インテル® VTune™ Amplifier は [Bottom-up]/[Top-down Tree (トップダウン・ツリー)] ウィンドウでそれらの値をハイトライトして強調します。ハイライトされているセルにマウスをホバーして、パフォーマンス・チューニングのアドバイスを取得します。
[Bottom-up]/[Top-down Tree] ウィンドウの下部にある [Timeline (タイムライン)] ペインは、アプリケーションのスレッドの動作、および CPU 使用率とスレッドの並行性の変化を表示します。データを解析するには、問題個所を選択し、コンテキスト・メニュー・オプションを使用してその領域を拡大します。インテル® VTune™ Amplifier は、スレッド領域のスレッドごとの CPU 時間の合計として、総 CPU Usage メトリックを計算します。最大 CPU Usage 値は、[プロセッサーコア数] x 100% に等しく、最大のスレッド並行性は論理 CPU 数と等しくなります。以下に示す例では、4 コアシステムのスレッド並行性 (Concurency) は 2 で、CPU 使用率はおよそ 100% です。これは、この範囲で CPU が効率良く利用されていないことを意味します。
アプリケーションが特定の時間フレームでどのように振る舞うか理解するには、タイムラインでこの領域を選択して右クリックし、[Zoom In and Filter In by Selection (選択を拡大してフィルターイン)] を選択します。インテル® VTune™ Amplifier は、この時間範囲で実行された関数を表示します。高い CPU 時間の関数 (ホットスポット) を特定し、ホットスポットをダブルクリックして問題の原因となるコード行を見つけるためソースを開きます。
[CPU Usage] と [Thread Concurrency] データを関連付けて、潜在的なパフォーマンスの問題を特定します。
条件 |
潜在的なパフォーマンスの問題 |
---|---|
平均 CPU 使用率がターゲットの並行性に近く、平均並行性がターゲットの並行性よりもかなり低い場合 |
スピンロックで多くの競合がある並列アプリケーション |
平均 CPU 使用率と平均並行性が 1 に近い場合 |
シリアル・アプリケーション |
平均 CPU 使用率と平均並行性がほぼ同じであり、値が 1 とターゲットの並行性の間にある場合 |
通常の同期ベースのロックによる競合をもつ並列アプリケーション |
平均 CPU 使用率と平均並行性がターゲットの並行性に近い場合 |
適切に並列化されたアプリケーション |
アプリケーションの呼び出しシーケンスの問題を特定し、関数の呼び出し方法を変更することでパフォーマンスを改善できます。潜在的な問題の場所を特定するには次の方法があります。
[Top-down Tree] ペイン: ホットスポットの呼び出し元と呼び出し先の合計時間とセルフ時間を検証して、それぞれの時間を最適化できるかどうか確認します。
[Call Stack (コールスタック)] ペイン: [Bottom-up] または [Top-down Tree] ペインで選択したプログラムユニットのスタックのうち最も割合の高いものが表示されます。ナビゲーション・ボタン を使用して、選択したプログラムユニットを呼び出したスタックの表示を切り替えることができます。バーは、選択したプログラムユニットで費やされた合計時間に対する現在表示されているスタックの割合を示しています。[Call Stack] ペインのドロップダウン・リストを使用して、異なるスタックのデータを表示することもできます。
クリティカルな関数をダブルクリックすると、[Source (ソース)]/[Assembly (アセンブリー)] ウィンドウが開くのでソースコードを解析します。[Timeline] ペインで遷移している個所をダブルクリックすると、その遷移のコールサイトが表示されます。インテル® VTune™ Amplifier から直接コードエディターを開き、コードを編集 (並列性、競合の不均衡の是正または軽減など) できます。