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

    ここで、vmnicXX は、ホストの NIC ポート数を表します。

    ホストの再起動後も、構成の変更は維持されます。

ESXi ホストの物理ネットワーク アダプタで TSO がサポートされているかどうかの確認

遅延の影響を受けるワークロードを実行するホストでネットワーク パフォーマンスを予測する場合は、物理ネットワーク アダプタが TCP/IP パケット セグメントをオフロードするかどうかを調べます。物理ネットワーク アダプタが TSO をサポートしている場合、TSO はデフォルトで有効になります。

手順

  • ホストの物理ネットワーク アダプタで TSO が有効になっているかどうかを確認するには、次のコンソール コマンドを実行します。
    esxcli network nic tso get

ESXi ホストでの TSO の管理

NIC が大きいデータ チャンクを TCP セグメントに分割するように設定するには、転送経路にある TCP セグメンテーション オフロード (TSO) を有効にします。CPU が TCP セグメンテーションを実行するように設定するには、TSO を無効にします。

物理アダプタがハードウェア TSO をサポートしている場合、ホストはデフォルトでハードウェア TSO を使用します。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. IPv4 の場合は Net.UseHwTSO パラメータの値を編集し、IPv6 の場合は Net.UseHwTSO6 の値を編集します。
    • TSO を有効にするには、Net.UseHwTSO および Net.UseHwTSO61 に設定します。
    • TSO を無効にするには、Net.UseHwTSO および Net.UseHwTSO60 に設定します。
  5. [OK] をクリックして変更内容を保存します。
  6. 物理アダプタのドライバ モジュールを再ロードするには、ホストの ESXi Shellesxcli system module set コンソール コマンドを実行します。
    1. ドライバを無効にするには、--enabled false オプションを指定して esxcli system module set コマンドを実行します。
      esxcli	system module set	--enabled false --module nic_driver_module
    2. ドライバを有効にするには、--enabled true オプションを指定して esxcli system module set コマンドを実行します。
      esxcli	system module set	--enabled true --module nic_driver_module

結果

物理アダプタがハードウェア TSO をサポートしていない場合は、VMkernel がゲスト OS からの大きな TCP パケットを分割して、それらをアダプタに送信します。

ESXi ホストで TSO が有効になっているかどうかを確認する方法

遅延の影響に敏感なワークロードを実行するホストでのネットワーク パフォーマンスを見積もる場合は、VMkernel でハードウェア TSO が有効になっているかどうかを調べます。デフォルトでは、ESXi ホストでハードウェア TSO が有効になっています。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. Net.UseHwTSO パラメータと Net.UseHwTSO6 パラメータの値を確認します。
    Net.UseHwTSO は IPv4 の TSO 状態を、 Net.UseHwTSO6 は IPv6 の TSO 状態を示します。プロパティが 1 に設定されている場合、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

    ethYY は、仮想マシンの NIC のシーケンス番号です。

Windows 仮想マシンでの TSO の管理

デフォルトで、TSO は、VMXNET2 および VXMNET3 ネットワーク アダプタ上の Windows 仮想マシンで有効になっています。パフォーマンス上の理由から、TSO の無効化が必要になることがあります。

前提条件

  • ESXi が Windows ゲスト OS をサポートしていることを確認します。『VMware 互換性ガイド』ドキュメントを参照してください。
  • Windows 仮想マシンのネットワーク アダプタが VMXNET2 または VMXNET3 であることを確認します。

手順

  1. Windows コントロール パネルの [ネットワークと共有センター] で、ネットワーク アダプタの名前をクリックします。
  2. その名前をクリックします。
    ダイアログ ボックスに、アダプタのステータスが表示されます。
  3. [プロパティ] をクリックし、ネットワーク アダプタのタイプで [構成] をクリックします。
  4. [詳細] タブで、[Large Send Offload V2 (IPv4)] および [Large Send Offload V2 (IPv6)] のプロパティを [有効] または [無効] に設定します。
  5. [OK] をクリックします。
  6. 仮想マシンを再起動します。