人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

Linux多隊(duì)列網(wǎng)卡的硬件的實(shí)現(xiàn)詳解

發(fā)布日期:2022-01-02 08:42 | 文章來源:源碼中國

多隊(duì)列網(wǎng)卡是一種技術(shù),最初是用來解決網(wǎng)絡(luò)IO QoS(quality of service)問題的,后來隨著網(wǎng)絡(luò)IO的帶寬的不斷提升,單核CPU不能完全處滿足網(wǎng)卡的需求,通過多隊(duì)列網(wǎng)卡驅(qū)動的支持,將各個隊(duì)列通過中斷綁定到不同的核上,以滿足網(wǎng)卡的需求。

常見的有Intel的82575、82576,Boardcom的57711等,下面以公司的服務(wù)器使用較多的Intel 82575網(wǎng)卡為例,分析一下多隊(duì)列網(wǎng)卡的硬件的實(shí)現(xiàn)以及l(fā)inux內(nèi)核軟件的支持。

1.多隊(duì)列網(wǎng)卡硬件實(shí)現(xiàn)

圖1.1是Intel 82575硬件邏輯圖,有四個硬件隊(duì)列。當(dāng)收到報文時,通過hash包頭的SIP、Sport、DIP、Dport四元組,將一條流總是收到相同的隊(duì)列。同時觸發(fā)與該隊(duì)列綁定的中斷。

圖1.1 82575硬件邏輯圖

2. 2.6.21以前網(wǎng)卡驅(qū)動實(shí)現(xiàn)

kernel從2.6.21之前不支持多隊(duì)列特性,一個網(wǎng)卡只能申請一個中斷號,因此同一個時刻只有一個核在處理網(wǎng)卡收到的包。如圖2.1,協(xié)議棧通過NAPI輪詢收取各個硬件queue中的報文到圖2.2的net_device數(shù)據(jù)結(jié)構(gòu)中,通過QDisc隊(duì)列將報文發(fā)送到網(wǎng)卡。

圖2.1 2.6.21之前內(nèi)核協(xié)議棧

圖2.2 2.6.21之前net_device

3. 2.6.21后網(wǎng)卡驅(qū)動實(shí)現(xiàn)

2.6.21開始支持多隊(duì)列特性,當(dāng)網(wǎng)卡驅(qū)動加載時,通過獲取的網(wǎng)卡型號,得到網(wǎng)卡的硬件queue的數(shù)量,并結(jié)合CPU核的數(shù)量,最終通過Sum=Min(網(wǎng)卡queue,CPU core)得出所要激活的網(wǎng)卡queue數(shù)量(Sum),并申請Sum個中斷號,分配給激活的各個queue。

如圖3.1,當(dāng)某個queue收到報文時,觸發(fā)相應(yīng)的中斷,收到中斷的核,將該任務(wù)加入到協(xié)議棧負(fù)責(zé)收包的該核的NET_RX_SOFTIRQ隊(duì)列中(NET_RX_SOFTIRQ在每個核上都有一個實(shí)例),在NET_RX_SOFTIRQ中,調(diào)用NAPI的收包接口,將報文收到CPU中如圖3.2的有多個netdev_queue的net_device數(shù)據(jù)結(jié)構(gòu)中。

這樣,CPU的各個核可以并發(fā)的收包,就不會應(yīng)為一個核不能滿足需求,導(dǎo)致網(wǎng)絡(luò)IO性能下降。

圖3.1 2.6.21之后內(nèi)核協(xié)議棧

圖3.2 2.6.21之后net_device

4.中斷綁定

當(dāng)CPU可以平行收包時,就會出現(xiàn)不同的核收取了同一個queue的報文,這就會產(chǎn)生報文亂序的問題,解決方法是將一個queue的中斷綁定到唯一的一個核上去,從而避免了亂序問題。同時如果網(wǎng)絡(luò)流量大的時候,可以將軟中斷均勻的分散到各個核上,避免CPU成為瓶頸。

圖4.1 /proc/interrupts

5.中斷親合糾正

一些多隊(duì)列網(wǎng)卡驅(qū)動實(shí)現(xiàn)的不是太好,在初始化后會出現(xiàn)圖4.1中同一個隊(duì)列的tx、rx中斷綁定到不同核上的問題,這樣數(shù)據(jù)在core0與core1之間流動,導(dǎo)致核間數(shù)據(jù)交互加大,cache命中率降低,降低了效率。

圖5.1不合理中斷綁定

linux network子系統(tǒng)的負(fù)責(zé)人David Miller提供了一個腳本,首先檢索/proc/interrupts文件中的信息,按照圖4.1中eth0-rx-0($VEC)中的VEC得出中斷MASK,并將MASK

寫入中斷號53對應(yīng)的smp_affinity中。由于eth-rx-0與eth-tx-0的VEC相同,實(shí)現(xiàn)同一個queue的tx與rx中斷綁定到一個核上,如圖4.3所示。

圖4.2 set_irq_affinity

圖4.3合理的中斷綁定

set_irq_affinity腳本位于http://mirror.oa.com/tlinux/tools/set_irq_affinity.sh。

上一頁12 下一頁 閱讀全文

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部