新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 一種面向云架構(gòu)的高性能網(wǎng)絡(luò)接口實現(xiàn)技術(shù)

一種面向云架構(gòu)的高性能網(wǎng)絡(luò)接口實現(xiàn)技術(shù)

作者: 時間:2015-03-02 來源:網(wǎng)絡(luò) 收藏

  HPNI主要包括以下幾項關(guān)鍵技術(shù):

本文引用地址:http://m.butianyuan.cn/article/270287.htm

  (1)通過Linux提供的UIO框架,實現(xiàn)了網(wǎng)卡用戶空間驅(qū)動程序,UIO能夠把網(wǎng)卡設(shè)備內(nèi)存空間通過文件系統(tǒng)的方式傳遞給用戶空間,比如dev/uioXX,因此用戶空間程序能夠讀取到設(shè)備地址段并映射到用戶空間內(nèi)存中,比如通過mmap()。通過上述方式可以在用戶空間程序中完成驅(qū)動程序的功能。這種方法的優(yōu)點是去掉了內(nèi)存拷貝,同時因為所有工作都在用戶空間完成,也節(jié)省了系統(tǒng)調(diào)用的開銷。

  (2)關(guān)掉網(wǎng)卡中斷,驅(qū)動程序采用輪詢方式,消除中斷引起的開銷。

  (3)用戶空間的數(shù)據(jù)包緩沖區(qū)采用huge page分配的連續(xù)物理內(nèi)存區(qū),通過LinuX提供的huge page接口能夠分配大于4k的頁,從而減少頁表的大小,降低TLB Miss發(fā)生的概率。另外連續(xù)的物理內(nèi)存塊也能減少地址轉(zhuǎn)換引起的查表次數(shù),進一步提高性能。

  (4)任務線程和CPU核心之間采用靜態(tài)綁定,比如接收包線程綁定1核,處理包線程綁定2核,發(fā)送包線程綁定3核,從而消除核間切換產(chǎn)生的開銷。

  另外,對于NUMA架構(gòu)的CPU,每個任務都使用本地內(nèi)存,進一步提高內(nèi)存訪問速度。

  (5)通過CAS(Compare And Swap)原子操作,多個任務可以在不加鎖的情況下對共享隊列進行訪問,增加和刪除節(jié)點。在X86架構(gòu)下CAS是通過CMPXCHG指令實現(xiàn)的,該指令的作用就是把一個指針指向內(nèi)存的值同一個給定的值進行比較,如果相等,就對對應內(nèi)存賦一個新的值,否則不做任何操作。通過上述方法可以實現(xiàn)一種沖突檢測機制,當任務發(fā)現(xiàn)該隊列己經(jīng)被訪問時,主動等待直到隊列空閑。無鎖隊列消除了加鎖引起的開銷,同時也能避免死鎖的情況。

  (6)基于網(wǎng)卡RSS(Receive-side Scaling)功能可以平滑擴展成多任務模式,RSS功能可以將收到的數(shù)據(jù)包基于五元組做哈希運算,從而分發(fā)到不同的隊列當中進行并行處理,每一個隊列可以對應一個收包任務,從而成倍地提高處理性能。

  3對比實驗及結(jié)果分析

  3. 1實驗一

  實驗環(huán)境描述如下:一臺數(shù)據(jù)包發(fā)生器,最大可產(chǎn)生流量為80Mpps的64字節(jié)的數(shù)據(jù)包。一臺服務器配置Intel的Sandy Bridge 8核處理器,每個核心2.0GHZ.操作系統(tǒng)采用RedHat Enterprise Linux 6.2.網(wǎng)卡采用Intel 82599 10G以太網(wǎng)控制器。運行的軟件包含三個線程,一個收包線程,一個轉(zhuǎn)發(fā)線程,一個發(fā)送線程。傳統(tǒng)網(wǎng)絡(luò)實現(xiàn)方式下采用了RAWSocket方式直接收發(fā)處理層二數(shù)據(jù)包,如圖4所示。

  

 

  圖4 單線程模式下性能比較圖



關(guān)鍵詞: 網(wǎng)絡(luò)接口 FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉