VMware は、ESXi ホスト上のストレージ デバイスのパフォーマンスを向上させる高性能プラグイン (HPP) を提供します。

HPP は、NVMe などの高速デバイスの NMP に代わる機能です。HPP は、NVMe-oF のターゲットを要求するデフォルトのプラグインです。ESXi では、end to end NVMe without および SCSI to NVMe のエミュレーションがサポートされています。HPP は、アクティブ/アクティブおよび暗黙的な ALUA ターゲットのみをサポートします。

vSphere 7.0 Update 2 以降では、HPP がローカルの NVMe および SCSI デバイスのデフォルト プラグインになりますが、NMP に置き換えることができます。

HPP のサポート vSphere 7.0 Update 2 以降
ストレージ デバイス ローカルの NVMe および SCSI

共有 NVMe-oF(アクティブ/アクティブおよび暗黙的な ALUA ターゲットのみ)

マルチパス はい
第 2 レベルのプラグイン なし
SCSI-3 の永続的な予約 なし
ソフトウェア エミュレーションを含む 4Kn デバイス はい

パス選択スキーム

マルチパスをサポートするため、HPP は、I/O 要求の物理パスを選択するときにパス選択スキーム (PSS) を使用します。

デフォルトのパス選択メカニズムは、vSphere Client または esxcli コマンドを使用して変更できます。

vSphere Client でのパス メカニズムの設定の詳細については、パス選択ポリシーの変更を参照してください。esxcli コマンドを使用して設定するには、ESXi esxcli HPP コマンドを参照してください。

ESXi は、次のパス選択メカニズムをサポートします。

固定
このスキームでは、指定した優先パスが I/O 要求に使用されます。優先パスが割り当てられていない場合、ホストは起動時に検出された使用可能な最初のパスを選択します。優先パスが使用できなくなると、ホストは使用可能な代替パスを選択します。ホストは、定義済みの優先パスが再び使用可能になると、そのパスに戻ります。

パス選択メカニズムとして [固定] を設定する場合は、優先パスを選択します。

LB-RR(ロード バランシング - ラウンド ロビン)
これは、HPP が要求するデバイスのデフォルトのスキームです。現在のパスの、指定したバイト数または I/O を転送した後、このスキームはラウンド ロビン アルゴリズムを使用してパスを選択します。
[LB-RR] パス選択メカニズムを設定するには、次のプロパティを指定します。
  • [IOPS]:デバイスのパスを切り替える基準として使用するパスの I/O 数を示します。
  • [バイト]:デバイスのパスを切り替える基準として使用するパスのバイト数を示します。
LB-IOPS(ロード バランシング - IOPS)
現在のパスの、指定した数の I/O(デフォルトは 1000)を転送した後、システムは未処理の I/O が最も少ない最適なパスを選択します。

このメカニズムを設定する場合は、デバイスのパスを切り替える基準として使用されるパスの I/O 数を示す、[IOPS] パラメータを指定します。

LB-BYTES(ロード バランシング - バイト)
現在のパスで、指定したバイト数(デフォルトは 10 MB)を転送した後、システムは未処理のバイト数が最も少ない最適なパスを選択します。

このメカニズムを設定するには、デバイスのパスを切り替える基準として使用されるパスのバイト数を示す、[バイト] パラメータを使用します。

ロード バランシング - 遅延(LB-遅延)
ロード バランシングの結果を向上させるために、このメカニズムでは、以下のパス特性を考慮して最適なパスを動的に選択します。
  • [遅延評価時間] パラメータは、パスの遅延を評価する間隔(ミリ秒)を示します。
  • [パスごとのサンプリング I/O] パラメータは、パスの遅延を計算するための、各パスで発行する サンプル I/O の数を制御します。

HPP のベスト プラクティス

高速ストレージ デバイスからのスループットを最大限にするには、次の推奨事項を実行します。

  • HPP をサポートするバージョンの vSphere を使用してください。
  • ローカルの NVMe および SCSI デバイスと NVMe-oF デバイスに HPP を使用してください。
  • NVMe over Fibre Channel デバイスを使用する場合は、ファイバ チャネル ストレージに関する一般的な推奨事項を実行してください。ESXi とファイバ チャネル SAN との併用を参照してください。
  • NVMe-oF を使用する場合は、異なる転送タイプを使用して同じ名前空間にアクセスしないでください。
  • NVMe-oF の名前空間を使用する場合は、アクティブ パスがホストに提示されていることを確認してください。アクティブなパスが検出されるまで、名前空間は登録できません。
  • 仮想マシンを構成するときに、VMware 準仮想化コントローラを使用するか、NVMe コントローラを追加することができます。どちらのタイプにも長所と短所があります。環境に最適なタイプを確認するには、vSphere の仮想マシン管理ドキュメントの SCSI、SATA、NVMe ストレージ コントローラの条件、制限事項、互換性を参照してください。
  • 遅延の影響を受けるしきい値を設定します。
  • 単一の仮想マシンがデバイスの I/O ワークロードの大幅な共有を推進する場合、複数の仮想ディスク間で I/O を分散することを検討します。仮想マシンの個別の仮想コントローラにディスクを接続します。

    そうしない場合、特定の仮想ストレージ コントローラの I/O を処理する CPU コアが飽和状態になり、I/O スループットが制限される可能性があります。

NGUID ID 形式のみをサポートする NVMe デバイスのデバイス識別子については、NGUID デバイス識別子を持つ NVMe デバイスを参照してください。

高パフォーマンス プラグインとパス選択スキームの有効化

高パフォーマンス プラグイン (HPP) は、ローカルの NVMe および SCSI デバイスと NVMe-oF ターゲットを要求するデフォルトのプラグインです。必要に応じて NMP に置き換えることができます。vSphere バージョン 7.0 Update 1 以前では、NMP はローカルの NVMe および SCSI デバイスのデフォルト プラグインのままですが、HPP に置き換えることができます。

esxcli storage core claimrule add コマンドを使用して、ESXi ホストで HPP または NMP を有効にします。

esxcli storage core claimrule add を実行するには、ESXi Shell または vSphere CLI を使用します。詳細については、『ESXCLI スタート ガイド』および『ESXCLI のリファレンス』を参照してください。

このトピックの例では、HPP を有効にしてパス選択スキーム (PSS) を設定する方法を示します。
注: PXE ブートされた ESXi ホストでは、HPP の有効化はサポートされません。

前提条件

VMware NVMe ストレージ環境を設定します。詳細については、『VMware NVMe ストレージについて』を参照してください。

手順

  1. esxcli storage core claimrule add コマンドを実行して、HPP 要求ルールを作成します。
    次のいずれかの方法で、要求ルールを追加します。
    方法 説明
    NVMe コントローラ モデルを基盤とする esxcli storage core claimrule add –-type vendor --nvme-controller-model

    例:esxcli storage core claimrule add --rule 429 --type vendor --nvme-controller-model "ABCD*" --plugin HPP

    PCI ベンダー ID およびサブベンダー ID を基盤とする esxcli storage core claimrule add –-type vendor –-pci-vendor-id –-pci-sub-vendor-id

    例:esxcli storage core claimrule add --rule 429 --type vendor --pci-vendor-id 8086 --pci-sub-vendor-id 8086 --plugin HPP

  2. PSS を設定します。
    次のいずれかの方法を使用します。
    方法 説明
    デバイス ID に基づいて PSS を設定する esxcli storage hpp device set

    例:esxcli storage hpp device set --device=device --pss=FIXED --path=preferred path

    ベンダー/モデルに基づいて PSS を設定する --config-string オプションを esxcli storage core claimrule add コマンドで使用します。

    例:esxcli storage core claimrule add -r 914 -t vendor -V vendor -M model -P HPP --config-string "pss=LB-Latency,latency-eval-time=40000"

  3. ホストを再起動して、変更を有効にします。

遅延感度しきい値の設定

ストレージ デバイスに HPP を使用する場合は、I/O が I/O スケジューラを回避できるように、遅延感度しきい値を設定します。

デフォルトでは、ESXiはすべての I/O を I/O スケジューラを介して渡します。ただし、I/O スケジューラを使用すると内部キューイングが発生する可能性があるため、高速のストレージ デバイスの場合は効率的ではありません。

遅延感度しきい値を設定することにより、直接送信メカニズムを有効にして I/O がスケジューラを迂回するようにできます。このメカニズムを有効にすると、I/O は HPP を介して PSA からデバイス ドライバに直接渡されます。

直接送信が適切に機能するためには、観測される I/O の遅延の平均が、指定した遅延のしきい値よりも短い必要があります。I/O の遅延が遅延感度しきい値を超えると、システムは直接送信を停止し、I/O スケジューラの使用に一時的に戻ります。I/O 遅延の平均が遅延感度しきい値を再び下回ると、直接送信が再開されます。

HPP が要求したデバイス ファミリの遅延のしきい値を設定できます。ベンダーとモデルのペア、コントローラ モデル、または PCIe ベンダー ID とサブベンダー ID のペアを使用して、遅延のしきい値を設定します。

手順

  1. デバイスの遅延感度しきい値は、次のコマンドを実行して設定します。
    esxcli storage core device latencythreshold set -t value in milliseconds

    次のいずれかのオプションを使用します。

    オプション
    ベンダー/モデル 指定したベンダーおよびモデルのすべてのデバイスに関する遅延感度しきい値パラメータを設定します。esxcli storage core device latencythreshold set -v 'vendor1' -m 'model1' -t 10
    NVMe コントローラ モデル 指定したコントローラ モデルのすべての NVMe デバイスに関する遅延感度しきい値を設定します。esxcli storage core device latencythreshold set -c 'controller_model1' -t 10
    PCIe ベンダー/サブベンダー ID PCIe ベンダー ID として 0x8086、PCIe サブベンダー ID として 0x8086 を使用する、デバイスの遅延感度しきい値を設定します。esxcli storage core device latencythreshold set -p '8086' -s '8086' -t 10
  2. 遅延感度しきい値が設定されていることを確認します。
    esxcli storage core device latencythreshold list
    Device                Latency Sensitive Threshold
    --------------------  ---------------------------
    naa.55cd2e404c1728aa               0 milliseconds
    naa.500056b34036cdfd               0 milliseconds
    naa.55cd2e404c172bd6              50 milliseconds
    
  3. 遅延感度しきい値のステータスを監視します。次のエントリの VMkernel ログを確認します。
    • Latency Sensitive Gatekeeper turned on for device device. Threshold of XX msec is larger than max completion time of YYY msec
    • Latency Sensitive Gatekeeper turned off for device device. Threshold of XX msec is exceeded by command completed in YYY msec

ESXi esxcli HPP コマンド

ESXi Shell または vSphere CLI のコマンドを使用して、高パフォーマンス プラグインの設定と監視ができます。

esxcli コマンドの使用の概要についてはESXCLI スタート ガイドを、詳細についてはESXCLI のリファレンスを参照してください。

コマンド 説明 オプション
esxcli storage hpp path list 高パフォーマンス プラグインによって現在要求されているパスを一覧表示します。 -d|--device=device 特定のデバイスの情報を表示します。

-p|--path=path 出力を特定のパスに制限します。

esxcli storage hpp device list 高パフォーマンス プラグインによって現在制御されているデバイスを一覧表示します。 -d|--device=device 特定のデバイスを表示します。
esxcli storage hpp device set HPP デバイスの設定を変更します。 -B|--bytes=long パスの最大バイト数。これを超えるとパスは切り替わります。

--cfg-file 構成ファイルとランタイムを新しい設定で更新します。デバイスが別の PSS によって要求されている場合、ランタイム構成に適用する際のエラーは無視してください。

-d|--device=device 操作対象の HPP デバイス。デバイスが報告する UID のいずれかを使用します。必須。

-I|--iops=long パスでの IOPS の最大値。これを超えるとパスは切り替わります。

-T|--latency-eval-time=long パスの遅延を評価する間隔(ミリ秒)を制御します。

-L|--mark-device-local=bool デバイスをローカルまたは非ローカルとして処理するように HPP を設定します。

-M|--mark-device-ssd=bool HPP がデバイスを SSD として扱うかどうかを指定します。

-p|--path=str デバイスの優先パスとして設定するパス。

-P|--pss=pss_name デバイスに割り当てるパス選択スキーム。値を指定しない場合は、デフォルト値が選択されます。パス選択スキームの説明については、 VMware High Performance プラグインとパス選択スキームを参照してください。次のオプションがあります。
  • FIXED

    優先パスを設定するには、-p|--path=str サブオプションを使用します。

  • LB-Bytes

    入力を指定するには、-B|--bytes=long サブオプションを使用します。

  • LB-IOPs

    入力を指定するには、-I|--iops=long サブオプションを使用します。

  • LB-Latency

    次のサブオプションがあります。

    -T|--latency-eval-time=long

    -S|--sampling-ios-per-path=long

  • LB-RR(デフォルト)

    次のサブオプションがあります。

    -B|--bytes=long

    -I|--iops=long

-S|--sampling-ios-per-path=long パスの遅延を計算するための、各パスで発行するサンプル I/O の数を制御します。

-U|--use-ano=bool:このデバイスで I/O を発行するために使用されるアクティブ パスのセットに最適化されていないパスを含めるには、このオプションを true に設定します。それ以外の場合は、このオプションを false に設定します。

esxcli storage hpp device usermarkedssd list ユーザーが SSD としてマークした、またはマーク解除したデバイスを一覧表示します。 -d|--device=device 特定のデバイスへの出力を制限します。