DPDK 網卡RSS(receive side scaling)簡介

網卡RSS(receive side scaling)簡介

RSS是一種網卡驅動技術,能讓多核系統中跨多個處理器的網絡收包處理能力高效能分配。
注意:因爲同一個核的處理器超線程共享同一個執行引擎,這個效果跟有多個物理核的處理器不同。所以,RSS不能使用超線程處理器。

爲了有效的處理收包,一個miniport的驅動的接收中斷服務功能調度了一個延遲過程調用(DPC)。若是沒有RSS,一個典型的DPC標識了全部的收包數據都在這個DPC調用裏。所以,全部收包處理關聯的中斷都會運行在這些中斷髮生的CPU上。

若有RSS功能,網卡和miniport驅動就會提供調度這些收包DPC到其餘處理器上的能力。一樣,RSS設計保證對於一個給定鏈接的處理繼續停留在一個分配好的CPU上。網卡實現了一個hash散列功能和做爲結果的hash值來選擇一個CPU。


RSS經過減小以下開銷來提升網絡性能:
一、跨多個CPU分派一個網卡上的收包處理的延遲。這個也保證了不會有的CPU負載太重而另外的CPU處於空閒。
二、執行在同一個CPU上的軟件算法因共享數據帶來的增長自旋鎖開銷的可能性。
    自旋鎖開銷的發生,好比,當一個函數執行在CPU0上,對一個數據加了自旋鎖,可是另外一個函數運行在CPU1上必須訪問這個數據,CPU1就會一直自旋等待CPU0釋放鎖。
三、執行在同一個CPU上的軟件算法因共享數據帶來的緩存從新加載和其餘資源開銷增長的可能性。
    這些從新加載的發生,好比,當一個函數執行並訪問了CPU0上的共享數據,執行在CPU1時隨之來了一箇中斷。

爲了能在一個安全的環境中獲取這些性能的提高,RSS提供以下機制:
一、分佈式處理
    RSS在DPC裏分派給定網卡的收包處理到多個CPU上去。
二、順序處理算法

相關文章
相關標籤/搜索