瞭解如何在 VMkernel 網路介面卡和虛擬機器中使用 TCP 分割卸載 (TSO),以提高延遲需求較為嚴重的工作負載的網路效能。

實體網路介面卡以及 VMkernel 和虛擬機器網路介面卡之傳輸路徑的 TSO 透過降低 TCP/IP 網路作業的 CPU 額外負荷,可提高 ESXi 主機的效能。如果啟用 TSO,網路介面卡會將較大的資料區塊分為多個 TCP 區段 (而非 CPU)。VMkernel 和客體作業系統可使用更多的 CPU 週期來執行應用程式。

若要獲益於 TSO 所提供的效能改善,請沿著 ESXi 主機 (包括實體網路介面卡、VMkernel 以及客體作業系統) 上的資料路徑啟用 TSO。依預設,TSO 會在 ESXi 主機的 VMkernel 以及 VMXNET 2 和 VMXNET 3 虛擬機器介面卡中啟用。

如需資料路徑中 TCP 封包分割位置的相關資訊,請參閱 VMware 知識庫文章暸解 VMware 環境中的 TCP 分割卸載 (TSO) 和大型接收卸載 (LRO)

在 VMkernel 中管理軟體 TSO

如果實體網路介面卡遇到 TSO 的問題,您可以在 VMkernel 中暫時啟用 TSO 的軟體模擬,直到對問題進行疑難排解為止。

程序

  • 執行這些 esxcli network nic software set 主控台命令,在 VMkernel 中啟用或停用 TSO 的軟體模擬。
    • 在 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

    其中,vmnic X 中的 X 表示主機上的 NIC 連接埠號碼。

    組態變更會在主機重新開機後保留。

如何確定 ESXi 主機的實體網路介面卡上是否支援 TSO

對執行延遲敏感之工作負載的主機進行網路效能估計時,檢查實體網路介面卡是否卸載 TCP/IP 封包分割。如果實體網路介面卡支援 TSO,則依預設會啟用 TSO。

程序

  • 執行下列主控台命令以判斷主機的實體網路介面卡上是否已啟用 TSO。
    esxcli network nic tso get

ESXi 主機上管理 TSO

在傳輸路徑上啟用 TCP 分割卸載 (TSO),讓 NIC 將較大的資料區塊分為多個 TCP 區段。停用 TSO 以使 CPU 執行 TCP 分割。

依預設,如果主機的實體介面卡支援硬體 TSO,則主機會使用硬體 TSO。

程序

  1. vSphere Client中,導覽至主機。
  2. 設定索引標籤上,展開系統
  3. 按一下進階系統設定
  4. 編輯 Net.UseHwTSO 參數 (針對 IPv4) 和 Net.UseHwTSO6 (針對 IPv6) 的值。
    • 若要啟用 TSO,請將 Net.UseHwTSONet.UseHwTSO6 設定為 1
    • 若要停用 TSO,請將 Net.UseHwTSONet.UseHwTSO6 設定為 0
  5. 按一下確定套用變更。
  6. 若要重新載入實體介面卡的驅動程式模組,請在主機上的 ESXi Shell 中執行 esxcli system module set 主控台命令。
    1. 若要停用此驅動程式,請執行 esxcli system module set 命令與 --enabled false 選項。
      esxcli	system module set	--enabled false --module nic_driver_module
    2. 若要啟用此驅動程式,請執行 esxcli system module set 命令與 --enabled true 選項。
      esxcli	system module set	--enabled true --module nic_driver_module

結果

如果實體介面卡不支援硬體 TSO,VMkernel 會分割來自客體作業系統的大型 TCP 封包,並將其傳送到介面卡。

如何找出 ESXi 主機上是否啟用了 TSO

在您估計執行延遲敏感型工作負載的主機的網路效能時,請檢查 VMkernel 中是否已啟用硬體 TSO。依預設,ESXi 主機上已啟用硬體 TSO。

程序

  1. vSphere Client中,導覽至主機。
  2. 設定索引標籤上,展開系統
  3. 按一下進階系統設定
  4. 檢查 Net.UseHwTSONet.UseHwTSO6 參數的值。
    Net.UseHwTSO 針對 IPv4 顯示 TSO 狀態,而 Net.UseHwTSO6 針對 IPv6 顯示 TSO 狀態。如果內容設為 1,則 TSO 已啟用。

在 Linux 虛擬機器上管理 TSO

在 Linux 虛擬機器的網路介面卡上啟用 TSO 支援,使得客體作業系統可以將需要分割的 TCP 封包重新導向到 VMkernel。

必要條件

  • 確認 ESXi 支援 Linux 客體作業系統。

    請參閱 VMware 相容性指南說明文件。

  • 確認 Linux 虛擬機器的網路介面卡是 VMXNET2 或 VMXNET3。

程序

  • 在 Linux 客體作業系統上的終端機視窗中,若要啟用或停用 TSO,請執行 ethtool 命令以及 -Ktso 選項。
    • 若要啟用 TSO,請執行以下命令:
      ethtool -K ethY tso on
    • 若要停用 TSO,請執行以下命令:
      ethtool -K ethY tso off

    其中,ethY 中的 Y 是指虛擬機器中 NIC 的序號。

在 Windows 虛擬機器上管理 TSO

依預設,在 VMXNET2 和 VXMNET3 網路介面卡上的Windows虛擬機器上會啟用 TSO。由於效能原因,您可能需要停用 TSO。

必要條件

  • 確認 ESXi 支援 Windows 客體作業系統。請參閱 VMware 相容性指南說明文件。
  • 確認 Windows 虛擬機器的網路介面卡是 VMXNET2 或 VMXNET3。

程序

  1. 在 Windows 控制台的 [網路和共用中心] 中,按一下網路介面卡的名稱。
  2. 按一下其名稱。
    將出現一個對話方塊,其中顯示介面卡的狀態。
  3. 按一下內容,並且在網路介面卡類型下方,按一下設定
  4. 進階索引標籤上,將大型傳送卸載 V2 (IPv4)大型傳送卸載 V2 (IPv6) 內容設定為已啟用已停用
  5. 按一下確定
  6. 重新啟動虛擬機器。