Windows-Server-2012-R2

在 Windows Server 2012 R2 中設置網路中斷的關聯性

  • July 24, 2015

我們有一個發送和接收大量網路流量的應用程序 - 但中斷導致我們的性能低於最大性能。在 20 Mbps 輸入和 20 Mbps 輸出(在 1 Gbps 線路上)時,網路中斷使用 100% 的核心 0 並且作業系統凍結(通過 Windows 性能分析器檢查)。使用網卡 (BroadCom) 上的 RSS 功能並沒有改善這種情況。

我知道您可以通過系統資料庫編輯特定中斷的關聯性——我的目標是像我在 linux 上那樣使用第二個核心來處理網路中斷——但不知道如何找到正確的密鑰進行編輯。非常歡迎任何其他建議。

我將提供部分答案,並提供有關我相信您可以如何以及在何處找到特定於您的系統的具體答案的線索。

NDIS該功能與作業系統的版本密切相關。

早期的參考是 密鑰的ProcessorAffinityMask參數。HKLM\SYSTEM\CurrentControlSet\Services\NDIS\Parameters它設置哪些處理器可用於為 Windows 2000 中的網路適配器驅動程序中斷提供服務。

Receive Side Scaling子系統在更高版本中演變為將網路處理隊列映射到可用處理器,此處針對 Windows 2008 進行了描述。

RSSWindows 2012 R2(我相信是 NDIS 6.40)中的文件,在早期的片語中給出了一個線索:

為了有效地處理接收到的數據,微型埠驅動程序的接收中斷服務函式會安排延遲過程呼叫 (DPC)。如果沒有 RSS,典型的 DPC 會指示在 DPC 呼叫中接收到的所有數據。因此,與中斷相關的所有接收處理都在發生接收中斷的 CPU 上執行。

此連結的末尾是指向所有 6.xNDIS版本的參考資料的連結。我相信您可以使用這些參考資料來為您的特定係統找出答案,並找出準確的術語來應對Google的歧義。

僅基於問題提供的資訊(不太詳細),我在文件中看到了什麼?

可用的處理器集中的第一個處理器RSS是使用HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\Services\NDIS\Parameters\RssBaseCpuWindows 2008 中的參數設置的,如此所述。希望這對 Windows 2012 R2 也有效。

類似地,可用的最大處理器數RSS是使用此處HKEY_LOCAL_MACHINE\\SYSTEM\CurrentControlSet\Services\Ndis\Parameters\MaxNumRssCpus描述的 設置的。

鑑於此,在 Win2008 和希望在 Win2012 中,設置RssBaseCpu為 1 和MaxNumRssCpus1 應該將處理鎖定RSS到第二個邏輯 CPU 而沒有其他 CPU,假設RSS已成功啟動。RSS可以通過管理命令提示符在 Windows 中檢查狀態,如下所示:

netsh int tcp show global

如此處所述

鑑於這種情況,您的問題很可能僅僅是由於 NIC 設備驅動程序編寫得不好。我在 NIC 解除安裝機制(RSS 所屬的一般類別)方面遇到了很多麻煩,特別是在戴爾伺服器上的 Broadcom 集成 NIC 和相關驅動程序方面。如果系統沒有按照基於四重檢查配置的預期執行,我鼓勵您也追求這種可能性。

引用自:https://serverfault.com/questions/708014