Large Receive Offload (LRO) を使用して、ネットワークから高レートで到達するパケットを処理するための CPU オーバーヘッドを軽減する方法について説明します。

LRO は、受信ネットワーク パケットをより大きなバッファに再構築します。これにより、パケットのサイズは大きくなりますが、数は少なくなります。次に、それらのパケットをホストまたは仮想マシンのネットワーク スタックに転送します。LRO が無効になっている場合と比較して CPU のパケット処理数が少なくなり、特にバンド幅の高い接続の場合はネットワーク使用率が減少します。

LRO によるパフォーマンス向上のメリットを得るには、VMkernel とゲスト OS が含まれる、ESXi ホストのデータ パスの LRO を有効にします。デフォルトでは、VMkernel および VMXNET3 仮想マシン アダプタで LRO が有効になっています。

データ パスの TCP パケット集約の場所の詳細については、VMware のナレッジ ベースの記事VMWare 環境における TCP セグメンテーション オフロード (TSO) と Large Receive Offload (LRO) についてを参照してください。

ESXi ホストでのすべての VMXNET3 アダプタのハードウェア LRO の管理

ゲスト OS でアセンブリ用のリソースを消費する代わりに LRO 技術を使用することにより、ホストの物理アダプタのハードウェア機能を有効にして VMXNET3 仮想マシン アダプタの受信 TCP パケットを集約します。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. Net.Vmxnet3HwLRO パラメータの値を編集します。
    • ハードウェア LRO を有効にするには、Net.Vmxnet3HwLRO1 に設定します。
    • ハードウェア LRO を無効にするには、Net.Vmxnet3HwLRO0 に設定します。
  5. [OK] をクリックして変更内容を保存します。

ESXi ホストでのすべての VMXNET3 アダプタのソフトウェア LRO の管理

ホストの物理アダプタでハードウェア LRO がサポートされていない場合、VMXNET3 アダプタの VMkernel バックエンドのソフトウェア LRO を使用して、仮想マシンのネットワーク パフォーマンスを向上させます。

vSphere では、IPv4 パケットと IPv6 パケットの両方でソフトウェア LRO がサポートされています。

前提条件

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. VMXNET3 アダプタの Net.Vmxnet3SwLRO パラメータの値を編集します。
    • ソフトウェア LRO を有効にするには、Net.Vmxnet3SwLRO を 1 に設定します。
    • ソフトウェア LRO を無効にするには、Net.Vmxnet3SwLRO を 0 に設定します。
  5. [OK] をクリックして変更内容を保存します。

ESXi ホストの VMXNET3 アダプタで LRO が有効になっているかどうかの確認

遅延の影響を受けるワークロードを実行しているホストでネットワーク パフォーマンスを予測するとき、ESXi における LRO のステータスを調査します。

前提条件

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. VMXNET2 および VMXNET3 の LRO パラメータの値を調査します。
    • ハードウェア LRO については、Net.Vmxnet3HwLRO パラメータを調べます。このパラメータが 1 の場合、ハードウェア LRO は有効です。
    • ソフトウェア LRO については、Net.Vmxnet3SwLRO パラメータを調べます。このパラメータが 1 の場合、ハードウェア LRO は有効です。

VMXNET 3 アダプタの LRO バッファのサイズの変更

VMXNET 3 ネットワーク アダプタを使用して、仮想マシン接続のパケット集約のバッファ サイズを変更できます。バッファ サイズを増やすと TCP ACK 数が減少し、ワークロードの効率が向上します。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. Net.VmxnetLROMaxLength パラメータに 1 ~ 65535 の値を入力し、LRO バッファ サイズをバイト単位で設定します。
    デフォルトでの LRO バッファのサイズは 32000 バイトと等しくなります。

ESXi ホスト上のすべての VMkernel アダプタの LRO の有効化または無効化

ESXi ホスト上の VMkernel ネットワーク アダプタで LRO を使用して、着信インフラストラクチャ トラフィックのネットワーク パフォーマンスを向上させます。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. Net.TcpipDefLROEnabled パラメータの値を編集します。
    • ホスト上の VMkernel ネットワーク アダプタの LRO を有効するには、Net.TcpipDefLROEnabled1 に設定します。
    • ホスト上の VMkernel ネットワーク アダプタのソフトウェア LRO を無効にするには、Net.TcpipDefLROEnabled0 に設定します。
  5. [OK] をクリックして変更内容を保存します。

VMkernel アダプタの LRO バッファのサイズの変更

VMkernel 接続のパケット集約用のバッファ サイズは変更することができます。バッファ サイズを大きくして TCP 確認の数を減らし、VMkernel の効率を高めます。

手順

  1. vSphere Clientで、ホストに移動します。
  2. [構成] タブの [システム] を展開します。
  3. [システムの詳細設定] をクリックします。
  4. Net.TcpipDefLROMaxLength パラメータに 1 ~ 65535 の間の値を入力し、LRO バッファ サイズをバイト単位で設定します。
    デフォルトでの LRO バッファのサイズは 32768 バイトと等しくなります。

Linux 仮想マシンでの VMXNET3 アダプタでの LRO の管理

ホストの VMXNET3 アダプタで LRO を有効化する場合は、Linux 仮想マシンのネットワーク アダプタで LRO サポートをアクティブにして、より大きなバッファに着信パケットを集約するためにゲスト OS がリソースを消費しないようにします。

前提条件

Linux カーネルが 2.6.24 以降であることを確認します。

手順

  • Linux ゲスト OS のターミナル ウィンドウで、-K および lro オプションを指定して ethtool コマンドを実行します。
    • LRO を有効にするには、次のコマンドを実行します。
      ethtool -K ethY lro on

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

    • LRO を無効にするには、次のコマンドを実行します。
      ethtool -K ethY lro off

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

Windows 仮想マシンでの VMXNET3 アダプタの LRO の管理

ホストの VMXNET3 アダプタで LRO を有効化する場合は、Windows 仮想マシンのネットワーク アダプタで LRO サポートをアクティブにして、より大きなバッファに着信パケットを集約するためにゲスト OS がリソースを消費しないようにします。

Windows での LRO テクノロジーは、Receive Side Coalescing (RSC) と呼ばれます。

前提条件

  • 仮想マシンで Windows Server 2012 以降または Windows 8 以降が実行されていることを確認します。
  • 仮想マシンに ESXi 6.0 以降との互換性があることを確認します。
  • ゲスト OS にインストールされている VMXNET3 ドライバのバージョンが 1.6.6.0 以降であることを確認します。
  • Windows Server 2012 以降または Windows 8 以降が実行されている仮想マシンで LRO がグローバルに有効になっていることを確認します。Windows 仮想マシンでの LRO のグローバルな管理を参照してください。

手順

  1. ゲスト OS のコントロール パネルの [ネットワークと共有センター] で、ネットワーク アダプタの名前をクリックします。
    ダイアログ ボックスに、アダプタのステータスが表示されます。
  2. [プロパティ] をクリックし、VMXNET3 ネットワーク アダプタのタイプで [構成] をクリックします。
  3. [詳細] タブで、[Recv Segment Coalescing (IPv4)] および [Recv Segment Coalescing (IPv6)][有効] または [無効] に設定します。
  4. [OK] をクリックします。

Windows 仮想マシンでの LRO のグローバルな管理

Windows 8 以降または Windows Server 2012 以降が実行されている仮想マシン上の VMXNET3 アダプタの Large Receive Offload (LRO) を使用するには、ゲスト OS で LRO をグローバルに有効にする必要があります。Windows での LRO テクノロジーは、Receive Side Coalescing (RSC) と呼ばれます。

手順

  1. Windows 8 以降または Windows Server 2012 のゲスト OS で LRO がグローバルに無効になっているかどうかを確認するには、コマンド プロンプトで netsh int tcp show global コマンドを実行します。
    netsh int tcp show global

    このコマンドにより、Windows 8.x OS で設定されているグローバル TCP (Transmission Control Protocol) パラメータのステータスが表示されます。

    TCP グローバル パラメータ ---------------------------------------------- Receive-Side Scaling 状態 : 有効 Chimney オフロード状態 : 無効 NetDMA 状態 : 無効 Direct Cache Access (DCA) : 無効 ウィンドウ自動チューニング レベルの受信 : 通常 アドオン混雑制御プロバイダ : なし ECN 機能 : 無効 RFC 1323 タイムスタンプ : 無効 初期 RTO : 3000 Receive Segment Coalescing 状態 : 無効 

    Windows 8 以降または Windows Server 2012 マシンで LRO がグローバルに無効になっている場合は、Receive Segment Coalescing State プロパティが disabled として表示されます。

  2. Windows OS で LRO をグローバルに有効にするには、コマンド プロンプトで次の netsh int tcp set global コマンドを実行します。
     netsh int tcp set global rsc=enabled

次のタスク

Windows 8 以降または Windows Server 2012 仮想マシンで VMXNET3 アダプタの LRO を有効にします。Windows 仮想マシンでの VMXNET3 アダプタの LRO の管理を参照してください。