国产精品吹潮在线播放,日韩一区二区三区在线播放,啊级免费黄片视频,66av视频

Linux多隊列網(wǎng)卡的硬件的實現(xiàn)詳解(linux 多網(wǎng)卡配置)

更新時間:2023-07-11 00:12:48作者:佚名

Linux多隊列網(wǎng)卡的硬件的實現(xiàn)詳解(linux 多網(wǎng)卡配置)

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

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

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

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

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

  圖1.1 82575硬件邏輯圖

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

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

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

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

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

  圖2.2 2.6.21之前net_device

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

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

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

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

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

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

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

  圖3.2 2.6.21之后net_device

  4.中斷綁定

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

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

  圖4.1 /proc/interrupts

  5.中斷親合糾正

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

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

  圖5.1 不合理中斷綁定

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

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

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

  圖4.2 set_irq_affinity

本文標簽: 隊列  網(wǎng)卡  硬件  

為您推薦

Linux多隊列網(wǎng)卡的硬件的實現(xiàn)詳解(linux 多網(wǎng)卡配置)

Linux多隊列網(wǎng)卡的硬件的實現(xiàn)詳解 多隊列網(wǎng)卡是一種技術,最初是用來解決網(wǎng)絡IO QoS (quality of service)問題的,后來隨著網(wǎng)絡IO的帶

2023-07-11 00:12

如何讓紅旗Linux支持fFTP服務并允許root用戶登錄

如何讓紅旗Linux支持fFTP服務并允許root用戶登錄 內容:讓紅旗Linux支持fFTP服務,并允許root用戶登錄 環(huán)境:以下在紅旗Linux DC S

2023-07-11 00:12

如何在Linux 如何在linux新建文件夾

如何在Linux(CentOS)下重置MySQL根(Root)密碼 本例中以CentOS6.6下修改MySQL5.1.73舉例說明. 1.首先輸入"servic

2023-07-11 00:12

Linux centos7環(huán)境下MySQL如何安裝

Linux centos7環(huán)境下MySQL如何安裝 Linux centos7環(huán)境下安裝MySQL步驟的詳細介紹 安裝MySQL mysql 有兩個跟windo

2023-07-11 00:11

linux管道及重定向詳解 shell重定向和管道

linux管道及重定向詳解 在linux系統(tǒng)中,大多數(shù)命令很簡單,很少出現(xiàn)復雜功能的命令,每個命令往往實現(xiàn)一個或者幾個功能十分簡單的功能,我們可以通過將多個簡單

2023-07-11 00:11

redhat linux swap分區(qū)擴展的方法有哪些

redhat linux swap分區(qū)擴展的方法有哪些 redhat linux swap分區(qū)擴展的三種方法 swap 介紹: 當物理內存占用完了后,當系統(tǒng)還需

2023-07-11 00:11