選擇網路介面卡

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI 21H2 和 20H2 版本

您可以使用本主題來了解可能會影響您的購買選擇的網路介面卡的一些功能。

網路密集型應用程式需要高效能網路配接器。 本節討論選擇網路介面卡的一些注意事項,以及如何設置不同的網路介面卡設置以獲得最佳網路效能。

提示

您可以使用 Windows PowerShell 設置網路介面卡設置。 有關詳細資訊,請參閱 Network Adapter Cmdlets in Windows PowerShell

解除安裝能力

將任務從中央處理單元 (CPU) 卸載到網路配接器可以減少伺服器上的 CPU 使用率,從而提高整體系統效能。

如果您選擇具有適當卸載功能的網路介面卡,Microsoft 產品中的網路堆疊可以將一項或多項任務卸載至網路介面卡。 下表簡要概述了 Windows Server 2016 中提供的不同卸載功能。

解除安裝類型 描述
TCP 校驗與運算 網路堆疊可以卸載發送和接收程式碼路徑上傳送控制協定 (TCP) 校驗和的計算和驗證。 它還可以卸載發送和接收程式碼路徑上 IPv4 和 IPv6 校驗和的計算和驗證。
UDP 校驗和計算 網路堆疊可以卸載發送和接收程式碼路徑上的 User Datagram Protocol (UDP) 校驗和的計算和驗證。
IPv4 的校驗與計算 網路堆疊可以卸載發送和接收程式碼路徑上 IPv4 校驗和的計算和驗證。
IPv6 的校驗與計算 網路堆疊可以卸載發送和接收程式碼路徑上 IPv6 校驗和的計算和驗證。
大量 TCP 資料包分段 TCP/IP 傳送層支援大型發送卸載 v2 (LSOv2)。 透過 LSOv2,TCP/IP 傳送層可以將大型 TCP 組合的分段卸載到網路介面卡。
接收端調整 (RSS) RSS 是一種網路驅動程式技術,可在多處理器系統中的多個 CPU 之間有效分配網路接收處理。 本主題後面將提供有關 RSS 的更多詳細資訊。
Receive Segment Coalescing (RSC) RSC 能夠將組合分組在一起,以最大限度地減少主機執行所需的標頭處理。 最多可以將接收到的 64 KB 有效負載合併為一個更大的資料包進行處理。 本主題後面將提供有關 RSC 的更多詳細資訊。

接收端調整

Windows Server 2016、Windows Server 2012、Windows Server 2012 R2、Windows Server 2008 R2 與 Windows Server 2008 支援接收端擴充 (RSS)。

某些伺服器設置有多個邏輯處理器,這些處理器共享硬體資源(例如實體核心)並被視為同時多執行緒 (SMT) 對等體。 Intel Hyper-Threading Technology 就是一個例子。 RSS 將網路處理定向到每個核心最多一個邏輯處理器。 例如,在具有 Intel Hyper-Threading、4 核心和 8 個邏輯處理器的伺服器上,RSS 使用不超過 4 個邏輯處理器進行網路處理。

RSS 在邏輯處理器之間分配傳入的網路 I/O 組合,以便屬於相同 TCP 連線的組合在同一邏輯處理器上處理,從而保留順序。

RSS 也對 UDP 單播和組播流量進行負載平衡,並將相關流(透過雜湊來源位址和目標位址確定)路由到相同邏輯處理器,從而保留相關到達的順序。 對於網路配接器數量少於合格邏輯處理器數量的伺服器,這有助於提高接收密集型方案的可擴充性和效能。

正在設定 RSS

在 Windows Server 2016 中,您可以使用 Windows PowerShell cmdlet 和 RSS 設置檔設置 RSS。

您可以使用 Set-NetAdapterRss Windows PowerShell cmdlet 的 –Profile 參數設置 RSS 設置檔。

用於 RSS 設置的 Windows PowerShell 指令

以下 cmdlet 可讓您檢視和修改每個網路介面卡的 RSS 參數。

注意

有關每個 cmdlet 的詳細命令參考(包括語法和參數),您可以點選以下連結。 此外,您可以在 Windows PowerShell 提示字元下將 cmdlet 名稱傳遞給 Get-Help,以取得有關每個命令的詳細資訊。

RSS 設定檔

您可以使用 Set-NetAdapterRss cmdlet 的 –Profile 參數來指定要將哪些邏輯處理器指派給哪個網路介面卡。 此參數的可用值為:

  • 最接近。 靠近網路配接器基本 RSS 處理器的邏輯處理器編號是首選。 透過此設置資料,作業系統可以依據負載動態地重新平衡邏輯處理器。

  • 最接近數值。 靠近網路配接器基本 RSS 處理器的邏輯處理器編號是首選。 使用此設置資料,作業系統不會依據負載動態重新平衡邏輯處理器。

  • NUMA。 一般在不同的NUMA節點上選擇邏輯處理器號碼來分配負載。 透過此設置資料,作業系統可以依據負載動態地重新平衡邏輯處理器。

  • NUMA 數值。 這是預設設置檔。 一般在不同的NUMA節點上選擇邏輯處理器號碼來分配負載。 使用此設置資料,作業系統將不會依據負載動態重新平衡邏輯處理器。

  • 低的。 RSS 使用盡可能少的處理器來維持負載。 此選項有助於減少中斷次數。

依據情境和工作負載特徵,您也可以使用 設置-NetAdapterRss Windows PowerShell cmdlet 的其他參數來指定以下內容:

  • 在每個網路配接器的基礎上,有多少個邏輯處理器可用於 RSS。
  • 邏輯處理器範圍的起始偏移量。
  • 網路配接器從中分配記憶體的節點。

以下是其他可用於設置 RSS 的 Set-NetAdapterRss

注意

在下面每個參數的範例語法中,網路介面卡名稱 Ethernet 作為設置 -NetAdapterRss 指令的 –Name 參數的範例值。 執行 cmdlet 時,請確保您使用的網路介面卡名稱適合您的環境。

  • * MaxProcessors:設置要使用的 RSS 處理器的最大數量。 這可確保應用程式流量綁定到指定介面上的最大數量的處理器。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessors <value>

  • * BaseProcessorGroup:設置 NUMA 節點的基本處理器群組。 這會影響 RSS 使用的處理器陣列。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorGroup <value>

  • * MaxProcessorGroup:設置 NUMA 節點的最大處理器組。 這會影響 RSS 使用的處理器陣列。 設置此項將限制最大處理器組,以便負載平衡在 k 組內對齊。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –MaxProcessorGroup <value>

  • * BaseProcessorNumber:設置 NUMA 節點的基本處理器編號。 這會影響 RSS 使用的處理器陣列。 這允許跨網路配接器對處理器進行分區。 這是分配給每個適配器的 RSS 處理器範圍中的第一個邏輯處理器。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –BaseProcessorNumber <Byte Value>

  • * NumaNode:每個網路配接器可以從中分配記憶體的NUMA節點。 這可以位於 k 組內或來自不同的 k 組。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –NumaNodeID <value>

  • * NumberofReceiveQueues:如果您的邏輯處理器似乎未充分利用接收流量(例如,在任務管理器中查閱),您可以嘗試將 RSS 佇列數量從預設值 2 增加到網路介面卡支援的最大值。 作為驅動程式的一部分,您的網路介面卡可能具有更改 RSS 佇列數量的選項。 範例語法:

    Set-NetAdapterRss –Name "Ethernet" –NumberOfReceiveQueues <value>

有關詳細資訊,請點選以下連結下載可擴展網路:消除接收處理瓶頸 - 引入 Word 格式的 RSS。

了解 RSS 性能

調整 RSS 需要了解設置和負載平衡邏輯。 若要驗證 RSS 設置是否已生效,您可以在執行 Get-NetAdapterRss Windows PowerShell cmdlet 時查閱輸出。 以下是此 cmdlet 的範例輸出。


PS C:\Users\Administrator> get-netadapterrss
Name                           : testnic 2
InterfaceDescription           : Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #66
Enabled                        : True
NumberOfReceiveQueues          : 2
Profile                        : NUMAStatic
BaseProcessor: [Group:Number]  : 0:0
MaxProcessor: [Group:Number]   : 0:15
MaxProcessors                  : 8

IndirectionTable: [Group:Number]:
     0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4
…
(# indirection table entries are a power of 2 and based on # of processors)
…
                          0:0    0:4    0:0    0:4    0:0    0:4    0:0    0:4

除了回顯所設置的參數之外,輸出的關鍵方面是間接表輸出。 間接表顯示用於分配傳入流量的雜湊表儲存桶。 在此範例中,n:c 代表法指定用於引導傳入流量的 Numa K-Group:CPU 索引對。 我們正好看到 2 個唯一條目(0:0 和 0:4),分別代表 k-group 0/cpu0 和 k-group 0/cpu 4。

此系統只有一個 k 組(k 組 0)<和一個 n(其中 n = 128)間接表條目。 由於接收佇列的數量設置為 2,因此僅選擇 2 個處理器(0:0、0:4) - 即使最大處理器設置為 8。 實際上,間接表對傳入流量進行雜湊處理,僅使用 8 個可用 CPU 中的 2 個。

為了充分利用 CPU,RSS Receive Queues 的數量必須等於或大於 Max Processors。 在前面的範例中,Receive Queue 應設為 8 或更大。

NIC 分組和 RSS

可在使用 NIC 組合與另一個網路介面卡組合的網路介面卡上啟用 RSS。 在這種情況下,只能將底層實體網路介面卡設置為使用 RSS。 使用者無法在成組網路介面卡上設置 RSS cmdlet。

Receive Segment Coalescing (RSC)

Receive Segment Coalescing (RSC) 透過減少為指定量的接收資料處理的 IP 標頭數量來提高效能。 它應該用於透過將較小的資料包分組(或合併)為較大的單元來幫助擴展接收資料的效能。

這種方法可以影響延遲,其好處主要體現在吞吐量增益上。 建議使用 RSC 來增加接收的繁重工作負載的吞吐量。 考慮部署支援 RSC 的網路配接器。

在這些網路介面卡上,請確保 RSC 處於開啟狀態(這是預設設置),除非您有特定的工作負載(例如,低延遲、低吞吐量網路)顯示關閉 RSC 會帶來好處。

了解 RSC 診斷

您可以使用 Windows PowerShell cmdlet Get-NetAdapterRsc Get-NetAdapterStatistics 診斷 RSC。

以下是執行 Get-NetAdapterRsc cmdlet 時的範例輸出。


PS C:\Users\Administrator> Get-NetAdapterRsc

Name                       IPv4Enabled  IPv6Enabled  IPv4Operational IPv6Operational               IPv4FailureReason              IPv6Failure
                                            Reason
----                           -----------  -----------  --------------- --------------- ----------------- ------------
Ethernet                       True         False        True            False                  NoFailure       NicProperties

Get cmdlet 顯示介面中是否啟用了 RSC,以及 TCP 是否使 RSC 處於操作狀態。 失敗原因提供有關在該介面上啟用 RSC 失敗的詳細資訊。

在前面的情境中,IPv4 RSC 在介面中受支援並可操作。 要了解診斷故障,可以查閱合併的位元組或引起的異常。 這提供了合併問題的指示。

以下是執行 Get-NetAdapterStatistics cmdlet 時的範例輸出。

PS C:\Users\Administrator> $x = Get-NetAdapterStatistics "myAdapter"
PS C:\Users\Administrator> $x.rscstatistics

CoalescedBytes       : 0
CoalescedPackets     : 0
CoalescingEvents     : 0
CoalescingExceptions : 0

RSC 和虛擬化

只有當主機網路介面卡未綁定到 Hyper-V Virtual Switch 時,實體主機才支援 RSC。 當主機綁定到 Hyper-V Virtual Switch 時,作業系統會停用 RSC。 此外,虛擬器無法獲得 RSC 的好處,因為虛擬網路配接器不支援 RSC。

當啟用 Single Root Input/Output Virtualization (SR-IOV) 時,可以為虛擬器啟用 RSC。 在這種情況下,虛擬功能支援 RSC 能力; 因此,虛擬器也受益於 RSC。

網路介面卡資源

一些網路配接器主動管理其資源以實現最佳效能。 多個網路介面卡可讓您使用適配器的 Advanced Networking 標籤來手動設置資源。 對於此類適配器,您可以設置許多參數的值,包括接收緩衝區和發送緩衝區的數量。

使用下列 Windows PowerShell cmdlet 簡化了網路介面卡資源的設置。

有關詳細資訊,請參閱 Network Adapter Cmdlets in Windows PowerShell

更多本指南中所有主題的連結,請參閱網路子系統效能調整