<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

本文引用地址:http://dyxdggzs.com/article/270287.htm

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

  (2)關(guān)掉網(wǎng)卡中斷,驅動(dòng)程序采用輪詢(xún)方式,消除中斷引起的開(kāi)銷(xiāo)。

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

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

  另外,對于NUMA架構的CPU,每個(gè)任務(wù)都使用本地內存,進(jìn)一步提高內存訪(fǎng)問(wèn)速度。

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

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

  3對比實(shí)驗及結果分析

  3. 1實(shí)驗一

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

  

 

  圖4 單線(xiàn)程模式下性能比較圖



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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>