入出力解析

インテル® VTune™ プロファイラーの入出力解析を使用して、ハードウェアとソフトウェアの両方のレベルで I/O 集約型のアプリケーションのパフォーマンス・ボトルネックを特定します。

インテル® VTune™ プロファイラーの入出力解析は次のことを判断するのに役立ちます。

Linux* の入出力解析では、主に 2 つのパフォーマンス・メトリックがあります。

Linux* と FreeBSD* では、次のターゲットがサポートされます。

入出力解析メトリックの完全なセットは、インテル® Xeon® プロセッサーでのみ利用できます。

解析の設定と実行

FreeBSD* では、インテル® VTune™ プロファイラーのグラフィカル・ユーザー・インターフェイスはサポートされません。Linux* または Windows* システムからリモート SSH を使用して解析の設定と実行を行ったり、CLI からローカルで結果を収集することができます。詳細は、「FreeBSD* ターゲット」を参照してください。

  1. インテル® VTune™ プロファイラーを起動して、オプションでプロジェクトを作成します。

  2. [解析の設定] ボタンをクリックします。

  3. [どこを] ペインで、プロファイルするターゲットシステムを選択します。

  4. [どのように] ペインで、[[プラットフォーム解析] > [入出力] を選択します。

  5. [何を] ペインで、解析するターゲットを指定します (アプリケーション、プロセス、またはシステム)。

  6. ターゲット・アプリケーションと解析の目的に応じて、次の解析オプションを選択します。

  7. [開始] をクリックして解析を実行します。

    インテル® VTune™ プロファイラーはデータを収集し、結果を生成し、その結果を開いて構成に従ってデータを表示します。

コマンドラインから入出力解析を実行するには、次のコマンドを入力します。

vtune -collect io [-knob <value>] -- <target> [target_options]

詳細は、io コマンドライン・インターフェイス でのみ収集できます。

プラットフォーム・レベルのメトリック

ハードウェア・イベントベースのメトリックを収集するには、インテル・サンプリング・ドライバーをロードするか、ドライバーを使用しないハードウェア・イベント収集を構成します (Linux* ターゲットのみ)。

[I/O 解析設定] チェックボックス 機能 前提条件/適用性
PCIe* トラフィック解析 インバウンド I/O (インテル® データダイレクト I/O) およびアウトバウンド I/O (メモリーマップ I/O) の帯域幅を計算します。

サーバー・プラットフォームで使用できます。

I/O 帯域幅のメトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。

  • 開発コード名: Haswell、Broadwell
    • 粒度: いずれの場合も CPU ソケット (パッケージ)。
  • 開発コード名: Skylake、Cascade Lake、Cooper Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイス (外部 PCIe* または統合アクセラレーター)
      • サンプルドライバーなし: I/O デバイス (外部 PCIe* または統合アクセラレーター)
      • root でドライバーなし: カーネル 5.10 以前 - CPU ソケット、以降では I/O デバイスのセット 1。
  • 開発コード名: Snow Ridge、Ice Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイス (外部 PCIe* または統合アクセラレーター)
      • root でのサンプルドライバーなし: I/O デバイス (外部 PCIe* または統合アクセラレーター)
      • root でドライバーなし: カーネル 5.14 以前 - CPU ソケット、以降では I/O デバイスのセット。
インバウンド I/O 要求の L3 ヒットとミスを計算します (インテル® DDIO ヒット/ミス)。

インテル® マイクロアーキテクチャー開発コード名 Haswell ベース以降のサーバー・プラットフォームで利用できます。

インバウンド I/O 要求の L3 ヒット/ミスメトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。

  • 開発コード名: Haswell、Broadwell
    • 粒度: いずれの場合も CPU ソケット (パッケージ)。
  • 開発コード名: Skylake、Cascade Lake、Cooper Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイスのセット1
      • root でドライバーなし: I/O デバイスのセット1
      • root 以外のドライバーなし: CPU ソケット (パッケージ)。
  • 開発コード名: Snow Ridge、Ice Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイスのセット1
      • root でドライバーなし: I/O デバイスのセット1
      • root 以外のドライバーなし: CPU ソケット (パッケージ)。

1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。

インバウンドの I/O リードとライト、および CPU/IO の競合の平均レイテンシーを計算します。

インテル® マイクロアーキテクチャー開発コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。

レイテンシーと CPU/IO 統合メトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。

  • 開発コード名: Skylake、Cascade Lake、Cooper Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイスのセット1
      • root でドライバーなし: I/O デバイスのセット1、2
      • root 以外のドライバーなし: CPU ソケット (パッケージ)2
  • 開発コード名: Snow Ridge、Ice Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイスのセット1
      • root でドライバーなし: I/O デバイスのセット1
      • root 以外のドライバーなし: CPU ソケット (パッケージ)。

1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。

2 - 平均インバウンド I/O リード・レイテンシーは、Skylake、Cascade Lake、Cooper Lake サーバーのドライバーを使用しない収集では利用できません。

MMIO アクセスの特定 MMIO アクセス空間を介してデバイスメモリーにアクセスし、アウトバウンド PCIe* トラフィックを発生させるコードを特定します。

インテル® マイクロアーキテクチャー開発コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。

  • このオプションは、システム全体をプロファイル・モードでは利用できません。
  • このオプションは、Linux* システムのみ利用可能です。
インテル® VT-d 解析 ダイレクト I/O (インテル® VT-d) 向けインテル® バーチャライゼーション・テクノロジーのパフォーマンス・メトリックの計算します。

インテル® マイクロアーキテクチャー開発コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。

インテル® VT-d トリックの粒度は、使用されるコレクターとユーザー権限によって異なります。

  • 開発コード名: Snow Ridge、Ice Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイスのセット1
      • root でドライバーなし: I/O デバイスのセット1
      • root でドライバーなし: カーネル 5.14 以前 - CPU ソケット、以降では I/O デバイスのセット1

1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。

メモリーおよびソケット間の帯域幅を解析 DRAM、パーシステント・メモリー、およびインテル® Ultra Path インターコネクト (インテル® UPI)、またはインテル® QuickPath インターコネクト (インテル® QPI) 帯域幅を計算収集します。

DRAM 帯域幅データは常に収集されますが、インテル® UPI とインテル® QPI のソケット間帯域幅データは、システムが対応する場合にのみ収集されます。

DRAM の最大帯域幅を評価

収集を開始する前に、達成可能な最大 DRAM 帯域幅を評価します。

このデータは、タイムライン上で帯域幅メトリックをスケールし、しきい値を計算するために使用されます。

FreeBSD* システムでは利用できません。

[OS と API レベル] メトリック

[I/O 解析設定] チェックボックス 前提条件/適用性
DPDK

DPDK が「インテル® VTune™ プロファイラーのサポート」 (英語) を有効にしてビルドされていることを確認してください。

DPDK を FD.io VPP (英語) プラグインとしてプロファイルする場合、「インテル® VTune™ プロファイラーでプロファイル」 (英語) で説明されているフラグを使用して、build/external/packages/dpdk.mk の DPDK_MESON_ARGS 環境変数を変更します。

FreeBSD* ターゲットでは利用できません。[システム全体] モードでは利用できません。

SPDK

SPDK が --with-vtune 高度なビルドオプションでビルドされていることを確認してください。

[プロセスにアタッチ] モードでプロファイルする場合、アプリケーションを起動する前に環境変数を設定する必要があります。

[システム全体をプロファイル] モードでは利用できません。

カーネル I/O

これらのメトリックを収集するため、インテル® VTune™ プロファイラーは FTrace* 収集を有効にして、debugfs へのアクセスを可能にします。システムによっては、bin ディレクトリーにある prepare_debugfs.sh スクリプトを実行してパーミッションを再設定するか、root 権限を使用する必要があります。

FreeBSD* ターゲットでは利用できません。

関連情報