接收端調整簡介
接收端調整 (RSS) 是一種網路驅動程式技術,可在多處理器系統中跨多個 CPU 有效率地散發網路接收處理。
注意
因為相同核心處理器上的超執行緒 CPU 會共用相同的執行引擎,所以效果與有多個核心處理器不同。 基於這個理由,RSS 不會使用超執行緒處理器。
為了有效率地處理已接收的資料,迷你埠驅動程式的接收中斷服務函式會排程延遲的程式調用 (DPC) 。 如果沒有 RSS,一般 DPC 表示 DPC 呼叫內的所有已接收資料。 因此,與中斷相關聯的所有接收處理都會在發生接收中斷的 CPU 上執行。 如需非 RSS 接收處理的概觀,請參閱 非 RSS 接收處理。
RSS 可讓 NIC 和迷你埠驅動程式排程在其他處理器上接收 DPC。 RSS 設計可確保與指定連線相關聯的處理會保留在指派的 CPU 上。 NIC 會實作雜湊函式,而產生的雜湊值有助於選取 CPU。
下圖說明判斷 CPU 的 RSS 機制。
NIC 會使用雜湊函式,在所接收網路資料內的已定義區域 (雜湊類型) 計算雜湊值。 定義的區域可以是不連續的。
雜湊值) (的最小有效位數,可用來編制間接資料表的索引。 間接資料表中的值是用來將接收的資料指派給 CPU。
如需指定間接資料表、雜湊類型和雜湊函式的詳細資訊,請參閱 RSS 組態。
透過 (MSI) 支援的訊息訊號中斷,NIC 也可以中斷相關聯的 CPU。 如需 MSI 的 NDIS 支援詳細資訊,請參閱 NDIS MSI-X。
RSS 的硬體支援
下圖說明 RSS 的硬體支援層級。
RSS 有三種可能的硬體支援層級:
使用單一佇列進行雜湊計算:NIC 會計算雜湊值,而迷你埠驅動程式會將收到的封包指派給與 CPU 相關聯的佇列。
具有多個接收佇列的雜湊計算:NIC 會將接收的資料緩衝區指派給與 CPU 相關聯的佇列。
訊息訊號中斷 (MSI) :NIC 會中斷應該處理已接收封包的 CPU。
NIC 一律會傳遞 32 位雜湊值。
RSS 如何改善系統效能
RSS 可以藉由減少下列方式來改善網路系統效能:
透過將接收處理從 NIC 分散到多個 CPU,以處理延遲。
分散式接收處理有助於確保當另一個 CPU 閒置時,不會大量載入任何 CPU。
藉由增加共用資料在相同 CPU 上執行之軟體演算法的機率,來微調鎖定額外負荷。
例如,當在 CPU0 上執行的函式擁有 CPU1 上執行之函式必須存取的資料微調鎖定時,就會發生微調鎖定額外負荷。 CPU1 會 (等候) ,直到 CPU0 釋放鎖定為止。
藉由增加共用資料在相同 CPU 上執行的軟體演算法機率,以重載快取和其他資源。
例如,當在 CPU0 上執行和存取共用資料的函式在後續中斷時,會在 CPU1 上執行這類重載。
為了在安全的環境中達成這些效能改善,RSS 提供下列機制:
分散式處理
RSS 會將來自 DPC 中指定 NIC 的接收指示處理散發至多個 CPU。
連續處理
RSS 會保留所接收資料封包的行程順序。 針對每個網路連線,RSS 進程會收到相關聯 CPU 的指示。 如需 RSS 接收處理的詳細資訊,請參閱 指出 RSS 接收資料。
動態負載平衡
RSS 提供在主機系統負載時重新平衡 CPU 之間的網路處理負載的方法。 若要重新平衡負載,過度調整驅動程式可以變更間接資料表。 如需指定間接資料表、雜湊類型和雜湊函式的詳細資訊,請參閱 RSS 組態。
傳送端調整
RSS 可讓驅動程式堆疊處理相同 CPU 上指定連線的傳送和接收端資料。 一般而言,過度處理驅動程式 (例如,TCP) 會傳送部分資料區塊,並在傳送資料的餘額之前等候通知。 然後通知會觸發後續的傳送要求。 RSS 間接分析資料表會識別接收資料處理的特定 CPU。 根據預設,如果傳送處理是由接收通知所觸發,則會在相同的 CPU 上執行。 例如,如果) 使用計時器,驅動程式也可以指定 CPU (。
安全雜湊
RSS 包含提供新增安全性的簽章。 此簽章可保護系統免于惡意遠端主機嘗試強制系統處於不平衡狀態。
MSI-X 支援
RSS 支援 MSI-X,會在稍後執行 DPC 的相同 CPU 上執行插斷服務常式 (ISR) 。 這可減少快取的微調鎖定額外負荷和重載。