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

虛擬機環境下MPI/RDMA庫的通信優化

2021-07-08 08:27:48謝尚威
小型微型計算機系統 2021年7期

謝尚威,華 蓓

(中國科學技術大學 計算機科學與技術學院,合肥 230027)

1 引 言

高性能計算在科研、工程、金融等許多領域有著廣泛的應用.由于超級計算機及定制軟件的高昂成本,由廉價服務器構成的計算機集群成為許多企業和組織首選的高性能計算平臺.RDMA(Remote Direct Memory Access)是當下高性能計算及分布式系統中應用最廣泛的網絡通信技術[1],它可將數據從源主機的應用緩存直接傳輸到目的主機的應用緩存而不需要雙方操作系統的參與.RDMA 將傳輸協議實現在硬件層面上,同時在數據傳輸路徑上繞過操作系統內核,相比于傳統的TCP/IP網絡,RDMA具有高吞吐、低延遲、低CPU占用的優點[2].RDMA通過專用的RDMA網卡(RNIC)和Verbs接口為應用提供高速通信服務.

近年來,高性能計算正加速向云環境遷移,利用云計算的彈性來適應用戶不斷變化的計算需求,并節省用戶對硬件基礎設施的投資[3].虛擬化是云計算的基礎,當高性能計算向云端遷移時,如何在虛擬化環境下實現高效的網絡通信是需要解決的問題.目前網絡I/O設備的虛擬化技術可以分為硬件支持的虛擬化和基于軟件的虛擬化兩類.硬件支持的虛擬化包括PCI直通和單根虛擬化[4],PCI直通繞過虛擬化平臺直接將網卡設備分配給虛擬機使用,相當于虛擬機獨占了一個網卡設備;SR-IOV則在PCIe層面將網卡設備虛擬成多個設備接口,從系統設備驅動的角度來看相當于多個網卡設備.硬件支持的虛擬化方法雖然使用方便,虛擬機之間的隔離性也很好,但是在這些硬件虛擬化方法下,虛擬化平臺不能對虛擬機中的流量進行諸如流量限速、安全檢查等一些必要的流量管理,然而流量管理是很多場景中必不可少的功能,因此目前通過硬件虛擬化實現的網絡設備虛擬化的應用場景十分有限.基于軟件的虛擬化包括全虛擬化和半虛擬化,全虛擬化使用軟件模擬網絡設備的IO請求,由于需要對每個IO請求進行模擬,所以其效率較低,但是由于其完整的模擬了一個網絡設備,所以其通用性比較好;半虛擬化相當于全虛擬化的進一步優化,相比于完全的模擬一個網絡設備,半虛擬化選擇設計了一個虛擬機和虛擬化平臺之間的IO協議,該協議主要包括兩部分,位于客戶機操作系統的前端和位于宿主機的后端,由前端和后端共同模擬完成IO請求.半虛擬化技術是一個IO協議,因此靈活性較高,基于該協議可以實現虛擬塊設備IO、虛擬網絡設備IO等.并且前端和后端之間的通信采用共享內存的方式,所以其也具備不錯的性能.半虛擬化是目前云環境主流的網絡I/O虛擬化方法[5].

而對于高性能計算中普遍使用的RDMA網絡設備來講,目前成熟的RDMA虛擬化方案僅有SR-IOV方案.如上所說,這種虛擬化方案使用場景有限,共有云環境不適用.VMWare提出的vRDMA[6]方案,可用于云環境,但該方案閉源,且性能也不理想.HyV[7]對RDMA的控制通路采用半虛擬化方法,對數據通路則采用直通的方法來提高虛擬機數據傳輸速率,然而由于數據通路直通硬件,仍未解決公有云中租戶流量隔離等問題.vSocket[6]考慮到公有云中大多數應用采用套接字(socket)通信,提出了連接虛擬化的方法.其基本思想是,后端為前端提供一個虛擬連接而不是一個RDMA虛擬設備,后端為虛擬機中的每一個套接字連接建立一個虛擬連接,每一個虛擬連接映射到底層的一個RDMA連接上,當應用調用套接字收發數據時,虛擬連接接管數據傳輸過程,在虛擬機和RDMA網卡之間直接傳輸數據.vSocket實現了平臺和RDMA設備及驅動的完全解耦合.

高性能計算任務通常具有數據量大,計算量大的特點,因此目前大多數的高性能計算均采用并行計算的方式來提高計算性能.目前高性能計算中使用比較普遍的并行編程框架是MPI[8](Message Passing Interface)通信庫.MPI的基本思想是通過在不同的計算節點之間通過消息傳遞將數據分配到不同的節點做并行計算,進而達到并行使用計算節點資源的目的,提高了計算的效率.該庫規定了基本的點對點通信和群集通信原語用來將數據在多個節點上做不同的運算操作.在實現方式上,MPI通常以第三方庫的形式存在,為了提高可用性,MPI目前已經支持如RDMA網絡、以太網等主流網絡平臺.當高性能計算遷移到云環境時,MPI/RDMA的通信性能取決于所采用的RDMA虛擬化技術.從目前已有的RDMA虛擬化方案來看,既能滿足云環境要求、又能充分發揮RDMA性能優勢的方案只有vSocket,但是注意到為兼容套接字API的語義,vSocket在應用進程與vSocket前端之間傳輸數據時需要一次數據拷貝.

在要求低延遲的通信中,優化延遲一直是廣受關注的課題,通信延遲優化除了可以在網絡鏈路上做傳輸延遲優化以外,主機側的數據處理造成的延遲也是不容忽視的一部分,特別是數據拷貝.不少研究工作都是從減少數據拷貝入手來減少網絡通信主機側的延遲[9].MPI目前支持通過socket進行通信,但由于API采用non-block通信,因此上述方案中的vSocket必須通過數據拷貝來確保應用數據能在用戶傳輸函數調用結束后依然可用,滿足用戶數據傳輸的需求.然而在MPI中,應用數據在傳輸函數調用結束后并不能直接回收使用,需要用戶顯式的調用buffer回收接口,因此MPI不需要采用像vSocket一樣通過拷貝應用數據來確保數據被可靠傳輸.

本文借鑒vSocket的連接虛擬化思想,提出了在虛擬機環境下優化MPI/RDMA數據傳輸延遲的通信方案VMPI,可滿足云環境對流量管理的要求,同時實現了數據路徑上的零拷貝傳輸,進一步降低了MPI通信中端到端的通信延遲.實驗表明,VMPI可將MPI的點對點通信延遲減少40%左右,并可降低Graph500的通信時間占比.

2 基礎知識

2.1 消息傳遞接口MPI

MPI是一種基于消息傳遞的編程接口,該接口目前已有OpenMPI、MVAPICH、IntelMPI等多種實現版本.為兼容不同的底層網絡,MPI庫在物理網絡上實現了一個設備抽象層,用以提供與底層網絡無關的統一接口;同時,MPI庫針對不同的網絡平臺實現了不同的通信模塊,以提供最佳的通信延遲.設備抽象層上面是一個通道層,不同進程之間的通信抽象為一個通道,消息在通道中傳輸.在通道層之上提供各種通信函數,如點對點通信、群集通信等.

2.2 半虛擬化與virtio

半虛擬化由于同時具備良好的性能以及能夠對虛擬網絡流量進行精細的管理,在云計算中被廣泛使用.半虛擬化由運行在客戶機中的前端和運行在宿主機上的后端驅動組成.前端驅動將Guest OS的I/O請求發送給后端,后端通過物理設備實現I/O操作,并將請求結果通知前端.

由IBM于2008年提出的virtio[10]半虛擬化前后端通信協議已成為I/O設備半虛擬化的應用標準.virtio是對一組通用I/O設備的抽象,包括前端驅動、后端驅動以及用于前后端通信的虛擬隊列(virtqueue).通過半虛擬化網絡I/O,實現了前后端驅動分離,方便了虛擬機遷移,同時宿主機通過后端驅動可以監管客戶機網絡流量,也方便實施租戶網絡隔離、網絡安全監控等.

2.3 遠程直接內存訪問RDMA

RDMA是一種新興的網絡通信技術,它的特點是遠程直接內存訪問功能.RDMA技術最早出現在高性能計算中的Infiniband網絡,用于高性能計算集群內部計算節點的高速互聯,這種Infiniband網絡性能優良,但網卡和交換機的價格都非常昂貴.后來出現了基于以太網的RDMA技術RoCE,這一技術使得RDMA技術在許多數據中心得到普及.

RDMA通過verbs軟件庫向應用提供編程接口.Verbs支持兩種消息傳輸模式:單邊模式和雙邊模式.單邊模式可以直接對遠端內存進行讀寫等操作,只需發起讀寫指令一端的CPU參與,不需要遠端機器的CPU參與,因而能有效的減少網絡IO對CPU資源的消耗,同時也具有很低的延遲和很高的帶寬.雙邊模式包括發送、接收等操作,需要雙方的CPU參與,接收端準備好接收數據所需的內存,通過發送端的發送操作將數據寫入到接收端提供的的用于接收數據的內存塊中來完成一次數據傳輸.

在使用RDMA進行通信時,應用需要首先通過RNIC對需要發送的數據塊進行注冊,注冊的本質是將該內存塊對應虛擬地址與物理地址的映射關系同步給RDMA網絡設備,以便RDMA設備能夠通過DMA繞過CPU直接讀取數據,提高RDMA網絡設備的IO效率,同時被注冊的內存塊也會被設置為不可置換頁(不會被操作系統交換到磁盤上),防止頁置換引發數據讀取錯誤.可見注冊內存塊是一個高開銷的操作[11].

RDMA的通信模式不同于socket的字節流通信模型,其通信模型是基于消息的傳輸模型.當應用需要和遠端應用通信時,它們之間創建一條邏輯上的消息隊列.該消息隊列由一個發送隊列(SQ)和一個接收隊列(RQ)組成的隊列對(Queue Pairs,QP),讀/寫或收/發請求被封裝成工作請求項放到相應的隊列中.每個隊列還關聯一個完成隊列(CQ),用于通知相應隊列中的請求已處理完成[12].

2.4 vSocket

考慮到公有云環境對網絡的特殊需要,以及應用對網絡的高性能的追求,vSocket提出了一個可行的解決方案.該方案通過傳統的socket接口為應用提供網絡通信,同時在虛擬化后端利用高性能的RDMA網絡設備為應用提供高性能的網絡傳輸服務.該方案的基本思想是網絡連接虛擬化,即不再采用半虛擬化的方法對RDMA網絡設備進行IO虛擬化,而是通過RDMA連接來模擬傳統的socket應用中的TCP連接.一條虛擬連接與一條TCP連接提供數據報文的轉發服務,每條虛擬連接都通過一個物理的RDMA連接傳輸數據.同時為了兼顧公有云環境網絡連接的管理需要,vSocket采用了控制路徑和數據路徑分離的方法,控制路徑通過virtio-net半虛擬化框架,通過virtio-net客戶機可以在網絡創建階段執行連接控制策略;當需要傳輸數據時,網絡連接被虛擬連接接管,數據傳輸繞過內核協議棧通過特別設計的virtio消息通道進行數據傳輸.

在具體實現上,vSocket實現了一個截獲模塊,虛擬機發出的所有socket函數調用都會被該模塊攔截.位于虛擬機機中的前端模塊,用于將攔截到的socket請求通過virtio通信框架傳輸給后端模塊.后端模塊則負責根據前端發來的控制消息或者數據報文做出相對應的處理,完成一次完整的數據傳輸操作.

3 VMPI的設計與實現

3.1 VMPI的總體結構

本文提出在虛擬機環境下優化MPI/RDMA傳輸延遲的通信方案VMPI.VMPI的設計目標是既能夠滿足云環境對虛擬機網絡管控的需求,同時又能提供高性能的網絡通信,這與vSocket的設計目標一致.因此,我們借鑒vSocket的系統框架,保留其連接虛擬化、控制路徑和數據路徑相分離的先進設計,通過改造數據路徑來優化對MPI編程接口的支持,為基于MPI的高性能計算提供最佳的通信性能.

在vSocket的系統框架上,VMPI需要做兩方面的改造.首先,socket接口與MPI接口差異較大,需要重新設計截獲層;其次,要實現數據路徑上的零拷貝,這也是VMPI的設計重點.

在數據路徑上,應用需要通過verbs接口為待發送的數據提前進行注冊,而內存注冊會引入系統調用進而帶來不必要的延遲.所以RDMA應用通常在程序初始化階段預先準備一塊內存池,對這塊內存池做一次性的注冊,后續需要傳輸的數據可以拷貝到這塊內存中之后,再進行發送,這樣就避免了頻繁的內存注冊操作.這種方式能在一定程度上解決內存注冊所帶來的延遲開銷,其弊端在于引入了內存拷貝帶來的延遲增大,特別是在待傳輸的數據為比較大的數據塊時,拷貝帶來的開銷就更加顯著.考慮到內存注冊和內存拷貝這兩部分的延遲開銷,VMP在數據路徑的設計上需要同時權衡這兩方面.由于內存注冊時間不會隨著注冊內存塊的增大而線性增長,而內存拷貝時間卻與內存塊大小成線性增長關系.通過以上分析,可以總結出以下規律,小消息的注冊開銷對通信延遲的影響較大,而大消息的拷貝開銷對通信延遲的影響較大.基于這種規律,VMPI選擇對不同大小的消息采用不同的處理方法.消息大小小于一定閾值的消息(小消息)先拷貝到預先分配和注冊好的通用消息池中,再進行傳輸.消息大小大于一定閾值的消息(大消息)則采用零拷貝傳輸,即在需要傳輸之前進行注冊.另外,考慮到部分應用為了優化內存注冊所帶來的延遲開銷通常會在初始化階段分配好通信需要的緩存區,然后在進行數據傳輸時會盡量重用這些緩存區,因此VMPI在后端模塊中設計了一個注冊緩存系統,將完成大消息傳輸的緩存區的相關地址信息記錄在緩存系統中,當該緩存區被用于下一次消息傳輸時,通過查詢注冊緩沖中的一些地址信息就可以復用已經注冊過的內存,避免了不必要的內存注冊開銷.

圖1是VMPI的總體結構,包括截獲層、前端、后端3個部分,前端和后端之間利用virtio框架進行通信.截獲層用于攔截與MPI通信相關的函數調用.在控制路徑上,截獲的MPI初始化連接請求被轉換通過基于內核協議棧的virtio-net模塊建立的網絡連接,同時,VMPI會在前端和后端之間建立一個對應的虛擬連接,虛擬連接并沒有實際的網絡連接,本質上是用于記錄虛擬機中應用網絡連接的數據.在前端模塊中使用<目的IP地址,目的端口號,源IP地址,源端口號>四元組記錄該虛擬連接,后端模塊使用上述四元組外加租戶IP來標識虛擬連接,添加租戶ID是考慮到在公有云環境中同一個宿主機上可能存在IP相同的客戶機.因此,為了標識宿主機上的不同虛擬機,后端添加了租戶ID字段.在數據路徑上,與消息傳輸相關的函數被轉發到前端.前端接收虛擬機需要傳輸的消息,根據元數據(緩存區地址、消息長度等)中的消息長度確定使用大消息路徑還是小消息路徑,之后將其元數據通過virtio轉發到后端.后端從應用緩存區(大消息)或通用消息池(小消息)中取出消息,通過RDMA連接轉發出去.

圖1 VMPI總體結構Fig.1 VMPI architecture

3.2 連接建立過程

VMPI的通信連接在邏輯上包括兩部分,其一是通過內核協議棧建立的一個基于virtio-net的傳統socket連接(控制路徑),這條網絡連接的作用是為虛擬機或者宿主機能夠對虛擬機中的網絡連接提供訪問控制;其二是為該socket連接構造的虛擬連接.后端針對每一個虛擬連接對象在宿主機中映射到一個RDMA連接,為虛擬連接網絡通信服務.

在宿主機中建立RDMA連接時,需要知道兩端宿主機的IP地址.因此需要一個機制用來交換通信雙方宿主機的IP地址.VMPI采用的具體方案是:當VMPI建立連接時,前端通過virtio通知后端虛擬機請求創建一個網絡連接,后端需要建立對應的RDMA連接用來提供流量轉發;然而RDMA網絡連接的建立需要知道對端的IP地址,后端目前沒有這一信息,所以宿主機此時無法立即建立RDMA連接.因此,后端通知前端自己需要知道對端宿主機的IP地址,前端在收到后端的這一請求后,通過之前同對端已經建立好的網絡連接請求對端的宿主機IP并通知對端自己所在宿主機的IP地址,在得到另一端宿主機的IP地址后通告給后端;此后后端才可以根據兩端宿主機的IP地址建立RDMA連接.具體建立連接的算法如算法1所示.

算法1.VMPI建立連接算法

輸入:<源IP地址,源端口號,目的IP地址,目的端口號>,簡記為conn;

輸出:true:成功;false:失敗;

Begin:

Step1.MPI_init(conn);//MPI初始化連接.

Intercept(conn);//截獲該調用.

Transfer-front(conn);//轉發到前端.

Step2.Table[num++]=conn;//前端記錄該連接.

sock=Create_socket(conn);

//通過內核協議棧建立socket連接.

Step3.Get_host_ip(HIP);

//向后端請求獲取宿主機IP記為HIP.

Step4.Swap_IP(sock,HIP,tmp_IP);

//通過建立的socket與另一端交換HIP,并

//將遠端IP記為tmp_IP.

Step5.Transfer-back(conn,tmp_IP);

//前端將連接信息轉發到后端

Step6.rdma_conn=search(tmp_IP)

If(!rdma_conn){

rdma_conn=Create_rdma(tmp_IP);

//檢查是否已存在對應的rdma連接,如果沒有則重//新建立,并記錄為rdma-conn.

If(!result)

Map(conn,rdma_conn);

//將虛擬連接映射到物理RDMA連接上.

}

Step7.Return result;//返回結果.

End

3.3 消息傳輸過程

由于MPI應用運行在虛擬機OS中,所以MPI應用程序中的消息的地址是虛擬機操作系統中的虛擬地址GVA(guest virtual address).然而后端數據轉發進程將緩存區中的數據經過網絡設備傳輸時,需要將其轉化為其在后端進程中的虛擬地址HVA(host virtual address),因此VMPI需要維護GVA到HVA的映射關系,這樣才能完成地址轉換.

VMPI設計了以下機制用來維護GVA到HVA的的映射關系:虛擬化平臺通常將虛擬機作為一個單獨的進程運行.而虛擬機中運行的進程通過虛擬機OS自身的頁表維護GVA到GPA的地址轉換關系,這與普通的OS一致,可以將這個映射關系簡記為f1(GVA,GPA).另外,虛擬化平臺通過擴展頁表(EPT)記錄虛擬機硬件地址GPA(guest physical address)到宿主機硬件地址HPA(host physical address)的映射關系,簡記為f2(GPA,HPA).而在Virtio框架中會維護每個GPA到HVA的映射關系,簡記為f3(GPA,HVA).通過上述的3個信息,VMPI可以掌握GVA到HVA的地址映射關系,從而完成MPI應用中的消息緩存區地址(GVA)到后端進程中的虛擬地址(HVA)的轉化工作.具體實現時,f1和f2分別由客戶機OS、VMM自動完成,不需要干涉,而f3則由VMPI通過第三方庫DPDK-vhost實現.

VMPI傳輸消息的過程如下:

步驟1.截獲層將攔截的MPI數據傳輸請求轉發到前端,轉發給前端的信息包括數據在客戶機中的虛擬地址(GVA)、數據大小(size)和虛擬連接信息(vconn);前端依據客戶機中的頁表信息,將GVA轉換為GPA,將三元組轉換為;

步驟2.前端將三元組放入virtio發送隊列,并根據size選擇消息傳輸路徑;如果size小于預先設置的閾值,使用小消息傳輸路徑,如果size大于預先設置的閾值,使用大消息傳輸路徑,之后將三元組放到virtqueue中;

步驟3.后端掃描virtqueue中的三元組,將其中的緩存區GPA地址轉換為宿主機HVA地址,生成新的三元組;

步驟4.后端根據vconn以及虛擬連接和物理連接之間的映射關系,找到對應的RDMA連接,將緩存區中的內容發送出去.

VMPI采用send、receive接口傳輸內存地址、內存大小等元數據,采用RDMA write接口傳輸內存數據.這兩個過程存在依賴關系,因為通信的雙發只有知道了需要傳輸的內存信息,才能將需要傳輸的內存通過RDMA傳輸出去.VMPI設計了一組協議來協調上述的兩個過程進行數據傳輸.圖2是一次數據傳輸的交互過程:

圖2 一次數據傳輸的交互過程Fig.2 Interactive process of a data transmission

1)接收端通過注冊緩存系統準備好接收緩存區后,使用send接口向發送端發送一個srcAvail包,通知發送端接收緩存區已準備完畢.srcAvail中包含接收緩存區地址、接收緩存區的rkey值、虛擬連接的四元組信息以及租戶id等信息.

2)發送端使用receive接口收到srcAvail包后,等待對應發送緩存區通過注冊緩存系統準備完成后,通過RDMA write來完成數據的傳輸操作.

3)發送端等待write操作完成后,使用send 接口發送compl包告知接收端傳輸完成;接收端使用receive接口收到compl包,之后MPI send函數返回.一次數據傳輸操作完成.

3.4 注冊緩存系統

注冊緩存系統用于緩存那些在大消息傳輸時已注冊并使用過的緩存區,以便下次可以直接重用,避免頻繁進行注冊.為向RNIC注冊一個緩存區,首先將send、receive等函數中的緩存區虛擬地址(GVA)轉換為后端進程地址空間中的地址(HVA),然后后端將這塊緩存區向RNIC注冊,得到返回的一個rkey,最后將該緩存區的三元組記錄到一個數組中,這樣就完成了緩存區注冊的過程.VMPI對主機上的每一個虛擬機維護一個這樣的注冊緩存區數組,每當決定對一個消息進行零拷貝傳輸時,首先檢查該消息緩存區是否已在注冊緩存區數組中,若存在就直接使用三元組記錄中的rkey進行消息傳輸.然而,隨著越來越多的緩存區被注冊和緩存,注冊緩存系統將出現空間不足.為此,VMPI采用LRU算法實現回收機制,對已注冊的部分緩存區解除注冊.LRU(Least Recently Used,最近最少使用)緩存算法根據數據最近被訪問的情況來進行淘汰數據.

4 實驗評估

4.1 實驗環境

本節評估VMPI的通信性能.服務器A配有Intel E5-2650 CPU/64GB內存,服務器B配有Intel E5-2630 CPU/32GB內存,兩臺服務器通過40Gbps RDMA網卡直接相連,網卡型號為Mellanox ConnectX-3 40G QDR infiniband.兩臺服務器均運行Ubuntu14.04操作系統,verbs庫使用OFED-3.4.測試時,兩臺物理機上各運行一個虛擬機,用于測試的應用程序運行在虛擬機中.本節設計了兩組實驗,第1組使用微基準測試程序測量VMPI的通信延遲,第2組使用Graph500作為MPI應用,通過對比測試驗證VMPI對MPI應用的通信性能是否有優化效果.Graph500是高性能計算領域可信度較高的基準測試程序,該程序的核心部分是圖算法中的廣度優先搜索算法和單源最短路徑算法.

4.2 微基準性能測試

這一部分的實驗是VMPI在有拷貝和無拷貝兩種機制下的延遲對比實驗.第1組實驗中采用拷貝機制,第2組實驗采用無拷貝機制.測量指標是一次數據傳輸的往返時間RTT(round trip time).實驗中設置消息大小從2B到54KB不等.對于每一種消息長度,利用MPI receive和 MPI send收發消息.對于每一種消息長度,測量1000次RTT,并計算平均RTT值.

兩組實驗的測試結果如圖3所示,橫坐標為消息長度,縱坐標為RTT值.從圖3中可以看到,當消息長度小于2KB,零拷貝組的RTT值略大,說明這時注冊開銷大于拷貝開銷.隨后拷貝組的RTT值開始大于零拷貝組,但是兩者之間的差值并不大,說明拷貝開銷開始對通信延遲的產生影響.當消息長度大于40KB時,隨著消息增大,兩者之間的差值也在增大,此時零拷貝組的延遲卻并沒有大幅增加.可以發現,在大消息傳輸時,相比于拷貝組,通信延遲的降幅可以達到40%左右.這組實驗說明,當傳輸大消息時,零拷貝具有降低通信延遲的效果.

圖3 有拷貝和無拷貝情形下的往返延遲Fig.3 Round trip time with/without data copy

4.3 應用性能測試

本節在3個平臺上通過Grapha500進行對比測試實驗:1)物理機環境,Graph500應用運行在宿主機中,直接使用RDMA網絡設備;2)graph500運行在虛擬機中,虛擬機使用傳統的virtio半虛擬化的RDMA網絡設備;3)本文提出并實現的VMPI環境,消息的閾值設為40KB.Graph500應用程序運行時包括2個參數,scale值用來表示圖的頂點規模,edge factor表示圖的邊規模.實驗時edge factor采用了8和16兩個值.Scale采用10,15,20三個值.實驗采用交叉組合測的方法,利用perf工具統計MPI應用在一次完整的運行過程中調用MPI接口通信的時間在Graph500整個運行時間中所占的比例,實驗結果如圖4所示.

圖4 graph500的通信時間占比Fig.4 Proportion of communication time on graph500

從圖4中的實驗結果可以發現,物理機平臺下通信時間占比最小,這是因為物理機環境沒有引入虛擬化所帶來的通信延遲開銷.相比于以太網模式的半虛擬化方案,VMPI平臺可使Graph500的通信時間占比降低10%~30%.這組實驗說明,VMPI可以有效降低MPI應用的通信時間占比,VMPI的方案具有一定的延遲優化效果.

5 總 結

為支持高性能計算向云環境遷移,本文提出了MPI/RDMA庫在虛擬機環境下的通信優化方案VMPI,重點解決了數據路徑上的零拷貝傳輸問題.VMPI采用控制路徑和數據路徑相分離的技術,控制路徑滿足云環境對虛擬機網絡的管控要求,數據路徑實現高效率數據傳輸.為平衡數據拷貝和內存注冊的開銷,VMPI對小消息采用拷貝傳輸,對大消息采用零拷貝傳輸.為分攤內存注冊開銷,VMPI設計了注冊緩存系統來重用已經注冊過的緩存區.使用微基準測試程序和Graph500應用基準測試程序的實驗表明,VMPI可以有效提高MPI的通信性能.

主站蜘蛛池模板: 18禁黄无遮挡免费动漫网站| 永久成人无码激情视频免费| www.日韩三级| 国产成人资源| 国产精品人成在线播放| 国产乱人免费视频| P尤物久久99国产综合精品| 91色爱欧美精品www| 欧美人与牲动交a欧美精品| 亚洲精品卡2卡3卡4卡5卡区| 成人精品在线观看| 精品无码日韩国产不卡av | 久久超级碰| av天堂最新版在线| 久久国产精品影院| 精品视频在线一区| 亚洲AV无码不卡无码| 久久成人国产精品免费软件| 国产主播在线观看| 久久国产高清视频| 日本亚洲成高清一区二区三区| 在线免费a视频| 成人午夜视频网站| 婷婷午夜影院| 色综合天天娱乐综合网| 国产成人午夜福利免费无码r| 国产日本视频91| 国产成人亚洲精品蜜芽影院| 亚洲一级毛片免费观看| 色偷偷一区| 偷拍久久网| 日本道综合一本久久久88| 真实国产乱子伦高清| 亚洲无码熟妇人妻AV在线| 中文字幕第4页| 亚洲国产成人自拍| 免费高清毛片| 久久综合丝袜长腿丝袜| 永久在线播放| 久久精品只有这里有| 日韩无码真实干出血视频| 99热国产这里只有精品9九| 欧美高清国产| 激情国产精品一区| 日本免费新一区视频| 欧美激情成人网| 亚洲国产成人综合精品2020| 亚洲av无码牛牛影视在线二区| 第九色区aⅴ天堂久久香| www.精品国产| 国产系列在线| 成人亚洲国产| 无码专区国产精品一区| 亚洲视频无码| 麻豆AV网站免费进入| 亚洲成人动漫在线| 国产女人在线视频| 亚洲va欧美va国产综合下载| 啊嗯不日本网站| 亚洲精品黄| 成人午夜视频网站| 亚洲av日韩综合一区尤物| 伊人福利视频| 91麻豆国产视频| 99无码熟妇丰满人妻啪啪| 欧美一级大片在线观看| 国产呦精品一区二区三区下载| 第一区免费在线观看| 永久免费精品视频| 人妻熟妇日韩AV在线播放| 免费观看成人久久网免费观看| 8090成人午夜精品| 国产在线一区二区视频| 中文字幕第4页| 日韩在线欧美在线| 国产白浆在线| 国产第一页免费浮力影院| 亚洲国产精品成人久久综合影院 | 精品国产一区二区三区在线观看| 中文字幕啪啪| 1024你懂的国产精品| 怡红院美国分院一区二区|