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通過減少如下開銷來提高網絡性能:
1、跨多個CPU分派一個網卡上的收包處理的延遲。這個也保證了不會有的CPU負載過重而另外的CPU處於空閑。
2、執行在同一個CPU上的軟件算法因共享數據帶來的增加自旋鎖開銷的可能性。
    自旋鎖開銷的發生,比如,當一個函數執行在CPU0上,對一個數據加了自旋鎖,但是另一個函數運行在CPU1上必須訪問這個數據,CPU1就會一直自旋等待CPU0釋放鎖。
3、執行在同一個CPU上的軟件算法因共享數據帶來的緩存重新加載和其他資源開銷增加的可能性。
    這些重新加載的發生,比如,當一個函數執行並訪問了CPU0上的共享數據,執行在CPU1時隨之來了一個中斷。

為了能在一個安全的環境中獲取這些性能的提升,RSS提供如下機制:
1、分布式處理
    RSS在DPC里分派給定網卡的收包處理到多個CPU上去。
2、順序處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM