亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度的方法

文檔序號(hào):6367017閱讀:320來(lái)源:國(guó)知局
專利名稱:一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度的方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,具體涉及一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度的方法。
背景技術(shù)
一直以來(lái),較低的計(jì)算資源利用率是商業(yè)數(shù)據(jù)中心所面臨的一個(gè)難題。一個(gè)商業(yè)數(shù)據(jù)中心服務(wù)器的使用率通常在10%到50%左右。如果一個(gè)商業(yè)數(shù)據(jù)中心被用于運(yùn)行高性能并行程序,計(jì)算資源的使用率將更低,分析其原因,主要是在于下面兩個(gè)現(xiàn)象
1、處理器碎片一個(gè)并行作業(yè)通常需要若干個(gè)處理器來(lái)支撐運(yùn)行,即使等待隊(duì)列中有作業(yè)需要處理,但因?yàn)檫@些空閑處理器的數(shù)量不能滿足由調(diào)度方法對(duì)指定的作業(yè)的處理器 需求,導(dǎo)致這部分處理器依然保持空閑;
2、空閑CPU時(shí)鐘周期即使一個(gè)處理器被某個(gè)作業(yè)占據(jù),由于并行程序本身進(jìn)程間的通信/同步,該處理器的使用率依然無(wú)法達(dá)到100%,例如,采用BSP編程模型的并行程序。較低的計(jì)算資源使用率提高了運(yùn)行高性能程序的成本,同時(shí)降低了支撐高性能計(jì)算程序的數(shù)據(jù)中心的利潤(rùn)。如何合理分配計(jì)算資源以平衡高性能計(jì)算程序的性能和計(jì)算資源的使用率是提供高性能計(jì)算資源的數(shù)據(jù)中心需要考慮的基本問(wèn)題。在高性能計(jì)算領(lǐng)域,研究者們針對(duì)并行作業(yè)的調(diào)度做了很多努力?!跋鹊较确?wù)(FCFS, first come first served) ”是最基本的同時(shí)也是廣泛應(yīng)用的調(diào)度方法。由美國(guó)阿貢國(guó)家實(shí)驗(yàn)室開發(fā)的“回填(EASY Backfilling)”算法在不推遲等待隊(duì)列中頭作業(yè)執(zhí)行的條件下,允許短/小作業(yè)使用當(dāng)前空閑處理器。雖然“回填”算法能夠在很大程度上減少處理器碎片的數(shù)量,但它并沒(méi)有考慮利用并行程序本身帶來(lái)CPU時(shí)鐘浪費(fèi)。Gang調(diào)度方法允許多個(gè)并行作業(yè)同時(shí)共享計(jì)算資源。在Gang調(diào)度方法中,每個(gè)處理器被劃分為幾個(gè)時(shí)間片,進(jìn)程被安排到某處理器的某時(shí)間片上。一個(gè)并行作業(yè)的所有進(jìn)程安排到同一層次的時(shí)間片上,CPU循環(huán)分配到各層時(shí)間片上。這種時(shí)間分片需要操作系統(tǒng)的強(qiáng)力支持。“pair-gang”調(diào)度方法考慮如何部署計(jì)算資源需求互補(bǔ)的進(jìn)程到一個(gè)處理器上,比如某進(jìn)程執(zhí)行I/O操作時(shí),其配對(duì)進(jìn)程則使用CPU,類似的策略也應(yīng)用在云計(jì)算資源加固中。Gang調(diào)度可以在一定程度上提高計(jì)算資源的利用率,但是它拉長(zhǎng)了單個(gè)作業(yè)的執(zhí)行時(shí)間?,F(xiàn)在也有綜合“回填”算法和Gang調(diào)度方法的一些嘗試,但這種嘗試僅僅提高了比較少的性能提高。
不管是“回填”算法還是Gang調(diào)度方法都僅僅考慮了如何減少處理器碎片的數(shù)量,他們都沒(méi)有考慮到并行程序本身帶來(lái)的CPU時(shí)鐘周期浪費(fèi)現(xiàn)象。不管是國(guó)內(nèi)還是國(guó)外,并行作業(yè)調(diào)度方法都沒(méi)有超出“一個(gè)處理器(核)承擔(dān)一個(gè)進(jìn)程”的范疇。綜合國(guó)內(nèi)外研究現(xiàn)狀,并行作業(yè)調(diào)度方法在進(jìn)一步提高計(jì)算資源利用率方面存在很大的不足,尤其是在多核處理器機(jī)虛擬化技術(shù)高度成熟的時(shí)代?!耙粋€(gè)處理器(核)承擔(dān)一個(gè)進(jìn)程”模式導(dǎo)致了較大的計(jì)算資源浪費(fèi)。

發(fā)明內(nèi)容
為了克服上述問(wèn)題,本發(fā)明提出了一種基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,其利用(PU使用優(yōu)先級(jí)差別的處理器虛擬分割方法,引入了作業(yè)嘗試運(yùn)行手段讓部分作業(yè)嘗試運(yùn)行以提高計(jì)算資源利用率,在保證調(diào)度公平性的同時(shí)提高處理器的使用率。本發(fā)明提出的一種基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,其特征在于,把所具有的多個(gè)處理器的每一個(gè)處理器分別分成前景虛擬機(jī)和背景虛擬機(jī),所述前景虛擬機(jī)的CPU權(quán)限設(shè)置為最高優(yōu)先級(jí),所述背景虛擬機(jī)的CPU權(quán)限設(shè)置為最低優(yōu)先級(jí),所述方法包括
(1)當(dāng)一個(gè)新作業(yè)到達(dá)時(shí),執(zhí)行
步驟1,將新到達(dá)的作業(yè)放到等待隊(duì)列的末尾,
步驟2,調(diào)用前景層作業(yè)調(diào)度算法將所有能安排到前景虛擬機(jī)的作業(yè)部署到前景虛擬
機(jī),
步驟3,調(diào)用背景層作業(yè)調(diào)度算法將所有能安排到背景虛擬機(jī)的作業(yè)部署到背景虛擬
機(jī);
(2)當(dāng)一個(gè)前景作業(yè)離開時(shí),僅執(zhí)行上述步驟2和3;
(3)當(dāng)一個(gè)背景作業(yè)離開時(shí),直接執(zhí)行步驟3;
其中所述前景層作業(yè)調(diào)度算法基于先到先服務(wù)的回填算法,并同時(shí)考慮在所述等待隊(duì)列和正在背景虛擬機(jī)中運(yùn)行的作業(yè);所述背景層作業(yè)調(diào)度算法基于最短作業(yè)優(yōu)先算法。進(jìn)一步,所述把所具有的多個(gè)處理器的每一個(gè)處理器分別分成前景虛擬機(jī)和背景虛擬機(jī)具體為直接對(duì)CPU進(jìn)行邏輯劃分或者采用硬件虛擬化技術(shù)進(jìn)行劃分。進(jìn)一步,在所述前景層作業(yè)調(diào)度中,當(dāng)需要調(diào)度一個(gè)正在背景虛擬機(jī)中運(yùn)行的作業(yè)往前景虛擬機(jī)運(yùn)行時(shí),當(dāng)該作業(yè)對(duì)應(yīng)的所有前景虛擬機(jī)都空閑時(shí),對(duì)換兩層虛擬機(jī)的CPU權(quán)限,使得該作業(yè)在原處理器上繼續(xù)執(zhí)行;當(dāng)該作業(yè)對(duì)應(yīng)的部分前景虛擬機(jī)不空閑時(shí),殺死該作業(yè)后在新處理器上重新運(yùn)行該作業(yè)。進(jìn)一步,所述步驟3中的背景層作業(yè)調(diào)度算法包括
步驟31,讓集合Jobs=當(dāng)前等待隊(duì)列中的作業(yè)集合,并將Jobs中的作業(yè)按運(yùn)行時(shí)間從短到長(zhǎng)排序,讓作業(yè)J=排序后的Jobs中的第一個(gè)作業(yè);
步驟32,判斷作業(yè)J的進(jìn)程數(shù)量是否不大于當(dāng)前背景層中空閑虛擬機(jī)的數(shù)量,如果是,則轉(zhuǎn)入步驟33,否則直接轉(zhuǎn)入步驟34 ;
步驟33,調(diào)用作業(yè)部署算法將作業(yè)J部署到背景虛擬機(jī);
步驟34,如果Jobs中存在當(dāng)前作業(yè)J的下一個(gè)作業(yè),則J=下一個(gè)作業(yè),否則J=空作
業(yè);
步驟35,判斷作業(yè)J是否為空作業(yè),如果否,則轉(zhuǎn)入步驟32 ;否則,結(jié)束。進(jìn)一步,所述步驟2中的前景層作業(yè)調(diào)度算法包括
步驟21,讓集合Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集,讓作業(yè)J=Jobs中的第一個(gè)作業(yè);
步驟22,判斷作業(yè)J的進(jìn)程數(shù)量是否不多于當(dāng)前前景層空閑虛擬機(jī)數(shù)量,如果是,則轉(zhuǎn)入步驟221,否則轉(zhuǎn)入步驟23 ; 步驟221,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī);
步驟222,如果Jobs中存在作業(yè)J的下一個(gè)作業(yè),那么讓J=下一個(gè)作業(yè),否則J=空作業(yè);
步驟223,判斷作業(yè)J是否為空作業(yè),如果是,結(jié)束;否則轉(zhuǎn)入步驟22 ;
步驟23,求陰影時(shí)刻TS和額外前景虛擬機(jī)數(shù)量EN :讓Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集,讓作業(yè)J=Jobs中的第一個(gè)作業(yè),讓集合JobsinFg=當(dāng)前前景層中的作業(yè)集合,將JobsinFg中的作業(yè)按預(yù)計(jì)結(jié)束時(shí)間從早到晚排序,遍歷JobsinFg中的作業(yè),收集它們將在未來(lái)釋放的虛擬機(jī)直到某未來(lái)時(shí)刻的空閑前景虛擬機(jī)數(shù)量不小于作業(yè)J的進(jìn)程數(shù)量,則所述未來(lái)時(shí)刻稱之為陰影時(shí)刻TS,若前景層在此未來(lái)時(shí)刻的空閑虛擬機(jī)數(shù)量多于作業(yè)J的進(jìn)程數(shù)量,那么多出來(lái)的數(shù)量為額外前景虛擬機(jī)數(shù)量EN ;
步驟24,判斷當(dāng)前空閑前景虛擬機(jī)數(shù)量是否不小于作業(yè)J的進(jìn)程數(shù)量且作業(yè)J能在陰影時(shí)刻TS前結(jié)束,如果是,則轉(zhuǎn)入步驟241,否則轉(zhuǎn)入步驟25 ; 步驟241,判斷作業(yè)J是否來(lái)自等待隊(duì)列,如果是,則轉(zhuǎn)入步驟244,否則轉(zhuǎn)入步驟242 ;步驟242,判斷作業(yè)J所在處理器的所有前景虛擬機(jī)是否都空閑,如果是,則轉(zhuǎn)入步驟245 ;否則,轉(zhuǎn)入步驟243 ;
步驟243,殺死該作業(yè)J ;
步驟244,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī),并轉(zhuǎn)入步驟26 ;
步驟245,將作業(yè)J所在處理器的前景虛擬機(jī)和背景虛擬機(jī)的CPU權(quán)限互換,并轉(zhuǎn)入步驟26 ;
步驟25,判斷作業(yè)J的進(jìn)程數(shù)量是否既不大于當(dāng)前空閑前景虛擬機(jī)數(shù)量又不大于額外前景虛擬機(jī)數(shù)量EN,如果是,則轉(zhuǎn)入步驟242,否則轉(zhuǎn)入步驟26 ;
步驟26,如果Jobs中存在作業(yè)J的下一個(gè)作業(yè),那么讓J=下一個(gè)作業(yè),否則J=空作
業(yè);
步驟27,判斷作業(yè)J是否為空作業(yè),如果是,則結(jié)束,否則轉(zhuǎn)入步驟24。進(jìn)一步,所述作業(yè)部署算法包括
步驟41,讓作業(yè)Jl=被部署的作業(yè),讓標(biāo)識(shí)flag=作業(yè)Jl即將部署的虛擬機(jī),同時(shí)將作業(yè)Jl中的進(jìn)程按照CPU使用率降序排列;
步驟42,判斷標(biāo)識(shí)flag是否為前景層,如果是,則轉(zhuǎn)入步驟44 ;否則轉(zhuǎn)入步驟43 ;步驟43,將所有的多個(gè)背景虛擬機(jī)按其對(duì)應(yīng)的前景虛擬機(jī)的CPU使用率升序排列,然后將Jl中的進(jìn)程依次部署到排好序的背景虛擬機(jī)中,并結(jié)束流程;
步驟44,將所有的多個(gè)前景虛擬機(jī)按其對(duì)應(yīng)的背景虛擬機(jī)的CPU使用率升序排列,然后將Jl中的進(jìn)程依次部署到排好序的前景虛擬機(jī)中,并結(jié)束流程。經(jīng)過(guò)實(shí)際的計(jì)算環(huán)境測(cè)試證明了兩層虛擬機(jī)劃分架構(gòu)確實(shí)能大大提高處理機(jī)的使用率,與現(xiàn)有的并行作業(yè)調(diào)度算法相比極大地提高了調(diào)度性能,而且本發(fā)明不改變已有并行作業(yè)調(diào)度器的結(jié)構(gòu)即可實(shí)現(xiàn)。


圖I為本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法中當(dāng)一個(gè)新作業(yè)到達(dá)時(shí)的處理流程圖。圖2為本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法中的背景層作業(yè)調(diào)度算法的流程圖。圖3為本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法中的前景層作業(yè)調(diào)度算法的流程圖。 圖4為本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法中的作業(yè)部署方法的流程圖。圖5為本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法中當(dāng)前景虛擬機(jī)作業(yè)離開后的處理流程圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。本發(fā)明提出了一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度方法,其利用并行程序內(nèi)的進(jìn)程不能完整使用一個(gè)處理器的計(jì)算能力這一普遍現(xiàn)象,將所具有的多個(gè)處理器的每一個(gè)都劃分成有CPU使用優(yōu)先級(jí)差別的兩層虛擬CPU以使得每個(gè)處理器能同時(shí)容納兩個(gè)來(lái)自不同作業(yè)的進(jìn)程;將作業(yè)嘗試運(yùn)行這一技術(shù)手段引入作業(yè)調(diào)度過(guò)程;最后基于這種處理器劃分和嘗試運(yùn)行對(duì)現(xiàn)有廣泛使用的并行作業(yè)調(diào)度方法進(jìn)行改進(jìn),提出了一種新的并行作業(yè)調(diào)度方法。首先,說(shuō)明本發(fā)明方法主要涉及的幾個(gè)重要的技術(shù)環(huán)節(jié)
1、硬件虛擬化(可選)
將涉及到的所有計(jì)算資源通過(guò)Xen或者其它硬件虛擬化技術(shù)虛擬化成虛擬計(jì)算資源;
2、處理器的兩層有權(quán)限虛擬劃分
將每個(gè)處理器(核)虛擬化成兩個(gè)虛擬CPU,每個(gè)虛擬CPU分配到兩個(gè)不同的虛擬機(jī)中,然后將其中的一個(gè)虛擬機(jī)的CPU權(quán)限設(shè)置為最高優(yōu)先級(jí),稱之為前景虛擬機(jī);將另外一個(gè)虛擬機(jī)的CPU權(quán)限設(shè)置為最低優(yōu)先級(jí),稱之為背景虛擬機(jī)。這種劃分下,背景虛擬機(jī)只有在前景虛擬機(jī)沒(méi)有CPU需求時(shí)才能使用CPU?;谶@種有優(yōu)先級(jí)差別劃分后,前景虛擬機(jī)中運(yùn)行的進(jìn)程性能和該進(jìn)程獨(dú)占處理器時(shí)相近(少于4%的性能下降);背景虛擬機(jī)中的進(jìn)程能最大程度上的使用前景虛擬機(jī)的剩余CPU周期從而提高計(jì)算資源的利用率;
如果數(shù)據(jù)中心不支持硬件虛擬化,那么可以對(duì)CPU進(jìn)行邏輯劃分。實(shí)際使用過(guò)程中,可以將進(jìn)程直接部署到物理CPU上面,同時(shí)通過(guò)操作系統(tǒng)的進(jìn)程權(quán)限設(shè)置來(lái)實(shí)現(xiàn)進(jìn)程間的(PU權(quán)限差別;
3、作業(yè)嘗試運(yùn)行
在作業(yè)被調(diào)度到前景虛擬機(jī)運(yùn)行前,嘗試先將作業(yè)安排到背景虛擬機(jī)運(yùn)行,當(dāng)這種嘗試違背調(diào)度公平性時(shí),通過(guò)殺死這些作業(yè)來(lái)捍衛(wèi)調(diào)度的公平性。作業(yè)調(diào)度算法決定什么時(shí)候由哪個(gè)作業(yè)嘗試運(yùn)行。本發(fā)明的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法的基本思想為
1、使用基于先到先服務(wù)的回填算法調(diào)度作業(yè)往前景虛擬機(jī)中運(yùn)行,使用最短作業(yè)優(yōu)先算法調(diào)度作業(yè)往背景虛擬機(jī)中運(yùn)行;
2、前景層調(diào)度不僅考慮正在等待隊(duì)列中的作業(yè),同時(shí)也考慮正在背景虛擬機(jī)中運(yùn)行的作業(yè),以保證調(diào)度的公平性;3、當(dāng)調(diào)度一個(gè)正在背景虛擬機(jī)中運(yùn)行的作業(yè)往前景虛擬機(jī)運(yùn)行時(shí),有下面兩種情況當(dāng)所有該作業(yè)對(duì)應(yīng)的前景虛擬機(jī)都空閑時(shí),對(duì)換兩層虛擬機(jī)的CPU權(quán)限,使得該作業(yè)在原處理器上繼續(xù)執(zhí)行;當(dāng)部分該作業(yè)對(duì)應(yīng)的前景虛擬機(jī)不空閑時(shí),殺死該作業(yè)后在新處理器上重新運(yùn)行該作業(yè)。因?yàn)楸尘疤摂M機(jī)使用的是前景層剩余的免費(fèi)CPU時(shí)鐘,相比單層來(lái)講,殺死該作業(yè)并不會(huì)導(dǎo)致計(jì)算資源的浪費(fèi)。下面結(jié)合圖1-5具體說(shuō)明基于兩層虛擬機(jī)的作業(yè)調(diào)度方法。在數(shù)據(jù)中心運(yùn)營(yíng)過(guò)程中,當(dāng)一個(gè)新作業(yè)到達(dá)時(shí)的處理流程如圖I所示,包括
步驟1,將新到達(dá)的作業(yè)放到等待隊(duì)列的末尾;
步驟2,調(diào)用前景層作業(yè)調(diào)度算法將所有能安排到前景虛擬機(jī)的作業(yè)部署到前景虛擬
機(jī);
步驟3,調(diào)用背景層作業(yè)調(diào)度算法將所有能安排到背景虛擬機(jī)的作業(yè)部署到背景虛擬機(jī)。圖2示出了前景層作業(yè)調(diào)度算法的流程圖。具體地,上述步驟2具體步驟包括 步驟21,讓集合Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集,讓作業(yè)
J=Jobs中的第一個(gè)作業(yè);
步驟22,判斷作業(yè)J的進(jìn)程數(shù)量是否不多于當(dāng)前前景層空閑虛擬機(jī)數(shù)量,如果是,則轉(zhuǎn)入步驟221,否則轉(zhuǎn)入步驟23 ;
步驟221,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī);
步驟222,如果Jobs中存在作業(yè)J的下一個(gè)作業(yè),那么讓J=下一個(gè)作業(yè),否則J=空作
業(yè);
步驟223,判斷作業(yè)J是否為空作業(yè),如果是,結(jié)束;否則轉(zhuǎn)入步驟22 ;
步驟23,求陰影時(shí)刻TS和額外前景虛擬機(jī)數(shù)量EN :讓Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集;讓作業(yè)J=Jobs中的第一個(gè)作業(yè);讓集合JobsinFg=當(dāng)前前景層中的作業(yè)集合;將JobsinFg中的作業(yè)按預(yù)計(jì)結(jié)束時(shí)間從早到晚排序;遍歷JobsinFg中的作業(yè),收集它們將在未來(lái)釋放的虛擬機(jī),直到某未來(lái)時(shí)刻的空閑前景虛擬機(jī)數(shù)量不小于作業(yè)J的進(jìn)程數(shù)量,則所述未來(lái)時(shí)刻稱之為陰影時(shí)刻TS,若前景層在此未來(lái)時(shí)刻的空閑虛擬機(jī)數(shù)量多于作業(yè)J的進(jìn)程數(shù)量,那么多出來(lái)的數(shù)量為額外前景虛擬機(jī)數(shù)量EN ;
步驟24,判斷當(dāng)前空閑前景虛擬機(jī)數(shù)量是否不小于作業(yè)J的進(jìn)程數(shù)量且作業(yè)J能在陰影時(shí)刻TS前結(jié)束,如果是,則轉(zhuǎn)入步驟241,否則轉(zhuǎn)入步驟25 ;
步驟241,判斷作業(yè)J是否來(lái)自等待隊(duì)列,如果是,則轉(zhuǎn)入步驟244,否則轉(zhuǎn)入步驟242 ;步驟242,判斷作業(yè)J所在處理器的所有前景虛擬機(jī)是否都空閑,如果是,則轉(zhuǎn)入步驟245 ;否則,轉(zhuǎn)入步驟243 ;
步驟243,殺死該作業(yè)J ;
步驟244,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī),并轉(zhuǎn)入步驟26 ;
步驟245,將作業(yè)J所在處理器的前景虛擬機(jī)和背景虛擬機(jī)的CPU權(quán)限互換,并轉(zhuǎn)入步驟26 ;
步驟25,判斷作業(yè)J的進(jìn)程數(shù)量是否既不大于當(dāng)前空閑前景虛擬機(jī)數(shù)量又不大于額外 前景虛擬機(jī)數(shù)量EN,如果是,則轉(zhuǎn)入步驟242,否則轉(zhuǎn)入步驟26 ;
步驟26,如果Jobs中存在作業(yè)J的下一個(gè)作業(yè),那么讓J=下一個(gè)作業(yè),否則J=空作業(yè);
步驟27,判斷作業(yè)J是否為空作業(yè),如果是,則結(jié)束,否則轉(zhuǎn)入步驟24。圖3示出了背景層 作業(yè)調(diào)度算法的流程圖。具體地,上述步驟3具體步驟包括 步驟31,讓集合Jobs=當(dāng)前等待隊(duì)列中的作業(yè)集合,并將Jobs中的作業(yè)按運(yùn)行時(shí)間從
短到長(zhǎng)排序,讓作業(yè)J=排序后的Jobs中的第一個(gè)作業(yè);
步驟32,判斷作業(yè)J的進(jìn)程數(shù)量是否不大于當(dāng)前背景層中空閑虛擬機(jī)的數(shù)量,如果是,則轉(zhuǎn)入步驟33,否則直接轉(zhuǎn)入步驟34 ;
步驟33,調(diào)用作業(yè)部署算法將作業(yè)J部署到背景虛擬機(jī);
步驟34,如果Jobs中存在當(dāng)前作業(yè)J的下一個(gè)作業(yè),則J=下一個(gè)作業(yè),否則J=空作
業(yè);
步驟35,判斷作業(yè)J是否為空作業(yè),如果否,則轉(zhuǎn)入步驟32 ;否則,結(jié)束。圖4示出了作業(yè)部署算法的流程圖。具體步驟如下
步驟41,讓作業(yè)J=被部署的作業(yè),讓標(biāo)識(shí)flag=作業(yè)J即將部署的虛擬機(jī)(即前景或者背景虛擬機(jī)),同時(shí)將作業(yè)J中的進(jìn)程按照其CPU使用率降序排列;
步驟42,判斷標(biāo)識(shí)flag是否為前景層,如果是,則轉(zhuǎn)入步驟44 ;否則轉(zhuǎn)入步驟43 ;步驟43,將所有的多個(gè)背景虛擬機(jī)按其對(duì)應(yīng)的前景虛擬機(jī)的CPU使用率升序排列,然后將J中的進(jìn)程依次部署到排好序的背景虛擬機(jī)中,并結(jié)束流程;
步驟44,將所有的多個(gè)前景虛擬機(jī)按其對(duì)應(yīng)的背景虛擬機(jī)的CPU使用率升序排列,然后將J中的進(jìn)程依次部署到排好序的前景虛擬機(jī)中,并結(jié)束流程。在數(shù)據(jù)中心運(yùn)營(yíng)過(guò)程中,當(dāng)一個(gè)前景作業(yè)離開時(shí),按照?qǐng)D5所示的流程安排所有可能的作業(yè)到前景/背景虛擬機(jī)中運(yùn)行。在數(shù)據(jù)中心運(yùn)營(yíng)過(guò)程中,當(dāng)一個(gè)背景作業(yè)離開時(shí),直接按照?qǐng)D2所示的流程安排所有可能的作業(yè)到背景虛擬機(jī)中運(yùn)行。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度的方法,其特征在于,把所具有的多個(gè)處理器的每ー個(gè)處理器分別分成前景虛擬機(jī)和背景虛擬機(jī),所述前景虛擬機(jī)的CPU權(quán)限設(shè)置為最高優(yōu)先級(jí),所述背景虛擬機(jī)的CPU權(quán)限設(shè)置為最低優(yōu)先級(jí),所述方法包括 (1)當(dāng)ー個(gè)新作業(yè)到達(dá)時(shí),執(zhí)行 步驟1,將新到達(dá)的作業(yè)放到等待隊(duì)列的末尾, 步驟2,調(diào)用前景層作業(yè)調(diào)度算法將所有能安排到前景虛擬機(jī)的作業(yè)部署到前景虛擬機(jī), 步驟3,調(diào)用背景層作業(yè)調(diào)度算法將所有能安排到背景虛擬機(jī)的作業(yè)部署到背景虛擬機(jī); (2)當(dāng)ー個(gè)前景作業(yè)離開時(shí),僅執(zhí)行上述步驟2和3; (3)當(dāng)ー個(gè)背景作業(yè)離開時(shí),直接執(zhí)行步驟3; 其中所述前景層作業(yè)調(diào)度算法基于先到先服務(wù)的回填算法,并同時(shí)考慮在所述等待隊(duì)列和正在背景虛擬機(jī)中運(yùn)行的作業(yè);所述背景層作業(yè)調(diào)度算法基于最短作業(yè)優(yōu)先算法。
2.根據(jù)權(quán)利要求I所述的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,所述把所具有的多個(gè)處理器的每ー個(gè)處理器分別分成前景虛擬機(jī)和背景虛擬機(jī)具體為直接對(duì)CPU進(jìn)行邏輯劃分或者采用硬件虛擬化技術(shù)進(jìn)行劃分。
3.根據(jù)權(quán)利要求I所述的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,其特征在干,在所述前景層作業(yè)調(diào)度中,當(dāng)需要調(diào)度ー個(gè)正在背景虛擬機(jī)中運(yùn)行的作業(yè)往前景虛擬機(jī)運(yùn)行吋,當(dāng)該作業(yè)對(duì)應(yīng)的所有前景虛擬機(jī)都空閑時(shí),對(duì)換兩層虛擬機(jī)的CPU權(quán)限,使得該作業(yè)在原處理器上繼續(xù)執(zhí)行;當(dāng)該作業(yè)對(duì)應(yīng)的部分前景虛擬機(jī)不空閑時(shí),殺死該作業(yè)后在新處理器上重新運(yùn)行該作業(yè)。
4.根據(jù)權(quán)利要求I所述的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,所述步驟3中的背景層作業(yè)調(diào)度算法包括 步驟31,讓集合Jobs=當(dāng)前等待隊(duì)列中的作業(yè)集合,并將Jobs中的作業(yè)按運(yùn)行時(shí)間從短到長(zhǎng)排序,讓作業(yè)J=排序后的Jobs中的第一個(gè)作業(yè); 步驟32,判斷作業(yè)J的進(jìn)程數(shù)量是否不大于當(dāng)前背景層中空閑虛擬機(jī)的數(shù)量,如果是,則轉(zhuǎn)入步驟33,否則直接轉(zhuǎn)入步驟34 ; 步驟33,調(diào)用作業(yè)部署算法將作業(yè)J部署到背景虛擬機(jī); 步驟34,如果Jobs中存在當(dāng)前作業(yè)J的下一個(gè)作業(yè),則J=下一個(gè)作業(yè),否則J=空作業(yè); 步驟35,判斷作業(yè)J是否為空作業(yè),如果否,則轉(zhuǎn)入步驟32 ;否則,結(jié)束。
5.根據(jù)權(quán)利要求I所述的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,所述步驟3中的前景層作業(yè)調(diào)度算法包括 步驟21,讓集合Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集,讓作業(yè)J=Jobs中的第一個(gè)作業(yè); 步驟22,判斷作業(yè)J的進(jìn)程數(shù)量是否不多于當(dāng)前前景層空閑虛擬機(jī)數(shù)量,如果是,則轉(zhuǎn)入步驟221,否則轉(zhuǎn)入步驟23 ; 步驟221,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī); 步驟222,如果Jobs中存在作業(yè)J的下ー個(gè)作業(yè),那么讓J=下ー個(gè)作業(yè),否則J=空作業(yè); 步驟223,判斷作業(yè)J是否為空作業(yè),如果是,結(jié)束;否則轉(zhuǎn)入步驟22 ; 步驟23,求陰影時(shí)刻TS和額外前景虛擬機(jī)數(shù)量EN :讓Jobs=當(dāng)前等待隊(duì)列中作業(yè)與當(dāng)前背景層中作業(yè)的并集,讓作業(yè)J=Jobs中的第一個(gè)作業(yè),讓集合JobsinFg=當(dāng)前前景層中的作業(yè)集合,將JobsinFg中的作業(yè)按預(yù)計(jì)結(jié)束時(shí)間從早到晚排序,遍歷JobsinFg中的作業(yè),收集它們將在未來(lái)釋放的虛擬機(jī)直到某未來(lái)時(shí)刻的空閑前景虛擬機(jī)數(shù)量不小于作業(yè)J的進(jìn)程數(shù)量,則所述未來(lái)時(shí)刻稱之為陰影時(shí)刻TS,若前景層在此未來(lái)時(shí)刻的空閑虛擬機(jī)數(shù)量多于作業(yè)J的進(jìn)程數(shù)量,那么多出來(lái)的數(shù)量為額外前景虛擬機(jī)數(shù)量EN ; 步驟24,判斷當(dāng)前空閑前景虛擬機(jī)數(shù)量是否不小于作業(yè)J的進(jìn)程數(shù)量且作業(yè)J能在陰影時(shí)刻TS前結(jié)束,如果是,則轉(zhuǎn)入步驟241,否則轉(zhuǎn)入步驟25 ; 步驟241,判斷作業(yè)J是否來(lái)自等待隊(duì)列,如果是,則轉(zhuǎn)入步驟244,否則轉(zhuǎn)入步驟242 ;步驟242,判斷作業(yè)J所在處理器的所有前景虛擬機(jī)是否都空閑,如果是,則轉(zhuǎn)入步驟.245 ;否則,轉(zhuǎn)入步驟243 ; 步驟243,殺死該作業(yè)J ; 步驟244,調(diào)用作業(yè)部署算法將作業(yè)J部署到前景虛擬機(jī),并轉(zhuǎn)入步驟26 ; 步驟245,將作業(yè)J所在處理器的前景虛擬機(jī)和背景虛擬機(jī)的CPU權(quán)限互換,并轉(zhuǎn)入步驟26 ; 步驟25,判斷作業(yè)J的進(jìn)程數(shù)量是否既不大于當(dāng)前空閑前景虛擬機(jī)數(shù)量又不大于額外前景虛擬機(jī)數(shù)量EN,如果是,則轉(zhuǎn)入步驟242,否則轉(zhuǎn)入步驟26 ; 步驟26,如果Jobs中存在作業(yè)J的下一個(gè)作業(yè),那么讓J=下一個(gè)作業(yè),否則J=空作業(yè); 步驟27,判斷作業(yè)J是否為空作業(yè),如果是,則結(jié)束,否則轉(zhuǎn)入步驟24。
6.根據(jù)權(quán)利要求1-5任一所述的基于兩層虛擬機(jī)的作業(yè)調(diào)度方法,所述作業(yè)部署算法包括 步驟41,讓作業(yè)Jl=被部署的作業(yè),讓標(biāo)識(shí)flag=作業(yè)Jl即將部署的虛擬機(jī),同時(shí)將作業(yè)Jl中的進(jìn)程按照CPU使用率降序排列; 步驟42,判斷標(biāo)識(shí)flag是否為前景層,如果是,則轉(zhuǎn)入步驟44 ;否則轉(zhuǎn)入步驟43 ;步驟43,將所有的多個(gè)背景虛擬機(jī)按其對(duì)應(yīng)的前景虛擬機(jī)的CPU使用率升序排列,然后將Jl中的進(jìn)程依次部署到排好序的背景虛擬機(jī)中,并結(jié)束流程; 步驟44,將所有的多個(gè)前景虛擬機(jī)按其對(duì)應(yīng)的背景虛擬機(jī)的CPU使用率升序排列,然后將Jl中的進(jìn)程依次部署到排好序的前景虛擬機(jī)中,并結(jié)束流程。
全文摘要
本發(fā)明提供了一種基于兩層虛擬機(jī)的并行作業(yè)調(diào)度的方法,把所具有的多個(gè)處理器的每一個(gè)處理器分別分成前景虛擬機(jī)和背景虛擬機(jī),把前景虛擬機(jī)和背景虛擬機(jī)的CPU權(quán)限分別設(shè)置為最高和最低優(yōu)先級(jí),當(dāng)一個(gè)新作業(yè)到達(dá)時(shí),將該作業(yè)放到等待隊(duì)列的末尾,調(diào)用前景層作業(yè)調(diào)度算法將所有能安排到前景虛擬機(jī)的作業(yè)部署到前景虛擬機(jī),調(diào)用背景層作業(yè)調(diào)度算法將所有能安排到背景虛擬機(jī)的作業(yè)部署到背景虛擬機(jī),其中前景層作業(yè)調(diào)度算法基于先到先服務(wù)的回填算法,并同時(shí)考慮在所述等待隊(duì)列和正在背景虛擬機(jī)中運(yùn)行的作業(yè),背景層作業(yè)調(diào)度算法基于最短作業(yè)優(yōu)先算法。本發(fā)明的方案無(wú)須改變已有并行作業(yè)調(diào)度器的結(jié)構(gòu),大大提高了處理機(jī)的使用率和調(diào)度性能。
文檔編號(hào)G06F9/455GK102662636SQ20121008399
公開日2012年9月12日 申請(qǐng)日期2012年3月27日 優(yōu)先權(quán)日2012年3月27日
發(fā)明者張柯 申請(qǐng)人:北京華如科技股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1