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

ユーザーモード・サンプリングとトレース収集

アプリケーション実行のプロファイリング時に、インテル® VTune™ Amplifier は、アプリケーションによるプロセッサーの利用状況を調べます。ある時点で、実行中 (ただし、ブロック中ではないもの) または実行可能なスレッドはアクティブであると見なされます。ある時点の実行中のスレッド数から、アプリケーションの並列化レベルとプロセッサー・リソースの利用状況が分かります。インテル® VTune™ Amplifier は使用率を次のように分類します: Idle、Poor、OK および Ideal。

ユーザーモード・サンプリングとトレース・コレクターは、プロセスに割り込みをかけ、すべてのアクティブな命令アドレスのサンプルを収集し、各サンプルで呼び出しシーケンスを再現します。サンプリング結果の命令ポインター (IP) と呼び出しシーケンス (スタック) はデータ収集ファイルに保存されます。そして、統計的に収集された IP サンプルと呼び出しシーケンスを基に、ビューアーにコールグラフや最も時間のかかるパスが表示されます。このデータは、統計的に重要なコード領域の制御フローを理解するのに役立ちます。

Linux* では、ユーザーモード・サンプリングとトレース・コレクターは、プロファイルしたアプリケーションにエージェント・ライブラリーを埋め込みます。エージェントは、アプリケーションの各スレッド向けに OS タイマーを設定します。タイマーがタイムアウトすると、アプリケーションは SIGPROF や他のランタイムシグナルを受け取り、コレクターによってそのシグナルが処理されます。

ユーザーモード・サンプリングとトレース・コレクターのオーバーヘッドの平均は、デフォルトのサンプリング間隔 10ms でおよそ 5% です。

インテル® VTune™ Amplifier は、ユーザーモード・サンプリングとトレース・コレクターを使用して、次の解析タイプのデータを収集します。

ユーザーモード・サンプリング/トレース収集を使用したカスタム解析タイプを作成することもできます。

スタックデータの収集

データ収集時に、インテル® VTune™ Amplifier は、設定されたサンプリング間隔につきスタックを 1 つだけ解析します。つまり、スレッド実行中に 10 ミリ秒ごと (デフォルトのサンプリング間隔の場合) にスタックを巻き戻します。ただし、パフォーマンス上の理由から、スタックの巻き戻しがスキップまたはエミュレートされることがあります。その場合、ファイナライズ中に収集したデータを処理する際に、インテル® VTune™ Amplifier はスタックのないイベントでは、履歴から一致するスタックを検出しようとします。

このアプローチにより、スタックの巻き戻しオーバーヘッドは減りますが、誤った一致によりスタック情報が不正確になることがあります。その場合、[Bottom-up (ボトムアップ)]/[Top-down Tree (トップダウン・ツリー)] ペインに、[Guessed frame(s) (推測されたフレーム)] と [Skipped frame(s) (スキップされたフレーム)] という擬似ノードが表示されます。これらの問題の解決方法は、トラブルシューティングを参照してください。

また、スタックの巻き戻しでシステムやアプリケーション・モジュールのシンボルファイルが見つからない場合は、[Unknown frame(s) (不明なフレーム)] というノードが表示されます。詳細は、不明なフレームの解決を参照してください。

関連情報