999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DPDK的多端口并行通信機制

2020-05-14 07:09:24姜海粟陳慶奎
小型微型計算機系統 2020年5期
關鍵詞:信息

姜海粟,陳慶奎

(上海理工大學 光電信息與計算機工程學院,上海 200093)

E-mail :1072668856@qq.com

1 引 言

隨著物聯網大數據應用的增加,物聯網終端需要處理大量數據.過去的手段都集中于云端處理,現在由于數據量暴增造成云端負擔過大,因此一種新興的邊緣計算技術應運而生[1].邊緣計算可以在外圍對數據進行預處理,再匯集到云中心.它的核心則是通過若干個節點形成的小型計算機集群構成.邊緣計算的一個核心問題必須是有一個高性能通信機制.實現邊緣計算節點通信的方法有多種,其中一方面是采購專用的通信網絡設備比如智能網卡和P4交換機等[2],但是這些設備價格高昂,無法進行普及.另一方面隨著普通網卡設備日漸廉價,速率也在提升,服務器多口設備也在日益增加.但是如何充分利用這些設備一直是業界探討的問題.基于這些問題,Intel在2014年推出了一種數據平面開發套件DPDK(Data Plane Development Kit)[3],DPDK通過繞過傳統的系統內核協議棧,直接進行內存訪問,減少中斷等機制提升通信效率,同時將底層數據處理移至用戶態.

據此,本文對DPDK的原理進行深入研究,基于這一思想提出一種數據鏈路層多端口并行通信機制,在每個節點上配置了多個千兆端口,使其復合端口通信能力接近萬兆.該通信機制不僅降低了設備通信成本,而且具有優越的通信性能和良好的擴展性.本文的通信機制具有如下特點:

1)實現基于DPDK通信的多進程數據快速交互;

2)實現基于DPDK的管道模型及高速數據傳輸;

3)實現具有動態調整的多端口多任務通信.

2 相關工作

2.1 DPDK通信研究現狀

隨著用戶態數據平面框架的出現,許多人開始采用DPDK、NETMAP等框架進行數據開發處理,通過繞過內核提升通信效率.但是大都只針對數據進行過濾和轉發,很少直接處理后直接交付上層[7,11].

傳統的DPDK上下層通信方式是通過內核協議棧交換數據.DPDK用戶層通過ioctl系統調用在系統內核創建kni虛擬設備實現.并通過ioctl提供接口和DPDK空間地址信息,由kni重新映射到內核棧的地址空間,并將信息保存至虛擬設備中.這種方式通過已綁定的DPDK端口進行數據包捕獲,然后通過KNI驅動將需要交付上層的數據包重新交付給內核協議棧進行所有數據處理,最后進入上層.這種方式并沒有真正的解決上下層數據通信效率的問題,數據仍然通過內核處理交付上層,內核瓶頸依然存在.

隨著對DPDK的研究逐漸深入,一些人開始將其應用在改進數據傳輸方面.Wenjun Zhu,Peng Li等人利用了DPDK的技術優勢,提出一種基于DPDK的數據包捕獲方法[4],使用 RSS分發算法充分發揮了多端口通信性能.但是他們只能在假設數據包經過哈希后分發均衡,并且只進行單任務的多端口發包處理.一旦端口已經處于已占用部分帶寬條件下,沒有考慮實際環境的RSS分發算法反而會造成端口擁塞,無法持續多端口并行通信.

Kourtis MA則是將DPDK應用在網絡虛擬化,將SR-IVO與DPDK結合,利用DPDK底層的高速數據處理性能,用來提升云計算網絡中密集型數據在轉發面的通信性能[5].金玲等人針對大象流數據,提出基于DPDK的EFLB機制[6].通過設定網絡負載閾值,在超過閾值的情況下,利用SDN控制器將大象流分裂成老鼠流通過多端口通信,并根據網絡拓撲和負載動態計算下一跳節點.該機制是在已經檢測到大象流條件下進行分裂,容易出現數據洪峰效應.

針對邊緣計算集群通信效率問題,本文從單機節點底層通信出發,提升單機通信效率,提出基于DPDK的數據鏈路層多端口并行通信機制.該機制改進了基于DPDK的上下層通信,并提出權值相似匹配的端口動態綁定分發策略和優化反饋控制策略,可以通過發起多個上層應用任務向底層多個端口進行通信.

2.2 DPDK介紹

DPDK的核心組件主要由一系列網卡驅動和基本操作模塊構成,是基于數據平面開發的一款套件.利用該套件可以直接繞過內核訪問網卡,允許用戶直接對數據進行處理.DPDK主要特點如下:

1)頁表(TLB)技術:處理器具有預讀取連續內存地址的能力,能夠快速的找到對應的內存地址,獲得內存數據.DPDK采用頁表技術,將零散的內存統一為一個獨立于系統內存的內存池,并且將其劃分為連續虛擬地址的空間[12,13].

2)用戶態(UIO):DPDK利用UIO技術,繞過系統內核,直接利用驅動調用網卡,將大部分數據包處理過程暴露給用戶,使得用戶可以根據所需要的功能開發各自的模塊.

3)DMA技術:傳統的系統內核協議棧處理數據需要大量的拷貝以及多次的系統調用,大大占用了CPU資源.DPDK采用了DMA技術[7],使CPU一直處于輪詢狀態.網卡獲得總線控制權限直接將數據拷貝至內存,減少了拷貝的次數和CPU中斷.

4)親和性:DPDK通過將控制線程綁定到指定處理器核心上,使得線程僅在該核心上運行,線程之間不能互相干擾,減少了線程切換時處理器核心的開銷.

DPDK主要框架如圖1所示.

圖1 DPDK主要框架(來自文獻[3])

DPDK整體框架結構由圖1的各個模塊組成.在Linux kernel上提供了三種驅動KNI、IGB和VFIO.KNI用于兼容傳統內核協議棧,IGB驅動是將數據完全交給DPDK進行處理,VFIO則用于支持虛擬化.在用戶層面上,DPDK的主要處理函數庫都在core libs上,包括內存控制,隊列控制和定時器等.以及為了支持多種型號的網卡提供不同的pmd驅動方式.

3 整體設計

3.1 通信框架

本文通信機制是基于Linux系統和DPDK平臺實現,可以在單機上充分利用多核多端口,同時支持多應用與底層連接.

在以往的服務器通信系統中,往往只用到少數網卡端口進行通信,同時為了避免競爭,多采用加鎖的方式.由于處理器比內核和內存快很多,導致處理器常常處于等待狀態,造成了極大的資源浪費[8,9],此外大量時間耗費在無意義的上下 文切換和鎖的處理上.該通信機制設計之初就繞過傳統的內核協議棧基于IGB驅動進行多核多線程處理.主邏輯核用于維持底層進程處理,其余邏輯核綁定單一線程用于動態輪詢管道及網卡端口.通信框架如圖2所示.

上層應用和底層同時共享DPDK內存池空間.上層應用通過外部消息隊列的方式在底層進程注冊一個通信連接,底層進程就會將DPDK內存池中某個空閑通信管道與應用進行綁定.上層可以直接申請mbuf內存塊填充數據,然后將數據指針放入管道.底層通過另一個邏輯核線程從管道進行輪詢,然后調用端口將數據發出.

當上層應用完成通信就會通過連接向底層進程發出關閉請求,底層進程回收上層申請的管道和內存塊.若需繼續傳輸,則會發出維持連接請求,否則超時也會自動關閉連接回收內存池空間.

通信模型在DPDK內存池中建立共享命名區域實時傳遞控制信息.上層與底層雙方通過公共命名直接找到對應DPDK共享區域的指針.底層在共享區域內會實時更新上層所需的速率控制信息、應用信息和端口信息等.上層應用實時讀取共享區域的控制信息反饋自適應的調整封裝速率和可用端口.當發起多個上層應用傳輸時建立多個通信連接,根據上層應用創建的順序,自動調整不同的優先級進行多端口通信.

圖2 通信框架

3.2 管道模型

管道主要用來建立端口和上層應用的數據傳輸通道,同時會返回管道負載和管道占用等參數提交給通信調度模塊進行控制信息計算.

DPDK在環境初始化過程中,使用了內存池機制,將固定分配到的內存進行了連續虛擬地址映射,分配成連續內存塊,每個內存塊擁有2Kb的Mbuf空間.連續虛擬地址的設計提升了處理器的預讀取性能,提高了內存命中率,是本機制實現數據包快速處理的一個關鍵.

本文針對應用數據的快速處理,設計了如圖2右下角所示的雙向緩沖管道.每個管道對應一個雙向循環隊列,每個隊列擁有16384個存儲內存塊指針空間,該循環隊列引入頭指針和尾指針負責循環隊列中內存塊的快速數據傳遞.循環隊列的片區存儲內存塊的起始地址,指向連續的內存區域.當循環隊列中有數據處理出現超時或者管道內數據持續溢出,則計算后通過共享區域通知并上層限制數據封裝,提高了管道的可用性.

3.3 通信邏輯設計

本文通信邏輯主要由端口分發策略和反饋控制策略.通過端口分發可以選擇合適的端口進行傳輸,反饋控制是統計和計算各個參數得到控制信息狀態,并將狀態通過共享區域快速反饋給上層應用以達到控制上層封裝數據速率.反饋控制統計參數包括有應用編號、端口數量設置、數據包大小、管道負載、管道趨勢和每個端口負載等.

3.3.1 端口分發策略

傳統端口分發算法采用端口平衡循環算法或者權重輪詢算法進行數據包分發.平衡循環算法對外通過多個端口聚合成一個端口進行通信,在其內部通過直接循環多個物理端口分發數據[10].然而,一方面由于它對外綁定成一個虛擬端口,無法實現自定義端口功能,對內未針對無序數據分發,也容易出現丟包問題.另一方面使用傳統算法只考慮數據分發和接收的公平性,并未考慮實際運行環境(包括對方端口負載,核心負載,端口性能等),容易出現分發失誤導致資源使用不均勻和端口擁塞等問題,最終造成通信故障.權重輪詢算法則根據當前本地端口使用率以及當前端口權重比來分配使用端口.節點之間的網卡端口使用率和權重很難動態的進行調整,無法充分發揮端對端通信性能[14].

由于是在邊緣集群中,各節點經過同步都能獲得其他節點端口信息.因此本文在傳統輪詢負載權值基礎上加入目的節點端口信息進行匹配計算.本機權值Wsend{M1,M2,M3,…}每個端口由當前端口i負載U(0

定義權值公式如下:

(1)

(2)

(3)

公式(1)使用每個參數的系統平均值,作為公式(2)中計算端口i綜合占用L的參數.通過公式(3)獲得該端口在單機的權值Mi.

確認目的節點后,本機通過節點信息表對目的節點端口進行評估,計算出對方權值Wrecv{M1,M2,M3…}.然后通過雙方進行端口相似匹配.匹配過程如下:

本機節點通過公式(3)計算獲得本機節點和目的節點的Wsend{M1,M2,M3,…}和Wrecv{M1,M2,M3,…}.Mi分別表示每個端口的權值信息,由于各個端口硬件性能可能不同,需要加入端口性能信息E{E1,E2,E3,…,En} 輔助相似計算:

(4)

循環匹配(Msend_i,Esend_i)和(Mrecv_j,Erecv_j)代入計算公式(5)計算曼哈頓距離,距離越小說明相似度越高.

distman(i,j)=|xi-xj|+|yi-yj|

(5)

對相似度最高的一對作為端口綁定保存到序列中,然后對隊列剩余部分繼續進行匹配.最終經過相似度匹配和排序后獲得端口綁定序列{(isend,jrecv),(msend,nrecv)…},然后根據上層選擇匹配較高的N個端口進行通信.

3.3.2 反饋控制策略

通信調度模塊通過獲得不同模塊的參數,并建立對應的多個上層應用與底層參數對應表,然后經過反饋控制策略將結果通過共享區域反饋給上層應用和底層通信程序以實現對上層應用控制.反饋控制邏輯如圖3所示.

反饋控制模塊通過獲取端口、管道等多個信息通過計算反饋給上層.上層獲得控制信息后調整內存申請和封裝速率,邏輯核獲得控制信息后會修改端口發送效率和緩沖管道使用效率.因此,該反饋控制策略的衡量參數為緩沖管道使用趨勢Q(0

圖3 反饋控制邏輯

本文通過前面的端口分發策略獲得可用端口N個,然后獲得其各個端口的當前負載Nload和端口型號速率E并計算它的理論總速率,計算總速率表示為公式(6).已知信息還包括緩沖管道容量Pa、上層封裝速率Vu、統計周期T和基于層次化帶寬算法設置的比例系數k.Q值根據前次計算結果進行迭代計算,表示為公式(7),并設置初始Q值為0.

(6)

(7)

層次化帶寬算法是基于效用函數針對適用帶寬方法提出的[15].效用函數主要用于在經濟中衡量消費者和消費商品組合數量關系的函數,用來衡量消費者的滿足程度.在反饋控制邏輯中,主要用于衡量不同應用任務對帶寬資源的層次化需求.因此,本文將根據應用任務的創建優先級對帶寬資源進行層次化分配.

反饋控制主要根據Q值進行,當Q過高則判斷Pa占用以及Va和Vu.

Feedbackcontrolcodedescription:

1.while(data)

2.foreach app in socket_connect

3. get k from upper layer

4. calculate Q and Va;

5.ifQ>0then

6.ifPaused higher or Vuabove the linethen

7. reduce Vu

8.elsereduce Va

9.endif

10.elseboth raise Vuand Vauntil one meet the line;

11.endif

12. Write control information into the shared area;

13.endfor

14.endwhile

應用在啟動時確定使用端口數量,然后在進行通信傳輸中需要滿足公式(6)-公式(7).同時根據任務優先順序自動設置占用剩余帶寬比值k.隨著多個應用的加入,根據應用總速率k呈接近反比例下降趨勢.過程中若某個任務先結束,則底層會根據周期更新控制信息重新調整應用k值.

3.4 控制字段及通信協議

由于在傳統的應用通信協議中,除了以太網包頭,通信協議占用數據28-48字節,在應用通信中占用了大量資源,降低了通信效率.因此針對上文的通信機制,設計了對應的通信協議,只占用了大約13字節.同時也設計了包括通信連接控制字段和共享區域反饋控制字段兩個部分.控制字段和通信協議如圖4所示.

圖4 控制字段及通信協議

通信連接控制字段:上層應用在啟動時會向底層通信程序注冊連接,用來維護連接狀態,同時底層返回內存池字段并綁定管道編號.連接狀態包括注冊、注銷和保持三種狀態.通過綁定的管道,上層可以在DPDK內存池申請的內存塊封裝數據包丟入指定緩沖管道進行處理.

共享區域反饋控制字段:每注冊一個上層應用程序,底層就會增加一條對應上層應用的反饋控制信息,并定時進行數據更新.端口速率控制由底層通信程序實時讀取相關參數計算后返回,上層應用程序通過實時讀取反向控制字段中的參數進行數據封裝速率控制.

應用傳輸協議:初始環境下通過主節點組網廣播建立節點地址連通機制,然后向所有節點下發節點地址通信表,并定時同步更新維護節點表內容,所有節點通過表內容可以向指定節點進行通信.然后進行上層應用發起及通信傳輸,具體通信步驟如下:

1)所有子節點先上線,底層進程啟動并建立節點通信空表,同時獲得本機編號信息、端口、處理器、內存等信息狀態.

2)主節點上線并等候30秒,啟動底層進程及獲取本機信息,然后發起廣播組網通信.所有子節點以及主節點自身收到并過濾廣播組網信息向主節點返回主機所有信息,主節點對通信表進行節點數據填充.

3)主節點處理完畢后向所有節點下發節點通信數據,子節點收到并填充到節點通信表.然后定時進行所有節點同步維護通信表的更新.此時,所有節點都擁有任何一方的節點的端口信息.

4)接收方在節點發起上層應用,向底層進行連接注冊并綁定管道,底層開始對端口及管道信息進行計算并通過共享區域返回上層.

5)發送方同 4),在讀取共享區域的控制信息后,申請Mbuf內存塊并根據傳輸協議字段封裝數據.底層輪詢線程讀取數據字段的目的節點、源節點和類型信息查找節點通信表,然后填充地址和目的地址后送入綁定緩沖管道.

6)底層進行另一個輪詢線程從管道中獲得Mbuf指針,讀取目的地址和源地址,并從指定端口將數據發出.

7)接收方端口輪詢線程從端口接收數據,并申請Mbuf內存塊封裝數據,讀取數據的目的節點送入綁定管道.另一個輪詢線程從管道獲得數據,通知上層.上層完成數據重組釋放Mbuf內存塊,關閉連接,完成應用通信.

4 性能評估

4.1 實驗環境說明

本節對多端口通信機制的各項性能指標進行實機測試.實驗設定多臺測試服務器,配置信息如表1所示.

表1 配置信息

Table 1 Configuration information

CPU:E3-1230v23.3GHzMemory:8g ddr3?21600MHzSystem:Centos 7NIC:i350-T41Gb/s each portDPDK:17.11.3

4.2 性能評估指標

本文對該模型通信性能主要從帶寬利用率、丟包率、時延以及多端口通信等多方面測試進行性能評估.

帶寬利用率:DPDK支持綁定多個網卡端口,本文在并行條件下測量多個DPDK端口的帶寬使用率.

丟包率:本文采用不可靠交付方式進行通信,因此對比傳統UDP方式進行丟包率評估.

時延:時延主要包括發送時延、傳輸時延和處理時延.由于本文是以邊緣集群節點環境為目標,因此可以忽略集群節點的傳輸時延.發送時延定義如公式(8):

(8)

N表示數據塊大小,R表示傳輸速率,DT表示發送時延.本文的處理時延包PT括三個部分:應用處理時延AT、DPDK底層處理時延MT、進程交互處理時延GT,M為當前內存速率.因此公式定義如式(9)-式(11):

(9)

PT=AT+2MT+2GT

(10)

D=PT+DT

(11)

最終到達對方應用的總時延需要經過兩次DPDK底層處理和兩次進程交互處理.

4.3 測試流程及結果評估

在通信性能和丟包測試中配置主機使用雙核單端口測試,這里和經過內核的傳統應用通信進行對比測試.測試包從64字節到1024字節,數據量為6GB.通信性能和丟包率如圖5所示.

圖5 通信性能測試

由圖5可知,折線圖為通信速率對比,直方圖為丟包率對比.通過折線圖可以看出本文單端口通信在64字節和128字節的包處理上明顯優于系統內核傳輸.通過直方圖可以看出傳統通信丟包率在萬分之一到萬分之五左右,而本文機丟包率在十萬分之一到萬分之一之間,丟包率大大降低.

通過使用4.2的時延計算公式計算時延并進行對比,通信時延測試結果如圖6所示.

圖6 通信時延測試

如圖6所示,得益于底層高效的數據包處理性能,在忽略傳輸時延的條件下,本文的通信時延明顯低于傳統的通信時延,主要在于減少了內存拷貝次數以及提升了單個包的數據處理,測試過程發現本文在單個數據包的處理速度小于60ns,相對于內核數據處理性能提升了10倍以上.

多端口測試主要采用一對一多端口測試模型對比傳統MPI多端口測試模型,同時設置不同端口數量.節點上線同步完成后,打開接收方和發送方.然后令發送方設置1024字節發送6GB數據量文件.實驗結果如圖7所示.

圖7 多端口測試

通過圖7可以發現,本文的機制對比傳統MPI通信優勢明顯.根據應用端口數量效率提升幅度分別為(1,44.4%)、(2,43.5%)、(3,48%)、(4,45.7%)、(5,56%)、(6,70.3%)、(7,80%)和(8,85.8%).而MPI通信受限于內核,無法充分發揮多端口性能.

最后是節點之間的多應用測試,主要適用于端到端的多文件或者多應用通信.該實驗在設置應用6個可用端口,總端口為8個的條件進行,發送節點設置4個應用進行通信.實驗結果如圖8所示.

圖8 多應用多端口測試

如圖8所示,應用1通過計算按照端口分發策略獲得較高匹配的6個端口進行通信,其后的應用也同樣通過策略獲得匹配度較高的6個端口.從圖8可以明顯看出,應用2使用了應用1未使用的匹配較低的端口,應用3則在前兩個應用的基礎上重新計算獲得相對匹配較高的端口.通過本文的機制最終達到所有端口充分使用的效果.

5 結 語

本文通過對DPDK通信技術的研究,針對傳統端對端通信效率低下,受限于內核瓶頸,浪費大量計算資源和帶寬資源的問題,提出了一種基于DPDK的多端口并行通信機制.該機制在支持多端口通信的基礎上,能夠支持多進程高速交互及端口分配和多任務通信的動態調整,避免了端口擁塞的問題.實驗結果表明,該通信機制可以充分利用計算資源和帶寬資源,極大地提升通信效率,最高能夠同時支持多個萬兆網卡,緩解了終端節點的通信瓶頸.本文的后續工作是對底層通信繼續優化以及數據可靠傳輸的實現.

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
大眾創業(2009年10期)2009-10-08 04:52:00
展會信息
展會信息
展會信息
展會信息
展會信息
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 亚洲一级毛片| 呦系列视频一区二区三区| 真实国产乱子伦高清| 秋霞午夜国产精品成人片| 亚洲人成成无码网WWW| 亚洲日韩Av中文字幕无码| 亚洲精品视频网| 亚洲激情99| 欧美一级在线播放| 国产小视频免费| a国产精品| 第九色区aⅴ天堂久久香| 高清视频一区| 婷婷午夜天| 91小视频在线观看免费版高清| 乱人伦视频中文字幕在线| 日本道中文字幕久久一区| 中文字幕无码电影| 天堂va亚洲va欧美va国产| 国产91视频免费观看| 亚洲精品少妇熟女| 99久久精品免费视频| 国产在线第二页| 国产青榴视频在线观看网站| 午夜视频免费试看| 日韩第一页在线| 欧美性精品| 久久77777| 天天综合色天天综合网| 青青青国产精品国产精品美女| 欧美精品啪啪一区二区三区| 伊人精品视频免费在线| 毛片一级在线| 国产一级无码不卡视频| 在线国产欧美| 国产内射一区亚洲| 欧美成人h精品网站| 亚洲三级电影在线播放| 久久无码高潮喷水| 欧美亚洲激情| 国产精品99久久久久久董美香| 国产美女精品一区二区| 国产精品毛片在线直播完整版 | 中文字幕在线看视频一区二区三区| 日本高清在线看免费观看| 不卡无码网| 欧美成人精品欧美一级乱黄| 欧美成人午夜视频免看| 第一页亚洲| 国产成人综合亚洲欧洲色就色| 亚洲成人网在线播放| 伊人久综合| 国产产在线精品亚洲aavv| 亚洲天堂免费| 国产经典在线观看一区| 2024av在线无码中文最新| 五月婷婷精品| 中文字幕欧美日韩| 91精选国产大片| 在线观看亚洲天堂| 午夜色综合| 亚洲日韩AV无码一区二区三区人| 国产欧美日韩精品综合在线| 欧美成人日韩| 99re66精品视频在线观看| 色综合a怡红院怡红院首页| 伊人色天堂| 免费人成在线观看视频色| 国产日本一区二区三区| 国产福利小视频高清在线观看| a级毛片视频免费观看| 8090成人午夜精品| 亚洲高清无在码在线无弹窗| 国产欧美日韩视频一区二区三区| 97se亚洲| 国产亚洲欧美日韩在线观看一区二区| 亚洲AⅤ永久无码精品毛片| 中文字幕1区2区| 国产成人综合久久精品下载| 欧美综合成人| 99爱视频精品免视看| 亚洲人成成无码网WWW|