キャッシュミスと高い帯域幅の問題向けのメモリーアクセス解析

インテル® VTune™ プロファイラーのメモリーアクセス解析を使用して、NUMA の問題や帯域幅に制限されたアクセスなど、メモリー関連の問題を特定し、パフォーマンス・イベントをメモリー・オブジェクト (データ構造) に分類します。これは、メモリー割り当て/解放のインストルメントと、シンボル情報からの静的/グローバル変数の取得によって提供されます。

インテル® VTune™ プロファイラーは、インテル® VTune™ Amplifier の後継バージョンであり、名称が変更されました。

どのように動作するか

メモリーアクセス解析タイプは、ハードウェア・イベントベース・サンプリングを使用して、以下のメトリックのデータを収集します。

  • メトリックの一覧は、マイクロアーキテクチャーによって異なります。

  • UPI 利用率メトリックは、インテル® マイクロアーキテクチャー開発コード名 Skylake ベースのシステムで QPI 利用率に代わるものです。

メモリーアクセス解析で使用される多くの収集イベントはプリサイス (正確) です。これにより、データ・アクセス・パターンが分かりやすくなります。オフコアのトラフィックは、ローカル DRAM とリモート DRAM アクセスに区分されます。通常、コストが高いリモート DRAM アクセスを最小限に抑えることに集中します。

解析の設定と実行

次のようにメモリーアクセス解析のオプションを設定します。

必要条件: プロジェクトを作成します。

  1. インテル® VTune™ プロファイラー・ツールバーの (スタンドアロン GUI)/ (Visual Studio* IDE) [解析の設定] ボタンをクリックします。

    [解析の設定] ウィンドウが表示されます。

  2. [どのように] ペインで、 [実行する解析タイプを選択] ボタンをクリックして、[メモリーアクセス] を選択します。

  3. 次のオプションを設定します。

    [CPU サンプリング間隔 (ミリ秒)] フィールド

    CPU サンプル間の間隔を指定します (ミリ秒)。

    設定可能な値は、0.01 - 1000 です。

    デフォルト値は 1 ミリ秒です。

    [動的メモリー・オブジェクトを解析] チェックボックス (Linux* のみ)

    動的メモリーの割り当て/解放のインストルメントとメモリー・オブジェクトのハードウェア・イベントへのマップを有効にします。このオプションは、すべてのシステムメモリーの割り当て/解放をインストルメントするため、実行時にオーバーヘッドが生じる可能性があります。

    このオプションは、デフォルトで無効になっています。

    [追跡する最小動的メモリー・オブジェクト・サイズ (バイト)] スピンボックス (Linux* のみ)

    解析に使用する動的メモリー割り当ての最小サイズを指定します。このオプションは、インストルメントの実行時のオーバーヘッドを軽減するのに有効です。

    デフォルト値は 1024 です。

    [DRAM の最大帯域幅を評価] チェックボックス

    収集を開始する前に、達成可能な最大 DRAM 帯域幅を評価します。このデータは、タイムライン上で帯域幅メトリックをスケールし、しきい値を計算するために使用されます。

    このオプションは、デフォルトで有効になります。

    [OpenMP* 領域を解析] チェックボックス

    インバランス、ロック競合、またはスケジュール、リダクション、およびアトミック操作のオーバーヘッドなどの非効率性を特定するため、OpenMP* 領域をインストルメントして解析します。

    このオプションは、デフォルトで無効になっています。

    [詳細] ボタン

    この解析タイプのデフォルトの編集不可設定のリストを展開/折りたたみます。解析の設定を変更したり、追加の設定を有効にするには、既存の事前定義設定をコピーしてカスタム設定を作成する必要があります。インテル® VTune™ プロファイラーは、解析タイプ設定の編集可能なコピーを作成します。

  4. [開始] ボタンをクリックして解析を実行します。

制限:

データを表示

解析では、次のウィンドウを含む [メモリー使用] ビューポイントを調査します。

サポートの制限

メモリーアクセス解析は、次のプラットフォームでサポートされます。

古いプロセッサーを解析する場合、カスタム解析を作成してメモリーアクセスに関連するイベントを選択できます。ただし、それらのプロセッサーでサポートされるメモリー関連のイベントに制限されます。プロセッサーごとのメモリー・アクセス・イベントについては、「インテル® VTune™ プロファイラーのチューニング・ガイド」 (英語) を参照してください。

Linux* 上の動的メモリー・オブジェクト解析では、インテル® VTune™ プロファイラーは次のメモリー割り当て API をインストルメントします。

関連情報