インテル® VTune™ プロファイラーの入出力解析を使用して、ハードウェアとソフトウェアの両方のレベルで I/O 集約型のアプリケーションのパフォーマンス・ボトルネックを特定します。
インテル® VTune™ プロファイラーの入出力解析は次のことを判断するのに役立ちます。
Linux* の入出力解析では、主に 2 つのパフォーマンス・メトリックがあります。
Linux* と FreeBSD* では、次のターゲットがサポートされます。
入出力解析メトリックの完全なセットは、インテル® Xeon® プロセッサーでのみ利用できます。
FreeBSD* では、インテル® VTune™ プロファイラーのグラフィカル・ユーザー・インターフェイスはサポートされません。Linux* または Windows* システムからリモート SSH を使用して解析の設定と実行を行ったり、CLI からローカルで結果を収集することができます。詳細は、FreeBSD* ターゲットをご覧ください。
インテル® VTune™ プロファイラーを起動して、オプションでプロジェクトを作成します。
[解析の設定] ボタンをクリックします。
[どこを] ペインで、プロファイルするターゲットシステムを選択します。
[どのように] ペインで、[[プラットフォーム解析] > [入出力] を選択します。
[何を] ペインで、解析するターゲットを指定します (アプリケーション、プロセス、またはシステム)。
ターゲット・アプリケーションと解析の目的に応じて、次の解析オプションを選択します。
インテル® VTune™ プロファイラーはデータを収集し、結果を生成し、その結果を開いて構成に従ってデータを表示します。
コマンドラインから入出力解析を実行するには、次のコマンドを入力します。
vtune -collect io [-knob <value>] -- <target> [target_options]
ハードウェア・イベントベースのメトリックを収集するには、インテル・サンプリング・ドライバーをロードするか、ドライバーを使用しないハードウェア・イベント収集を構成します (Linux ターゲットのみ)。
[I/O 解析設定] チェックボックス | 機能 | 前提j条件/適用性 |
---|---|---|
PCIe* トラフィック解析 | インバウンド I/O (インテル® データダイレクト I/O) およびアウトバウンド I/O (メモリーマップ I/O) の帯域幅を計算します。 | サーバー・プラットフォームで使用できます。 I/O 帯域幅のメトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。
|
インバウンド I/O 要求の L3 ヒットとミスを計算します (インテル® DDIO ヒット/ミス)。 | インテル® マイクロアーキテクチャー・コード名 Haswell ベース以降のサーバー・プラットフォームで利用できます。 インバウンド I/O 要求の L3 ヒット/ミスメトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。
1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。 |
|
インバウンドの I/O リードとライト、および CPU/IO の競合の平均レイテンシーを計算します。 | インテル® マイクロアーキテクチャー・コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。 レイテンシーと CPU/IO 統合メトリックの粒度は、CPU モデル、使用するコレクター、およびユーザー権限によって異なります。
1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。 2 - 平均インバウンド I/O リード・レイテンシーは、Skylake、Cascade Lake、Cooper Lake サーバーのドライバーを使用しない収集では利用できません。 |
|
MMIO アクセスの特定 | MMIO アクセス空間を介してデバイスメモリーにアクセスし、アウトバウンド PCIe* トラフィックを発生させるコードを特定します。 | インテル® マイクロアーキテクチャー・コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。
|
インテル® VT-d 解析 | ダイレクト I/O (インテル® VT-d) 向けインテル® バーチャライゼーション・テクノロジーのパフォーマンス・メトリックの計算します。 | インテル® マイクロアーキテクチャー・コード名 Skylake ベース以降のサーバー・プラットフォームで利用できます。 インテル® VT-d トリックの粒度は、使用されるコレクターとユーザー権限によって異なります:
1 - 通常、セットは同じ 16 個の PCIe* レーンを共有するすべてのデバイスを組み合わせたものです。 |
メモリーおよびソケット間の帯域幅を解析 | DRAM、パーシステント・メモリー、およびインテル® Ultra Path インターコネクト (インテル® UPI) または、インテル® QuickPath インターコネクト (インテル® QPI) 帯域幅を計算収集します。 | DRAM 帯域幅データは常に収集されますが、インテル® UPI とインテル® QPI のソケット間帯域幅データは、システムが対応する場合にのみ収集されます。 |
DRAM の最大帯域幅を評価 | 収集を開始する前に、達成可能な最大 DRAM 帯域幅を評価します。 このデータは、タイムライン上で帯域幅メトリックをスケールし、しきい値を計算するために使用されます。 |
FreeBSD* システムでは利用できません。 |
[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 権限を使用する必要があります。 |