VMkernel ネットワーク アダプタと仮想マシンで TCP セグメンテーション オフロード (TSO) を使用して、厳しい遅延要件を持つワークロードでネットワーク パフォーマンスを改善する方法について説明します。
物理ネットワーク アダプタ、VMkernel、および仮想マシン ネットワーク アダプタの転送経路にある TSO は、TCP/IP ネットワーク操作による CPU のオーバーヘッドを削減することで、ESXi ホストのパフォーマンスを改善します。TSO が有効化されている場合、ネットワーク アダプタは大きいデータ チャンクを CPU ではなく TCP セグメントに分割します。VMkernel とゲスト OS は、より多くの CPU サイクルを使用してアプリケーションを実行できます。
TSO で実現するパフォーマンスの向上からメリットを得るには、物理ネットワーク アダプタ、VMkernel、およびゲスト OS を含む ESXi ホスト上のデータ パスで TSO を有効化します。TSO は、デフォルトでは、ESXi ホストの VMkernel、VMXNET 2 および VMXNET 3 仮想マシン アダプタで有効です。
データ パス内の TCP パケット セグメンテーションの場所の詳細については、VMware のナレッジ ベースの記事「VMware 環境における TCP セグメンテーション オフロード (TSO) と Large Receive Offload (LRO) について」を参照してください。
VMkernel でのソフトウェア TSO の管理
物理ネットワーク アダプタで TSO に関する問題が発生する場合は、問題をトラブルシューティングするまで、一時的に VMkernel で TSO のソフトウェア シミュレーションを有効にすることができます。
手順
- ♦ VMkernel で TSO のソフトウェア シミュレーションを有効または無効にするには、次の esxcli network nic software set コンソール コマンドを実行します。
- VMkernel で TSO のソフトウェア シミュレーションを有効にします。
esxcli network nic software set --ipv4tso=1 -n vmnicX esxcli network nic software set --ipv6tso=1 -n vmnicX
- VMkernel で TSO のソフトウェア シミュレーションを無効にします。
esxcli network nic software set --ipv4tso=0 -n vmnicX esxcli network nic software set --ipv6tso=0 -n vmnicX
ここで、vmnicX の X は、ホストの NIC ポート数を表します。
ホストの再起動後も、構成の変更は維持されます。
- VMkernel で TSO のソフトウェア シミュレーションを有効にします。
ESXi ホストの物理ネットワーク アダプタで TSO がサポートされているかどうかの確認
遅延の影響を受けるワークロードを実行するホストでネットワーク パフォーマンスを予測する場合は、物理ネットワーク アダプタが TCP/IP パケット セグメントをオフロードするかどうかを調べます。物理ネットワーク アダプタが TSO をサポートしている場合、TSO はデフォルトで有効になります。
手順
- ♦ ホストの物理ネットワーク アダプタで TSO が有効になっているかどうかを確認するには、次のコンソール コマンドを実行します。
esxcli network nic tso get
ESXi ホストでの TSO の管理
NIC が大きいデータ チャンクを TCP セグメントに分割するように設定するには、転送経路にある TCP セグメンテーション オフロード (TSO) を有効にします。CPU が TCP セグメンテーションを実行するように設定するには、TSO を無効にします。
物理アダプタがハードウェア TSO をサポートしている場合、ホストはデフォルトでハードウェア TSO を使用します。
手順
- vSphere Clientで、ホストに移動します。
- [構成] タブの [システム] を展開します。
- [システムの詳細設定] をクリックします。
- IPv4 の場合は Net.UseHwTSO パラメータの値を編集し、IPv6 の場合は Net.UseHwTSO6 の値を編集します。
- TSO を有効にするには、Net.UseHwTSO および Net.UseHwTSO6 を 1 に設定します。
- TSO を無効にするには、Net.UseHwTSO および Net.UseHwTSO6 を 0 に設定します。
- [OK] をクリックして変更内容を保存します。
- 物理アダプタのドライバ モジュールを再ロードするには、ホストの ESXi Shell で esxcli system module set コンソール コマンドを実行します。
- ドライバを無効にするには、--enabled false オプションを指定して esxcli system module set コマンドを実行します。
esxcli system module set --enabled false --module nic_driver_module
- ドライバを有効にするには、--enabled true オプションを指定して esxcli system module set コマンドを実行します。
esxcli system module set --enabled true --module nic_driver_module
- ドライバを無効にするには、--enabled false オプションを指定して esxcli system module set コマンドを実行します。
結果
ESXi ホストで TSO が有効になっているかどうかを確認する方法
遅延の影響に敏感なワークロードを実行するホストでのネットワーク パフォーマンスを見積もる場合は、VMkernel でハードウェア TSO が有効になっているかどうかを調べます。デフォルトでは、ESXi ホストでハードウェア TSO が有効になっています。
手順
Linux 仮想マシンでの TSO の管理
Linux 仮想マシンのネットワーク アダプタで TSO サポートを有効にし、セグメンテーションが必要な TCP パケットがゲスト OS によって VMkernel にリダイレクトされるようにします。
前提条件
- ESXi が Linux ゲスト OS をサポートしていることを確認します。
『VMware 互換性ガイド』ドキュメントを参照してください。
- Linux 仮想マシンのネットワーク アダプタが VMXNET2 または VMXNET3 であることを確認します。
手順
- ♦ Linux ゲスト OS のターミナル ウィンドウで、TSO を有効または無効にするには、-Kおよび tso オプションを指定して ethtool コマンドを実行します。
- TSO を有効にするには、次のコマンドを実行します。
ethtool -K ethY tso on
- TSO を無効にするには、次のコマンドを実行します。
ethtool -K ethY tso off
ethY の Y は、仮想マシンの NIC のシーケンス番号です。
- TSO を有効にするには、次のコマンドを実行します。
Windows 仮想マシンでの TSO の管理
デフォルトで、TSO は、VMXNET2 および VXMNET3 ネットワーク アダプタ上の Windows 仮想マシンで有効になっています。パフォーマンス上の理由から、TSO の無効化が必要になることがあります。
前提条件
- ESXi が Windows ゲスト OS をサポートしていることを確認します。『VMware 互換性ガイド』ドキュメントを参照してください。
- Windows 仮想マシンのネットワーク アダプタが VMXNET2 または VMXNET3 であることを確認します。