サンプリング・モードでハードウェア・イベントベース・サンプリング (EBS) (パフォーマンス・モニタリング・カウンター (PMC) とも呼ばれる) の実行中、インテル® VTune™ プロファイラーはパフォーマンス・モニタリング・ユニット (PMU) のカウンター・オーバーフロー機能を使用して、アプリケーションをプロファイルします。
データコレクターはプロセスに割り込みをかけ、割り込まれたプロセスの IP を取得します。統計的に収集されたアクティブプロセスの IP から、ソフトウェアのパフォーマンスに影響する重要なコード領域を表示できます。
統計的なサンプリングでは 100% 正確なデータは得られません。インテル® VTune™ プロファイラーはイベントの収集時に、そのイベントだけではなく、そのサンプリング間隔全体 (10,000 から 2,000,000 イベント) をコード・コンテキストに関連付けます。サンプル数が多い場合、サンプリング・エラーがパフォーマンス解析の精度に重大な影響を与えることはなく、最終的な統計情報は有効なものです。しかし、短期間に何かが発生する場合、それを示すサンプルはわずかです。めったに発生しないドライバーで 200 万命令が 0 サイクルでリタイアするなど、一見不可解な結果をもたらす可能性があります。この場合、サンプル数が少ないホットスポットを無視するか、より荒い粒度 (関数単位など) に切り替えます。
イベント・ベース・サンプリングの平均オーバーヘッドは、1 ミリのサンプリング間隔でおよそ 2% です。
同時に収集可能なハードウェア・イベント (PMC) の数は、CPU の能力によって異なります。通常 4 イベントを超えることはありません。この制限に対処するため、インテル® VTune™ プロファイラーはイベントリストをいくつかのイベントグループに分割します。各グループは、同時に収集できるイベントで構成されます。インテル® VTune™ プロファイラーは次のいずれかの技法を使用します。
アプリケーションを複数回実行し、それぞれの実行で 1 つのイベントグループを収集します。
アプリケーションを一度だけ実行し、実行中にラウンドロビン方式でイベントグループを多重化します。これは、特定の OS とハードウェアの組み合わせでは動作しません。
Linux* へのインストールでは、ユーザーごとのフィルター処理を有効にしてサンプリング・ドライバーをインストールする方法もあります。フィルターが有効な場合、コレクターは収集を開始したユーザーによってスポーンされたプロセスのデータのみを収集します。無効 (デフォルト) の場合、システムのすべてのプロセスからサンプルが収集されます。セキュリティーの観点から、クラスター環境ではほかのユーザーから収集を分離するためフィルターを利用することを考えてください。管理者/root は、ドライバーをいつでも再ビルド/再起動することでフィルターモードを変更することができます。一般ユーザーは、製品のインストール後にモードを変更することはできません。
デフォルトでは、インテル® VTune™ プロファイラーのコレクターは、ターゲットをサンプリングしますが実行パスは解析しません。ただし、解析の設定で [コールスタック] オプションを有効にして、ハードウェア・パフォーマンス・イベントやタイムスタンプを正確に測定し、スレッドがアクティブ化またはインアクティブ化されるまでのコールスタックを収集できます。Linux* システムでは、デフォルトで、インテル® VTune™ プロファイラーはハードウェア・イベントベースのスタック解析にドライバーを使用しない Perf 収集モードを使用します。
インテル® VTune™ プロファイラーは、ハードウェア・イベントベース・サンプリング・コレクターを使用して、次の解析タイプのデータを収集します。
ホットスポット (ハードウェア・イベントベース・サンプリング・モード)
GPU 計算/メディア・ホットスポット (プレビュー)
GPU オフロード (プレビュー)
CPU/FPGA 相互作用 (プレビュー)
これは、プレビュー機能です。プレビュー機能は、正式リリースに含まれるかどうかは未定です。皆さんが機能に対する有用性のフィードバックを送ることで、将来の採用決定の判断に役立ちます。プレビュー機能で収集されたデータは、将来のリリースで下位互換性が保証されません。
ハードウェア・イベントベース・サンプリング収集に基づくカスタム解析タイプを作成できます。
ハードウェア・イベントベース・サンプリング・コレクターを使用する解析タイプでは、システム上で一度に 1 つの収集しかできない制限があります。
必要条件:
ハードウェア・イベントベース・サンプリング収集タイプ用のサンプリング・ドライバーをインストールすることを推奨します。Linux* と Android* ターゲットでは、サンプリング・ドライバーがインストールされていない場合、インテル® VTune™ プロファイラーはドライバーを使用しない Pert* 収集を使用して動作します。Linux* ターゲットシステムでは、次の構成の設定に注意してください。
システム全体とアンコアのイベント収集を有効にするには、root または sudo で /proc/sys/kernel/perf_event_paranoid を 0 に設定します。
echo 0>/proc/sys/kernel/perf_event_paranoid
マイクロアーキテクチャー全般解析タイプの収集を有効にするには、オープンファイル記述子のデフォルトの最大数を増やします。root または sudo で /etc/security/limits.conf のデフォルト値を 100*<number_of_logical_CPU_cores> に増やします。
<user> hard nofile <100 * number_of_logic_CPU_cores>
<user> soft nofile <100 * number_of_logic_CPU_cores>