NetQ Receive Side Scaling を有効にして、vNIC 要求を物理 NIC にオフロードできるようにします。これにより、受信側データのパケット パフォーマンスが向上します。

物理 NIC カードがホストにパケットを送信すると、そのホスト上の拡張ネットワーク スタック (ENS) が NUMA ノード上の異なる論理コアにデータを分散します(ホスト スイッチが[拡張データパス] モードで構成されているため、このスタックが実行されます)。RSS エンジンを構成するには、いくつかの方法があります。

ネットワーク管理者として受信側データのスループット パケット パフォーマンスを向上させたい場合は、次のいずれかの方法で RSS を構成することでメリットを活用できます。
次の 2 つのモードがあります。
  • RSS エンジンは単一の vNIC キュー専用です。専用の RSS エンジンは、vNIC から物理 NIC に送信される要求を完全にオフロードします。このモードでは、単一の RSS エンジンが単一の vNIC キュー専用になります。物理 NIC が受信側データを管理し、要求の処理に使用可能なハードウェア キュー間で共有するため、スループット パフォーマンスが向上します。vNIC キューは、物理 NIC キューと同じ論理コアまたは Fastpath と同じ場所にあります。
  • RSS エンジンが複数の vNIC キューで共有されています。このモードでは、複数のハードウェア キューが vNIC キューで使用できるようになります。ただし、vNIC 処理フローが、データを処理する物理ハードウェア キューと一致しない場合があります。つまり、vNIC と物理 NIC が一致する保証はありません。
注: NIC カードでデフォルト キューの Receive Side Scaling (DRSS) が有効になっている場合は、無効にします。

前提条件

  • ホストで、 ESXi バージョン 7 Update 3 以降が実行されている必要があります。
  • NIC カードが RSS 機能をサポートしている必要があります。
  • サポートされるドライバ:Intel40en(非同期ドライバ)。ENS と互換性のある RSS 実装があるかどうかを確認するには、ドライバのドキュメントを参照してください。

手順

  1. NetQ/RSS を有効にするには、esxcli system module parameters set -m -i40en_ens -p DRSS=0,0 RSS=1,0 を実行します。

    ここで、DRSS=0,0 は、両方の NIC ポートで DRSS を無効にすることを示します。

    RSS=1,0 は、いずれかの NIC ポートで NetQ RSS を有効にすることを示します。

  2. ドライバをアンロードするには、vmkload_mod -u i40en_ens を実行します。
  3. ドライバを再ロードして RSS 設定を有効にするには、vmkload_mod i40en_ens を実行します。
  4. デバイスをスキャンしてドライバと NIC を関連付けられるように、デバイス マネージャを停止して PCI fastconnect をトリガします。

    kill -HUP 'ps | grep mgr | awk '{print $1}' を実行します。

  5. vNIC からの RSS 要求を複数の RSS エンジンで処理できるようにするには、仮想マシンの .vmx ファイルで次のパラメータを構成します。

    ethernet.pnicfeatures = '4'。vNIC で RSS 機能が必要であることを示します。

    ethernet.ctxPerDev = '3'。各 vNIC を処理するために複数のコンテキスト(複数の論理コア)を有効にすることを示します。複数のキューに、vSphere スイッチに接続されている仮想マシンが構成されます。これは、NUMA ノードの複数の論理コアが vNIC からの Tx トラフィックと Rx トラフィックを処理できることを意味します。

    複数の vNIC が RSS オフロードを要求した場合、拡張ネットワーク スタック (ENS) は RSS 要求を物理 NIC にオフロードしませんが、共有 RSS エンジンがこれらの要求を処理します。共有 RSS の場合、複数の RSS キューを使用できますが、vNIC キューまたは物理 NIC キューが同じ場所にあるとは限りません。

  6. vNIC からの要求を処理する専用 RSS エンジンを構成するには、仮想マシンの .vmx ファイルで次のパラメータを構成します。

    ethernet.rssoffload=True

    前述の構成が有効になっている場合、vNIC からの RSS 要求が物理 NIC にオフロードされます。要求を RSS エンジンにオフロードできる vNIC は 1 つのみです。このモードでは、vNIC キューが物理 NIC キューに一致します。

  7. RSS エンジンによって提供されるハードウェア キューでパケット フローが分散されていることを確認します。

    次のコマンドを実行します。

    vsish

    get /net/pNics/vmnicX/stats

    出力例:

    rxq0: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq1: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq2: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq3: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq4: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq5: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq6: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    rxq7: pkts=0 bytes=0 toFill=2047 toProc=0 noBuf=0 csumErr=0
    txq0: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq1: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq2: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq3: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq4: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq5: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq6: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0
    txq7: pkts=0 bytes=0 toFill=0 toProc=0 dropped=0