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

インテル® VTune™ プロファイラーは、アプリケーションの実行をプロファイルする際に、アプリケーションがシステムのプロセッサーをどのように活用しているかスナップショットを取得します。スレッドは、実行準備ができているか実行中 (ブロックしていない) であれば、その時点でアクティブであると見なされます。ある時点で実行中のスレッド数は、アプリケーションの並列処理レベルと、アプリケーションがプロセッサーのリソースをどのように利用しているかのヒントをもたらします。インテル® VTune™ プロファイラーは、利用率を Idle (アイドル)、Poor (乏しい)、Ok (適切)、および Ideal (理想的) に分類します。

ユーザーモード・サンプリングとトレースコレクターはプロセスに割り込みをかけ、すべてのアクティブな命令アドレス値を収集して、それらのサンプルの呼び出しシーケンスを取得します。呼び出しシーケンス (スタック) とともにサンプリングされた命令ポインターは、データ収集ファイルに格納されます。呼び出しシーケンスを使用して統計的に収集された IP アドレスのサンプルは、コールグラフや最も時間を要するパスを表示することができます。このデータを参照して、統計的に重要なコードセクションの制御フローを理解します。

Linux* では、ユーザーモード・サンプリングおよびトレースコレクターは、プロファイルするアプリケーションにエージェント・ライブラリーを組込みます。エージェントは、アプリケーション内の各スレッドの OS タイマーをセットアップします。タイマーが満了すると、アプリケーションは SIGPROF、またはコレクターによって処理される別のランタイムシグナルを受けとります。

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

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

ユーザーモード・サンプリングとトレース収集に基づくカスタム解析タイプを作成することもできます。

スタックデータ収集

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

このアプローチは、スタックのアンワインドに伴うオーバーヘッドを軽減できますが、誤ったスタックが表示されることがあります。その場合、インテル® VTune™ プロファイラーは、ボトムアップ/トップダウン・ツリーに [推測されたフレーム] または [スキップされたフレーム] としてマークされた疑似ノードを表示します。これらの問題の解決方法は、「トラブルシューティング」を参照してください。

インテル® VTune™ プロファイラーはまた、スタックをアンワインドする際にシステムあるいはアプリケーション・モジュールのシンボルファイルを検出できないと、[不明なフレーム] というノードを表示することがあります。詳細は、「問題: 不明なフレーム」を参照してください。

関連情報