NetQ Receive Side Scaling を有効にして、vNIC 要求を物理 NIC にオフロードできるようにします。これにより、受信側データのパケット パフォーマンスが向上します。
NSX 4.1.0 および ESXi 8.0 以降では、NSX は NetQ Receive Side Scaling をサポートします。物理 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 バージョン 8 以降が実行されている必要があります。
- NIC カードが RSS 機能をサポートしている必要があります。
- EDP NETQ RSS は、NSX 4.0 以降と ESXi バージョン 8.0 以降でサポートされています。サポートされているインボックス ドライバは、Intel40en(非同期ドライバ)と Mellanox nmlx です。ENS と互換性のある RSS 実装があるかどうかを確認するには、ドライバのドキュメントを参照してください。
手順
- NetQ/RSS を有効にするには、esxcli system module parameters set -m -i40en -p DRSS=0,0 RSS=1,0 を実行します。
ここで、DRSS=0,0 は、両方の NIC ポートで DRSS を無効にすることを示します。
RSS=1,0 は、いずれかの NIC ポートで NetQ RSS を有効にすることを示します。
- ドライバをアンロードするには、vmkload_mod -u i40en を実行します。
- ドライバを再ロードして RSS 設定を有効にするには、vmkload_mod i40en を実行します。
- デバイスをスキャンしてドライバと NIC を関連付けられるように、デバイス マネージャを停止して PCI fastconnect をトリガします。
kill -HUP 'ps | grep mgr | awk '{print $1}' を実行します。
- 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 キューが同じ場所にあるとは限りません。
- vNIC からの要求を処理する専用 RSS エンジンを構成するには、仮想マシンの .vmx ファイルで次のパラメータを構成します。
ethernet.rssoffload=True。
前述の構成が有効になっている場合、vNIC からの RSS 要求が物理 NIC にオフロードされます。要求を RSS エンジンにオフロードできる vNIC は 1 つのみです。このモードでは、vNIC キューが物理 NIC キューに一致します。
- 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