共用方式為


效能調整網路介面卡

使用本主題中的資訊調整執行 Windows Server 2016 及更高版本的電腦的效能網路介面卡。 如果您的網路介面卡提供調整選項,您可以使用這些選項來最佳化網路吞吐量和資源使用情況。

網路介面卡的正確調整設置取決於以下變數:

  • 網路介面卡及其功能集
  • 伺服器執行的工作負載類型
  • 伺服器硬體和軟體資源
  • 您的伺服器效能目標

以下各節說明一些效能調整選項。

啟用解除安裝功能

調整網路介面卡卸載功能通常會有好處。 但是,網路配接器可能不夠強大,無法處理高吞吐量的卸載功能。

重要

請勿使用卸載功能IPsec Task Offload TCP Chimney Offload。 這些技術在 Windows Server 2016 中已棄用,可能會對伺服器和網路效能產生不利影響。 此外,Microsoft 將來可能不再支援這些技術。

例如,考慮硬體資源有限的網路配接器。 在這種情況下,啟用分段卸載功能可能會降低適配器的最大可持續吞吐量。 但是,如果減少的吞吐量可以接受,您應該繼續啟用分段卸載功能。

注意

某些網路介面卡要求您為傳送和接收路徑獨立啟用卸載功能。

為 Web 伺服器啟用接收端擴充 (RSS)

當伺服器上的網路介面卡比邏輯處理器少時,RSS 可以改善 Web 延展性和效能。 當所有 Web 流量都透過支援 RSS 的網路介面卡時,伺服器可以在不同的 CPU 上同時處理來自不同連線的傳入 Web 要求。

重要

避免在同一伺服器上同時使用不支援 RSS 的網路介面卡和支援 RSS 的網路介面卡。 由於 RSS 和超文本傳送協定 (HTTP) 中的負載分配邏輯,如果不支援 RSS 的網路介面卡在具有一個或多個支援 RSS 的網路配接器的伺服器上接受 Web 流量,則效能可能會嚴重下降。 在這種情況下,您應該使用支援 RSS 的網路介面卡或在網路介面卡屬性的進階屬性鍵停用 RSS。

若要確定網路介面卡是否支援 RSS,您可以在網路介面卡屬性的進階屬性鍵上查閱 RSS 資訊。

RSS 設定檔和 RSS 佇列

預設的 RSS 預先設置設置檔是 NUMAStatic,它與先前版本的 Windows 使用的預設設置檔不同。 在開始使用 RSS 設置檔之前,請查閱可用的設置檔以了解它們何時有用以及它們如何應用於您的網路環境和硬體。

例如,如果您開啟工作管理員並檢查伺服器上的邏輯處理器,並且它們似乎未充分利用接收流量,則可以嘗試將 RSS 佇列數量從預設值 2 增加到網路介面卡支援的最大值。 您的網路介面卡可能會在驅動程式中提供變更 RSS 佇列數目的選項。

增加網路介面卡資源

對於可以讓您手動設置資源(例如接收和傳送緩衝區)的網路介面卡,您應該增加分配的資源。

某些網路介面卡會將其接收緩衝區設低以節省來自主機的配置記憶體。 低的值會導致丟棄封包和降低效能。 因此,對於大量接收的情況,建議您將接收緩衝區的值增加到最大。

注意

如果網路介面卡不公開手動資源設置,則它會動態設置資源,或將資源設置為無法變更的固定值。

啟用中斷審核

為了控制中斷審核,某些網路介面卡會公開不同的中斷審核等級、不同的緩衝區合併參數(有時分別用於傳送和接收緩衝區)或兩者。

您應該考慮對 CPU 密集型工作負載進行中斷調整。 使用中斷調整時,請考慮主機 CPU 節省和延遲與因更多中斷和更少延遲而增加的主機 CPU 節省之間的權衡。 如果網路配接器不執行中斷調整,但確實公開了緩衝區合併,則可以透過增加合併緩衝區的數量以允許每次發送或接收使用更多緩衝區來提高效能。

低延遲資料包處理的效能調整

許多網路介面卡都有提供將作業系統引起的延遲最佳化的選項。 延遲係指網路驅動程式處理連入封包到網路驅動程式將封包傳送回去之間的經歷時間。 此時間通常是以微秒為單位。 為了進行比較,長距離資料包傳送的傳送時間通常以毫秒為單位(大一個數量級)。 這項調整不會縮短封包在傳輸上所花的時間。

以下是一些適用於精細度到微秒之網路的效能調整建議。

  • 將電腦 BIOS 設置為高效能,並停用 C 狀態。 不過,請注意,這與系統和 BIOS 相依,某些系統在讓作業系統控制電源管理的情況下可以提供較高的效能。 您可以從設置或使用powercfg 指令檢查和調整電源管理設置。 更多詳細資訊,請參閱Powercfg 命令列選項

  • 將作業系統電源管理設置檔設置為高效能係統

    注意

    如果系統 BIOS 已設置為停用作葉系統對電源管理的控制,則此設置將無法正常運作。

  • 啟用靜態卸載。 例如,啟用 UDP 校驗和、TCP 校驗和和發送大量卸載 (LSO) 設置。

  • 如果流量是多流的,例如接收大量組播流量時,請啟用 RSS。

  • 停用需要最低延遲的網卡驅動程式的中斷調整設置。 請記住,此設置可能會使用更多的 CPU 時間,這是一種權衡。

  • 在與處理封包的程式 (使用者執行緒) 所使用之核心共用 CPU 快取的核心處理器上,處理網路介面卡插斷和 DPC。 CPU 親和性調整可用來將處理程序導向特定邏輯處理器並搭配 RSS 設定來完成這項作業。 將相同的核心用於插斷、DPC 及使用者模式執行緒會讓效能隨著負載增加而變差,因為 ISR、DPC 及執行緒會爭相使用該核心。

系統管理中斷

許多硬體系統使用系統管理中斷 (SMI) 來實現各種維護功能,例如報告糾錯碼 (ECC) 記憶體錯誤、維護傳統 USB 相容性、控制風扇以及管理 BIOS 控制的電源設置。

SMI 是系統上優先順序最高的中斷,並將 CPU 置於管理模式。 當 SMI 執行中斷服務例程(通常包含在 BIOS 中)時,此模式會搶佔所有其他活動。

不幸的是,這種行為可能會導致 100 微秒或更長的延遲高峰。

如果您需要達到最低延遲,您應該向硬體提供者要求一個可將 SMI 盡可能降到最低限度的 BIOS 版本。 這些 BIOS 版本通常稱為「低延遲 BIOS」或「SMI 免費 BIOS」。 在某些情況下,硬體平台不可能完全消除 SMI 活動,因為它用於控制基本功能(例如冷卻風扇)。

注意

作業系統無法控制 SMI,因為邏輯處理器正在特殊維護模式下執行,這會阻止作業系統干預。

效能調整 TCP

您可以使用以下項目來調整 TCP 效能。

TCP接收視窗自動調整

在 Windows Vista、Windows Server 2008 和更高版本的 Windows 中,Windows 網路堆疊使用名為 TCP 接收視窗自動調整等級的功能來協商 TCP 接收視窗大小。 此功能可以在 TCP 握手期間為每個 TCP 通訊協商設置的接收視窗大小。

在早期版本的 Windows 中,Windows 網路堆疊使用固定大小的接收視窗(65,535 位元組),這限制了連接的整體潛在吞吐量。 TCP 連線可實現的總吞吐量可能會限制網路使用情境。 TCP接收視窗自動調整使這些情境能夠充分利用網路。

對於具有特定大小的 TCP 接收窗口,您可以使用下列公式來計算單一連線的總吞吐量。

以位元組為單位的可實現總接收量 = 以位元組為單位的TCP 接收視窗大小 * (1 / 以秒為單位的連線延遲)

例如,對於延遲為 10 毫秒的連接,可實現的總吞吐量僅為 51 Mbps。 對於大型企業網路基礎設施來說,該值是合理的。 然而,透過使用自動調諧來調整接收窗口,連接可以實現 1 Gbps 連接的全線速率。

一些應用程式設置 TCP 接收視窗的大小。 如果應用程式沒有設置接收視窗大小,則連結速度確定大小如下:

  • 低於 1 兆位元每秒 (Mbps):8 KB
  • 1 Mbps 至 100 Mbps:17 KB
  • 100 Mbps 至 10 吉比特每秒 (Gbps):64 KB
  • 10 Gbps 或更快:128 KB

例如,在安裝了 1-Gbps 網路配接器的電腦上,視窗大小應為 64 KB。

該功能還充分利用其他功能來提高網路效能。 這些功能包括 RFC 1323 中設置的其餘TCP 選項。 透過使用這些功能,基於 Windows 的電腦可以協商較小的 TCP 接收視窗大小,但會依據設置點選設置的值縮放。 此行為使網路設備更容易處理大小。

注意

您可能會遇到這樣的問題:網路設備不符合 RFC 1323 中設置的 TCP 視窗縮放選項,因此不支援縮放條件。 在這種情況下,當您嘗試在防火牆裝置後面使用 Windows Vista 時網路連線失敗,或聯絡網路裝置供應商的支援團隊,請參閱 KB 934430,。

查閱並設置 TCP 接收視窗自動調整級別

您可以使用 netsh 命令或 Windows PowerShell cmdlet 來檢視或修改 TCP 接收視窗自動調整等級。

注意

與 Windows 10 或 Windows Server 2019 之前的 Windows 版本不同,你不能再使用註冊表來設置 TCP 接收視窗大小。 有關已棄用設置的更多資訊,請參閱已棄用的 TCP 參數

注意

有關可用自動調整等級的詳細資訊,請參閱自動調整等級

使用 netsh 檢視或修改自動調整等級

要查閱當前設置,請開啟命令提示字元視窗並執行以下命令:

netsh interface tcp show global

該命令的輸出應類似於以下:

Querying active state...

TCP Global Parameters
-----
Receive-Side Scaling State : enabled
Chimney Offload State : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
Fast Open : enabled
Fast Open Fallback : enabled
Pacing Profile : off

若要修改設置,請在命令提示字元中執行以下命令:

netsh interface tcp set global autotuninglevel=<Value>

注意

在上述指令中,<Value >代表自動調整等級的新值。

有關此命令的詳細資訊,請參閱介面傳送控制協定的 Netsh 命令

使用 Powershell 檢視或修改自動調整級別

若要查閱目前設置,請開啟 PowerShell 視窗並執行下列 cmdlet。

Get-NetTCPSetting | Select SettingName,AutoTuningLevelLocal

此 cmdlet 的輸出應類似於下列內容。

SettingName           AutoTuningLevelLocal
-----------          --------------------
Automatic
InternetCustom       Normal
DatacenterCustom     Normal
Compat               Normal
Datacenter           Normal
Internet             Normal

若要修改設置,請在 PowerShell 命令提示字元中執行下列 cmdlet。

Set-NetTCPSetting -AutoTuningLevelLocal <Value>

注意

在上述指令中,<Value >代表自動調整等級的新值。

有關這些 cmdlet 的詳細資訊,請參閱以下文章:

自動調整等級

您可以將接收視窗自動調諧設置為五個層級中的任一個。 預設等級為正常。 下表描述了各個層級。

層級 十六進位值 註解
正常(預設) 0x8(比例條件為 8) 將 TCP 接收視窗設置為成長以適應幾乎所有情境。
已停用 沒有可用的比例條件 將 TCP 接收視窗設置為其預設值。
受限制 0x4(比例條件為 4) 將 TCP 接收視窗設置為超出其預設值,但在某些情況下限制這種增長。
高度限制 0x2(比例條件為 2) 將 TCP 接收視窗設置為超出其預設值,但這樣做要非常保守。
實驗 0xE(比例條件為 14) 將 TCP 接收視窗設置為成長以適應極端情況。

如果您使用應用程式擷取網路組合,則該應用程式應針對不同的視窗自動調整等級設置報告類似於以下內容的資料。

  • 自動調整等級:正常(預設狀態)

    Frame: Number = 492, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2667, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60975, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=4075590425, Ack=0, Win=64240 ( Negotiating scale factor 0x8 ) = 64240
    SrcPort: 60975
    DstPort: Microsoft-DS(445)
    SequenceNumber: 4075590425 (0xF2EC9319)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x8 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x8 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 8 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • 自動調整等級:停用

    Frame: Number = 353, Captured Frame Length = 62, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2576, Total IP Length = 48
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60956, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2315885330, Ack=0, Win=64240 ( ) = 64240
    SrcPort: 60956
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2315885330 (0x8A099B12)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 112 (0x70)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( ) = 64240 ----------------------------------------> TCP Receive Window set as 64K as per NIC Link bitrate. Note there is no Scale Factor defined. In this case, Scale factor is not being sent as a TCP Option, so it will not be used by Windows.
    Checksum: 0x817E, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • 自動調整等級:限制使用

    Frame: Number = 3, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2319, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60890, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1966088568, Ack=0, Win=64240 ( Negotiating scale factor 0x4 ) = 64240
    SrcPort: 60890
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1966088568 (0x75302178)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x4 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x4 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 4 -------------------------------> Scale factor, defined by AutoTuningLevel.
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • 自動調整等級:高度限制

    Frame: Number = 115, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2388, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60903, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=1463725706, Ack=0, Win=64240 ( Negotiating scale factor 0x2 ) = 64240
    SrcPort: 60903
    DstPort: Microsoft-DS(445)
    SequenceNumber: 1463725706 (0x573EAE8A)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0x2 ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0x2 Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 2 ------------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    
  • 自動調整等級:實驗性

    Frame: Number = 238, Captured Frame Length = 66, MediaType = ETHERNET
    + Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[D8-FE-E3-65-F3-FD],SourceAddress:[C8-5B-76-7D-FA-7F]
    + Ipv4: Src = 192.169.0.5, Dest = 192.169.0.4, Next Protocol = TCP, Packet ID = 2490, Total IP Length = 52
    - Tcp: [Bad CheckSum]Flags=......S., SrcPort=60933, DstPort=Microsoft-DS(445), PayloadLen=0, Seq=2095111365, Ack=0, Win=64240 ( Negotiating scale factor 0xe ) = 64240
    SrcPort: 60933
    DstPort: Microsoft-DS(445)
    SequenceNumber: 2095111365 (0x7CE0DCC5)
    AcknowledgementNumber: 0 (0x0)
    + DataOffset: 128 (0x80)
    + Flags: ......S. ---------------------------------------------------------> SYN Flag set
    Window: 64240 ( Negotiating scale factor 0xe ) = 64240 ---------> TCP Receive Window set as 64K as per NIC Link bitrate. Note it shows the 0xe Scale Factor.
    Checksum: 0x8182, Bad
    UrgentPointer: 0 (0x0)
    - TCPOptions:
    + MaxSegmentSize: 1
    + NoOption:
    + WindowsScaleFactor: ShiftCount: 14 -----------------------------> Scale factor, defined by AutoTuningLevel
    + NoOption:
    + NoOption:
    + SACKPermitted:
    

已棄用的 TCP 參數

Windows Server 2003 中的以下註冊表設置不再受支援,並且在更高版本中將被忽略。

  • TcpWindowSize
  • NumTcbTablePartitions
  • MaxHashTableSize

所有這些設置都位於以下註冊表子項目中:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters

Windows 篩選平台

Windows Vista 和 Windows Server 2008 引進了 Windows 篩選平台 (WFP)。 WFP 向非 Microsoft 獨立軟體供應商 (ISV) 提供 API 以建立組合處理篩選器。 範例包括防火牆和防毒軟體。

注意

編寫不當的 WFP 篩選器會顯著降低伺服器的網路效能。 有關詳細資訊,請參閱Windows 開發人員中心中的將資料包處理驅動程式和應用程式移植到 WFP。

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