ハードウェア・イベントベース・サンプリング収集

同カテゴリーの次の記事

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

この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Hardware Event-based Sampling Collection」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS 環境でも十分ご利用いただけます。また、構成は英語版のヘルプと同じ階層構造にしてあります。


インテル® VTune™ Amplifier のハードウェア・イベントベース・サンプリング (EBS) コレクターは、プロセッサーのパフォーマンス・モニタリング・ユニット (PMU) のカウンター・オーバーフロー機能を使用して、アプリケーションをプロファイルします。

データコレクターは、プロセスに割り込みをかけて、そのプロセスの割り込み時の IP を取得します。統計的に収集されたアクティブなプロセスの IP を使用して、ソフトウェアのパフォーマンスに影響を与える、統計的に重要なコード領域をビューアーに表示します。

注:

統計サンプリングでは 100% 正確なデータを提供できません。インテル® VTune™ Amplifier がイベントを収集するとき、イベントを属性化するだけでなく、そのイベントに先行するサンプリング間隔 (英語) (10,000 から 2,000,000 イベント) を現在のコード・コンテキストに関連付けます。サンプリング数が多い場合、このサンプリングのずれがパフォーマンス解析の精度に深刻な影響を与えることはなく、最終的な統計情報も有用なデータとして参照できます。しかし、短時間に何か発生した場合、わずかなサンプルしか収集されません。これはドライバーでまれに見られ、0 サイクルで 200 万命令がリタイアするなど、一見不可解な結果をもたらす可能性があります。この場合、サンプル数の少ないホットスポットを無視するか、(関数などの) 高い粒度に切り替えるとよいでしょう。

イベントベース・サンプリングのオーバーヘッドの平均は、サンプリング間隔 1ms で約 2% です。

同時に収集可能なハードウェア・イベントの数は CPU の性能により制限されます。通常は 4 イベント以下です。この制限を克服するため、インテル® VTune™ Amplifier ではイベントをいくつかのグループに分けています。それぞれのグループは、同時に収集可能なイベントからなります。インテル® VTune™ Amplifier は、次のいずれかの手法を使用します。

  • アプリケーションを複数回実行して、1 回の実行につき 1 つのイベントグループを収集します。
  • アプリケーションを 1 回だけ実行して、ラウンドロビン方式 (総当り) でイベントグループを多重化 (英語) します。OS とハードウェアの組み合わせによっては、この方法は使用できないことがあります。

デフォルトでは、インテル® VTune™ Amplifier のコレクターはターゲットのサンプリングは行いますが、実行パスは解析しません。[Collect stacks (スタックを収集)] オプションをオンにすると、スレッドがアクティブまたはインアクティブにされた位置までのコールスタック収集と、すべてのハードウェア・パフォーマンス・イベントやタイムスタンプの正確な測定が可能になります。

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

ハードウェア・イベントベース・サンプリング収集に基づくカスタム解析タイプを作成 (英語) することもできます。

注:

ハードウェア・イベントベース・サンプリング・コレクターを使用する解析タイプは、システム上で一度に 1 つの収集のみが許されます。

必要条件:

ハードウェア・イベントベース・サンプリング収集タイプでは、サンプリング・ドライバーをインストール (英語) することを推奨します。Linux* と Android* ターゲットでは、サンプリング・ドライバーがインストールされていない場合、インテル® VTune™ Amplifier は Perf* を使用して動作します (ドライバーなしの収集)。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> に変更します。
    &amp;lt;user&amp;gt; hard nofile &amp;lt;100 * 論理 CPU コア数&amp;gt;
    &amp;lt;user&amp;gt; soft nofile &amp;lt;100 * 論理 CPU コア数&amp;gt;
    

上位トピック: 主要な概念

関連項目

パフォーマンス解析の設定
スタックとハードウェア・イベントベース・サンプリング収集
ユーザーモード・サンプリング/トレース収集
サンプリングと電力ドライバー (英語)
ドライバーなしでのイベント・ベース・サンプリング収集 (英語)
イベントベース解析のコールスタック (英語)
マイクロアーキテクチャーのトップダウン解析法を使用して、アプリケーションをチューニングする
インテル® プロセッサーのイベント・リファレンス (英語)

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事

  • ユーザーモード・サンプリング/トレース収集ユーザーモード・サンプリング/トレース収集 この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「User-Mode Sampling and Tracing Collection」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]
  • 解析結果の表示 この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Viewing Analysis Results」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]
  • ソースの表示ソースの表示 この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Viewing Source」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]
  • ハードウェア・イベントベースのスタック・サンプリングでアプリケーションのパフォーマンスを解析ハードウェア・イベントベースのスタック・サンプリングでアプリケーションのパフォーマンスを解析 この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「Analyzing Application Performance with Hardware Event-based Stack Sampling」の日本語参考訳です。Windows* […]
  • FreeBSD* サポートFreeBSD* サポート この記事は、インテル® デベロッパー・ゾーンに公開されている、インテル® VTune™ Amplifier のオンラインヘルプの一部「FreeBSD* Support」の日本語参考訳です。Windows* 用のヘルプではありますが、その他の OS […]