本發(fā)明專利技術(shù)公開(kāi)了一種虛擬機(jī)過(guò)度分配環(huán)境下的MPI消息接收方法,其過(guò)程為:阻塞接收進(jìn)程輪詢套接字文件描述符集或者共享內(nèi)存,該阻塞式消息接收進(jìn)程調(diào)用sched_yield函數(shù),釋放該進(jìn)程當(dāng)前所占有的虛擬處理器資源;該虛擬處理器所屬的虛擬機(jī)中的用戶操作系統(tǒng)查詢?cè)撎摂M處理器的運(yùn)行隊(duì)列,選擇一個(gè)可以調(diào)度的進(jìn)程調(diào)度運(yùn)行;該阻塞式消息接收進(jìn)程再次被調(diào)度執(zhí)行時(shí),判斷是否需要通知虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作;該阻塞式消息接收進(jìn)程通過(guò)超級(jí)調(diào)用通知虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作;虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作,阻塞接收進(jìn)程處理接收到的消息。本發(fā)明專利技術(shù)可以減少因MPI庫(kù)消息接收機(jī)制產(chǎn)生“忙等”現(xiàn)象引起的性能損耗。
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)屬于虛擬機(jī)環(huán)境下的MPI (Message Passing Interface)通信
, 具體來(lái)說(shuō)就是提出了一種改善MPI并行程序在虛擬機(jī)過(guò)度分配環(huán)境下的通信性能的方法。
技術(shù)介紹
自從虛擬化技術(shù)復(fù)興以后,基于其上的軟件技術(shù)逐漸成為一個(gè)重要的研究領(lǐng)域。 如今,利用虛擬化技術(shù)構(gòu)建高性能計(jì)算應(yīng)用所需的運(yùn)行環(huán)境正成為一種流行趨勢(shì)。在眾多 的虛擬化技術(shù)中,由于Xen允許多臺(tái)虛擬處理器同時(shí)運(yùn)行在一臺(tái)物理處理器上且系統(tǒng)開(kāi)銷 較小,因此應(yīng)用較為廣泛。本方法所采用的實(shí)驗(yàn)平臺(tái)就是Xen。同傳統(tǒng)計(jì)算模式相比,虛擬化技術(shù)的出現(xiàn)帶來(lái)了許多好處。比如資源聚合,降低能 耗,處理機(jī)器失效,改善程序移植性,還可以協(xié)助調(diào)試復(fù)雜的程序代碼等。在虛擬化技術(shù)中, 為了更好的復(fù)用系統(tǒng)底層物理資源,物理處理器封裝并虛擬出多個(gè)虛擬處理器,通過(guò)調(diào)用 虛擬處理器到物理處理器上,Xen創(chuàng)造出一臺(tái)物理機(jī)上共存多個(gè)操作系統(tǒng)的假象。在虛擬機(jī)計(jì)算模式中,同時(shí)存在兩種調(diào)度機(jī)制在用戶操作系統(tǒng)中,操作系統(tǒng)將應(yīng) 用進(jìn)程調(diào)度到虛擬處理器上;在虛擬化層中,虛擬機(jī)管理器將虛擬處理器調(diào)度到物理處理 器上運(yùn)行。然而,在現(xiàn)今的虛擬機(jī)體系結(jié)構(gòu)中,這兩種調(diào)度機(jī)制是相互獨(dú)立執(zhí)行的。這在一 定程度上影響了那些需要通過(guò)MPI進(jìn)行通信的高性能計(jì)算負(fù)載的性能。這種負(fù)面影響在虛 擬機(jī)過(guò)度分配(即一個(gè)物理處理器上分配了不止一個(gè)虛擬處理器)的情況下顯得更為突出。通過(guò)分析和實(shí)驗(yàn)得知,在過(guò)度分配虛擬機(jī)環(huán)境下,通過(guò)MPI進(jìn)行通信會(huì)帶來(lái)一些 性能損耗,這些損耗主要來(lái)自于MPI消息接收機(jī)制中的“忙等”現(xiàn)象。MPI的消息接收機(jī)制 如下對(duì)于阻塞式接收操作,MPI庫(kù)會(huì)不斷的輪詢套接字文件描述符集或者共享內(nèi)存直到 接收到所需數(shù)據(jù)已到達(dá)的消息。在這個(gè)過(guò)程中,該消息接收機(jī)制并不會(huì)使持有阻塞式消息 接收進(jìn)程的虛擬處理器進(jìn)入阻塞狀態(tài),相反它會(huì)使該虛擬處理器一直運(yùn)行直到當(dāng)前時(shí)間片 結(jié)束,這樣就產(chǎn)生了所謂的“忙等”現(xiàn)象,即該阻塞式消息接收進(jìn)程一直等待接收所需數(shù)據(jù) 已到達(dá)的消息。這種“忙等”現(xiàn)象會(huì)浪費(fèi)較多的處理器資源。為了解決這個(gè)問(wèn)題,MPI使用 了一種基于閾值的高效機(jī)制,具體方法為若阻塞式消息接收進(jìn)程在輪詢預(yù)定義的次數(shù)后仍 未接收到所需數(shù)據(jù)已到達(dá)的消息就得通過(guò)在用戶操作系統(tǒng)中進(jìn)行系統(tǒng)調(diào)用以放棄該進(jìn)程 所占用的處理器資源。根據(jù)實(shí)驗(yàn)我們發(fā)現(xiàn),在過(guò)量分配虛擬處理器系統(tǒng)下,該機(jī)制并不能有 效的改善高性能計(jì)算負(fù)載下的MPI通信性能。
技術(shù)實(shí)現(xiàn)思路
本專利技術(shù)的目的是提供一種虛擬機(jī)過(guò)度分配環(huán)境下的MPI消息接收方法。該方法獨(dú) 立于虛擬機(jī)層調(diào)度機(jī)制,通過(guò)修改MPI庫(kù)中的消息接收機(jī)制,使虛擬機(jī)環(huán)境下兩種調(diào)度機(jī) 制即用戶操作系統(tǒng)調(diào)度進(jìn)程到虛擬處理器和虛擬機(jī)管理器調(diào)度虛擬處理器到物理處理器 相互協(xié)作來(lái)提高系統(tǒng)性能。本專利技術(shù)提供的一種虛擬機(jī)過(guò)度分配環(huán)境下的MPI消息接收方法包括下述步驟第丄步令t = 0,t為輪詢次數(shù);第2步阻塞式消息接收進(jìn)程輪詢套接字文件描述符集或者共享內(nèi)存,若接收到所需 數(shù)據(jù)已到達(dá)的消息則轉(zhuǎn)第10步,否則令t = t + 1,然后進(jìn)入第3步;第3步判斷t > T是否成立,T為預(yù)定義的最大輪詢次數(shù),如果成立,則令t = 0后轉(zhuǎn) 第4步,否則轉(zhuǎn)第2步;第4步所述接收進(jìn)程調(diào)用schecLyield函數(shù),釋放該進(jìn)程當(dāng)前所占有的虛擬處理器資 源,記錄此時(shí)時(shí)間,記為tl ;第5步所述虛擬處理器所屬的虛擬機(jī)中的用戶操作系統(tǒng)查詢?cè)撎摂M處理器的運(yùn)行隊(duì) 列,選擇一個(gè)可以調(diào)度的進(jìn)程調(diào)度運(yùn)行;第6步所述接收進(jìn)程再次被調(diào)度執(zhí)行時(shí),記錄此時(shí)時(shí)間,記為t2; 第7步判斷t2與tl的差值是否小于預(yù)先設(shè)定的閾值,如果是,轉(zhuǎn)第8步,否則轉(zhuǎn)第2止少;第8步所述接收進(jìn)程通過(guò)超級(jí)調(diào)用hypercall通知虛擬機(jī)管理器,通知其執(zhí)行虛擬處 理器的重新調(diào)度操作;第9步虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作; 第10步所述阻塞接收進(jìn)程處理接收到的消息。本專利技術(shù)方法在虛擬機(jī)過(guò)度分配環(huán)境下利用了用戶操作系統(tǒng)和虛擬化層中兩種不 同的調(diào)度機(jī)制相互合作提高了 MPI通信性能。本專利技術(shù)通知適時(shí)將用戶操作系統(tǒng)中的調(diào)度信 息報(bào)告給虛擬機(jī)管理器以通知虛擬機(jī)管理器重新調(diào)度虛擬處理器的方法來(lái)減少因MPI庫(kù) 消息接收機(jī)制產(chǎn)生的“忙等”現(xiàn)象而引起的性能損耗。具體而言,本專利技術(shù)方法具有以下優(yōu)點(diǎn) 或用途(1)系統(tǒng)性能的提高本專利技術(shù)在Xen虛擬環(huán)境下,與原始的MPI庫(kù)相比較,采用credit調(diào)度算法時(shí),能夠?qū)⑿?能提高700倍,采用SEDF調(diào)度算法時(shí),性能可以提高4倍。在過(guò)度分配環(huán)境下,根據(jù)通信模 式以及過(guò)度分配嚴(yán)重性等不同因素,我們的方案可以將性能提高到不同的程度。(2)為改進(jìn)虛擬機(jī)管理器中的調(diào)度算法提供了便捷性和適用性本專利技術(shù)不依賴于虛擬機(jī)管理器中特定的調(diào)度算法,為以后虛擬機(jī)管理器中調(diào)度算法的 改進(jìn)提供了便捷性和適用性。附圖說(shuō)明圖1為本專利技術(shù)方法的流程圖2為本專利技術(shù)在credit算法下的實(shí)例圖; 圖3為本專利技術(shù)在SEDF算法下的實(shí)例圖。具體實(shí)施例方式下面結(jié)合附圖和實(shí)例對(duì)本專利技術(shù)方法作進(jìn)一步詳細(xì)地說(shuō)明。如圖1所示,本專利技術(shù)修改了 MPI庫(kù)中的消息接收機(jī)制,即阻塞式消息接收進(jìn)程等待 接收所需數(shù)據(jù)已到達(dá)的消息時(shí)的流程,具體實(shí)施步驟如下(1)令t = o,t為輪詢次數(shù);4(2)阻塞式消息接收進(jìn)程輪詢套接字文件描述符集或者共享內(nèi)存,若接收到所需數(shù)據(jù) 已到達(dá)的消息則轉(zhuǎn)步驟(10),否則令t = t+1;(3)判斷t^ T是否成立,T為預(yù)定義的最大輪詢次數(shù),這個(gè)預(yù)定義次數(shù)是系統(tǒng)自定義 的,比如對(duì)于mpich2-l. 2. 1來(lái)說(shuō)是1000次;如果成立,則令t = 0后轉(zhuǎn)步驟(4),否則轉(zhuǎn)步 驟⑵;(4)該阻塞式消息接收進(jìn)程調(diào)用schecLyield函數(shù),釋放該進(jìn)程當(dāng)前所占有的虛擬處 理器資源,記錄下此時(shí)時(shí)間為tl ;(5)該虛擬處理器所屬的虛擬機(jī)中的用戶操作系統(tǒng)查詢?cè)撎摂M處理器的運(yùn)行隊(duì)列,選 擇一個(gè)可以調(diào)度的進(jìn)程調(diào)度運(yùn)行;(6)該阻塞式消息接收進(jìn)程再次被調(diào)度執(zhí)行時(shí),記錄下此時(shí)時(shí)間為t2;(7)判斷t2_tl<Sched-Gap是否成立,其中Sched-Gap是我們自定義的數(shù)值。如果是 轉(zhuǎn)步驟(8),否則轉(zhuǎn)步驟(2);此處判斷是否通知虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作的方法是在用戶操 作系統(tǒng)中記錄下該阻塞式消息接收進(jìn)程調(diào)用schecLyield函數(shù),釋放虛擬處理器資源的時(shí) 間與該阻塞式消息接收進(jìn)程被再度調(diào)度執(zhí)行時(shí)的時(shí)間間隔,并將這個(gè)間隔與我們自己定義 的一個(gè)閾值(Sched-Gap)相比較。當(dāng)時(shí)間間隔小于Sched-Gap時(shí),判定當(dāng)前進(jìn)程隊(duì)列中只 有該非阻塞式消息接收進(jìn)程一個(gè)可運(yùn)行進(jìn)程,此時(shí)需要通知虛擬機(jī)管理器執(zhí)行虛擬處理器 的重新調(diào)度操作,即該虛擬處理器放棄其所占用的物理處理器資源,由虛擬機(jī)管理器選擇 另一個(gè)合適的虛擬處理器在剛被釋放的物理處理器上運(yùn)行。這是因?yàn)榭紤]到多個(gè)進(jìn)程同時(shí) 運(yùn)行在一個(gè)虛擬處理器上的情況,在這種情況下,并不適宜重調(diào)度整個(gè)虛擬處理器,因?yàn)楫?dāng) 前調(diào)度很有可能正在運(yùn)行一些極其有用的工作。在過(guò)度分配虛擬處理器情況下,被消息接 收阻塞的進(jìn)程一般是該虛擬處理器上唯一一個(gè)運(yùn)行的進(jìn)程,這就意味著我們測(cè)量的時(shí)間間 隔會(huì)非常小,這將會(huì)觸發(fā)虛擬機(jī)管理器的重新調(diào)度操作。我們?cè)谶M(jìn)行一系列的實(shí)驗(yàn)后,將 Sch本文檔來(lái)自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
一種虛擬機(jī)過(guò)度分配環(huán)境下的MPI消息接收方法,該方法包括下述步驟:第1步 令t=0,t為輪詢次數(shù);第2步 阻塞式消息接收進(jìn)程輪詢套接字文件描述符集或者共享內(nèi)存,若接收到所需數(shù)據(jù)已到達(dá)的消息則轉(zhuǎn)第10步,否則令t=t+1,然后進(jìn)入第3步;第3步 判斷t≥T是否成立,T為預(yù)定義的最大輪詢次數(shù),如果成立,則令t=0后轉(zhuǎn)第4步,否則轉(zhuǎn)第2步;第4步 所述接收進(jìn)程調(diào)用sched_yield函數(shù),釋放該進(jìn)程當(dāng)前所占有的虛擬處理器資源,記錄此時(shí)時(shí)間,記為t1;第5步 所述虛擬處理器所屬的虛擬機(jī)中的用戶操作系統(tǒng)查詢?cè)撎摂M處理器的運(yùn)行隊(duì)列,選擇一個(gè)可以調(diào)度的進(jìn)程調(diào)度運(yùn)行;第6步 所述接收進(jìn)程再次被調(diào)度執(zhí)行時(shí),記錄此時(shí)時(shí)間,記為t2;第7步 判斷t2與t1的差值是否小于預(yù)先設(shè)定的閾值,如果是,轉(zhuǎn)第8步,否則轉(zhuǎn)第2步;第8步 所述阻塞式消息接收進(jìn)程通過(guò)超級(jí)調(diào)用hypercall通知虛擬機(jī)管理器,通知其執(zhí)行虛擬處理器的重新調(diào)度操作;第9步 虛擬機(jī)管理器執(zhí)行虛擬處理器的重新調(diào)度操作;第10步 所述阻塞接收進(jìn)程處理接收到的消息。
【技術(shù)特征摘要】
一種虛擬機(jī)過(guò)度分配環(huán)境下的MPI消息接收方法,該方法包括下述步驟第1步 令t=0,t為輪詢次數(shù);第2步 阻塞式消息接收進(jìn)程輪詢套接字文件描述符集或者共享內(nèi)存,若接收到所需數(shù)據(jù)已到達(dá)的消息則轉(zhuǎn)第10步,否則令t=t+1,然后進(jìn)入第3步;第3步 判斷t≥T是否成立,T為預(yù)定義的最大輪詢次數(shù),如果成立,則令t=0后轉(zhuǎn)第4步,否則轉(zhuǎn)第2步;第4步 所述接收進(jìn)程調(diào)用sched_yield函數(shù),釋放該進(jìn)程當(dāng)前所占有的虛擬處理器資源,記錄此時(shí)時(shí)間,記為t1;第5步 ...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:金海,邵志遠(yuǎn),胡侃,王強(qiáng),謝雪嬌,李大江,周文博,
申請(qǐng)(專利權(quán))人:華中科技大學(xué),
類型:發(fā)明
國(guó)別省市:83[中國(guó)|武漢]
還沒(méi)有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。