インテル® VTune™ プロファイラー・ユーザーガイド

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

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

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

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

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

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

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

スタックデータ収集

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

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

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

関連情報