入出力解析

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

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

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

  • 開発コード名Haswell、Broadwell
    • 粒度: いずれの場合も CPU ソケット (パッケージ)。
  • 開発コード名Skylake、Cascade Lake、Cooper Lake
    • 粒度:
      • サンプルドライバーあり: I/O デバイス (外部 PCIe* または統合アクセラレーター)
      • root でのサンプルドライバーなし: 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 解析設定] チェックボックス 前提j条件/適用性
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 権限を使用する必要があります。

関連情報
プラットフォーム・パフォーマンス解析 インテル® VTune™ プロファイラーの入出力解析で提供されるプラットフォーム・レベルのメトリックを理解します。
DPDK アプリケーション解析 インテル® VTune™ プロファイラーの入出力解析を使用して、DPDK アプリケーションのプロファイルして Rx およびイベントキュー操作を行うポーリングスレッドのバッチ統計を収集します。
SPDK アプリケーション解析 インテル® VTune™ プロファイラーの入出力解析を使用して、SPDK アプリケーションのプロファイルして SPDK 効率時間と SPDK レイテンシーを予測し、SPDK デバイスで十分に活用されていないスループットを特定します。
Linux* カーネル I/O 解析 インテル® VTune™ プロファイラーの入出力解析を使用して、ユーザーレベルのコードをハードウェアで実行される I/O 操作に一致させます。
io コマンドライン解析