本發(fā)明涉及云計(jì)算技術(shù)領(lǐng)域,具體來(lái)說(shuō)應(yīng)用于云計(jì)算平臺(tái)中資源管理技術(shù),特別涉及一種基于優(yōu)先隊(duì)列的云任務(wù)多維約束回填調(diào)度方法。
背景技術(shù):
如今,我們身處信息爆炸的時(shí)代,計(jì)算機(jī)技術(shù)的發(fā)展日新月異。當(dāng)下的趨勢(shì)是用戶(hù)量劇增,傳統(tǒng)的數(shù)據(jù)中心已經(jīng)無(wú)力滿(mǎn)足現(xiàn)有的需求。隨之帶來(lái)了云計(jì)算這個(gè)新技術(shù)的廣泛應(yīng)用,他的誕生也是信息技術(shù)革命的產(chǎn)物。云計(jì)算通常都是面向異構(gòu)的組成,而面對(duì)海量的任務(wù)請(qǐng)求,云計(jì)算的數(shù)據(jù)中心如何在有限的計(jì)算資源內(nèi)用最短的時(shí)間來(lái)調(diào)度處理任務(wù),并且縮短任務(wù)最終完成時(shí)間,減少批量任務(wù)的平均等待時(shí)延,增加服務(wù)器資源利用率這些方面就顯得尤為重要。
現(xiàn)有的一些基于云計(jì)算任務(wù)調(diào)度的方法也分很多種,有些基于蟻群算法、退火算法、遺傳算法等啟發(fā)式算法,例如cn103345657a公開(kāi)了一種云計(jì)算環(huán)境下基于遺傳和蟻群的任務(wù)調(diào)度方法,結(jié)合了遺傳算法和蟻群算法的優(yōu)勢(shì)進(jìn)行迭代求解。另如cn103870317a公開(kāi)了一種云計(jì)算中任務(wù)調(diào)度方法及系統(tǒng),該方法中采用的細(xì)菌覓食算法來(lái)計(jì)算最佳工作節(jié)點(diǎn),對(duì)任務(wù)和資源進(jìn)行調(diào)度分配。這些啟發(fā)式算法高度抽象的模型在實(shí)際面向高時(shí)效,快速響應(yīng)的云計(jì)算任務(wù)調(diào)度處理上會(huì)暴露出迭代很慢,面對(duì)大量不同的任務(wù)很容易陷入局部最優(yōu)解,使系統(tǒng)響應(yīng)變慢,降低用戶(hù)體驗(yàn)。
有些調(diào)度方法則單純的考量任務(wù)的優(yōu)先級(jí)權(quán)重,沒(méi)有多方面考慮任務(wù)和虛擬機(jī)等計(jì)算資源的關(guān)系。如cn103324525a公開(kāi)了一種云計(jì)算環(huán)境下的調(diào)度方法,該方法通過(guò)計(jì)算每個(gè)任務(wù)優(yōu)先級(jí)指數(shù)和任務(wù)等待指數(shù)對(duì)任務(wù)進(jìn)行排序調(diào)度。cn103914754a公開(kāi)了一種工作流的任務(wù)調(diào)度方法,該方法將每個(gè)任務(wù)在所有處理器上運(yùn)行的平均預(yù)計(jì)時(shí)間和數(shù)據(jù)傳遞平均時(shí)間結(jié)合作為權(quán)值排序,然后遍歷計(jì)算節(jié)點(diǎn)將權(quán)值的最大的綁定到性能最佳的虛擬機(jī)上。這樣沒(méi)有考慮每臺(tái)機(jī)器的計(jì)算資源的承載和獨(dú)立任務(wù)的資源需求,很容易使任務(wù)綁定在虛擬機(jī)中產(chǎn)生較大的虛擬機(jī)空閑,無(wú)法最大限度增加虛擬機(jī)資源利用率。
還有一些調(diào)度方法單純從計(jì)算節(jié)點(diǎn)的性能觸發(fā)去考慮任務(wù)調(diào)度。如cn101986272a公開(kāi)了一種云計(jì)算環(huán)境下的任務(wù)調(diào)度方法。該方法在任務(wù)分配不考慮節(jié)點(diǎn)的性能,只考慮節(jié)點(diǎn)的健康度。在分配的任務(wù)超過(guò)其設(shè)定的閾值后還未被處理,將任務(wù)重新收回再次分配。這樣造成的任務(wù)違約率偏高,任務(wù)的平均時(shí)延也會(huì)增大。而cn105740077a公開(kāi)的一種使用云計(jì)算的任務(wù)分配方法是在數(shù)據(jù)中心建立各個(gè)計(jì)算節(jié)點(diǎn)的負(fù)載,將任務(wù)依次分配到負(fù)載從高到低的節(jié)點(diǎn)上,這樣會(huì)導(dǎo)致節(jié)點(diǎn)負(fù)載過(guò)大,反而導(dǎo)致整體調(diào)度性能受損。
另有一些調(diào)度方法單純基于任務(wù)響應(yīng)時(shí)間來(lái)建模來(lái)獲取最佳調(diào)度方式,如cn103841208a公開(kāi)了一種基于響應(yīng)時(shí)間最優(yōu)化的云計(jì)算任務(wù)調(diào)度方法,該方法根據(jù)任務(wù)分片的傳輸時(shí)間,任務(wù)在各節(jié)點(diǎn)的平均處理時(shí)間和任務(wù)分片的總處理時(shí)間來(lái)計(jì)算出目標(biāo)函數(shù),將任務(wù)響應(yīng)時(shí)間作為目標(biāo)來(lái)建模。但這樣很容易使執(zhí)行時(shí)間較小的任務(wù)優(yōu)先調(diào)度,而執(zhí)行時(shí)間較長(zhǎng)的任務(wù)響應(yīng)時(shí)間變大。無(wú)法平衡不同長(zhǎng)度任務(wù)之間的調(diào)度關(guān)系。
此外,一些傳統(tǒng)回填算法和現(xiàn)有改進(jìn)型的基于回填調(diào)度的方法在選取回填任務(wù)時(shí)只考慮等待任務(wù)申請(qǐng)的處理器核心數(shù)目這個(gè)單一指標(biāo),而沒(méi)有將申請(qǐng)的資源與獨(dú)立任務(wù)預(yù)計(jì)執(zhí)行時(shí)長(zhǎng)這個(gè)指標(biāo)相結(jié)合,這種單一考量方式僅在獨(dú)立任務(wù)執(zhí)行時(shí)長(zhǎng)相近的情況下才能有所效果,一旦獨(dú)立任務(wù)執(zhí)行時(shí)長(zhǎng)大小差異較大時(shí)就會(huì)造成虛擬機(jī)空閑饑餓程度加劇,導(dǎo)致任務(wù)最終完成時(shí)間變長(zhǎng),任務(wù)平均等待時(shí)延增大。而且現(xiàn)有具體到云計(jì)算環(huán)境下的任務(wù)調(diào)度方法中還未有一種高效的,且綜合考量多維性能指標(biāo)約束的基于回填調(diào)度的改進(jìn)方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有改進(jìn)型回填調(diào)度方法的缺陷和不足,提出了一種基于優(yōu)先隊(duì)列的云任務(wù)多維約束回填調(diào)度方法,該方法綜合考量任務(wù)提交處理器資源與獨(dú)立任務(wù)預(yù)計(jì)執(zhí)行時(shí)間這兩個(gè)維度結(jié)合來(lái)計(jì)算出回填權(quán)重系數(shù),然后將提交到虛擬機(jī)后的每個(gè)任務(wù)的回填權(quán)重系數(shù)利用最小二叉堆的數(shù)據(jù)結(jié)構(gòu)構(gòu)建成任務(wù)優(yōu)先隊(duì)列,將批量的等待任務(wù)進(jìn)行回填調(diào)度處理,掃描回填時(shí)同時(shí)加入內(nèi)存、帶寬等資源的約束,來(lái)提高回填效率和回填的成功率。從而達(dá)到最大限度的對(duì)虛擬機(jī)空閑資源及時(shí)預(yù)約回填,縮短任務(wù)最終完成時(shí)間,減少任務(wù)平均等待時(shí)延等qos指標(biāo)。
本發(fā)明所采用的技術(shù)方案是:一種基于優(yōu)先隊(duì)列的云任務(wù)多維約束回填調(diào)度方法,該方法包括以下步驟:
步驟1:將等待任務(wù)隊(duì)列中的任務(wù)按照任務(wù)指令長(zhǎng)度和申請(qǐng)的處理器核心數(shù)量比值的大小作為任務(wù)處理時(shí)間因子來(lái)降序排列,存入普通隊(duì)列中;處理時(shí)間因子用來(lái)表征獨(dú)立任務(wù)的預(yù)計(jì)處理時(shí)間;
步驟2:將數(shù)據(jù)中心中的虛擬機(jī)按照其計(jì)算處理能力的大小降序排列,并在數(shù)據(jù)中心建立虛擬機(jī)的編號(hào)和其計(jì)算處理能力值的對(duì)應(yīng)關(guān)系;
步驟3:將步驟1中普通隊(duì)列中的任務(wù)根據(jù)預(yù)計(jì)執(zhí)行時(shí)長(zhǎng)綁定到步驟2的虛擬機(jī)隊(duì)列,執(zhí)行時(shí)長(zhǎng)越長(zhǎng),綁定的虛擬機(jī)性能越佳,若分配到當(dāng)前虛擬機(jī)的任務(wù)預(yù)計(jì)執(zhí)行時(shí)長(zhǎng)小于等于下一臺(tái)虛擬機(jī)則綁定該任務(wù)到當(dāng)前虛擬機(jī),否則綁定該任務(wù)到當(dāng)前虛擬機(jī),完成虛擬機(jī)的初步綁定;
步驟4:步驟3中進(jìn)入每臺(tái)虛擬機(jī)上的批量任務(wù),根據(jù)每個(gè)任務(wù)申請(qǐng)的處理器核心數(shù)量的平方除以任務(wù)指令長(zhǎng)度的比值得到的回填權(quán)重系數(shù)作為鍵來(lái)建立最小二叉堆,構(gòu)成任務(wù)優(yōu)先隊(duì)列;所述回填權(quán)重系數(shù)表征為每個(gè)任務(wù)申請(qǐng)的處理器核心數(shù)量的平方除以任務(wù)指令長(zhǎng)度的比值;
步驟5:彈出最小二叉堆中的第一個(gè)任務(wù),掃描虛擬機(jī)中正在運(yùn)行中的任務(wù),若同時(shí)滿(mǎn)足虛擬機(jī)的總處理器核心數(shù)、總內(nèi)存大小和總帶寬大小的約束條件即該任務(wù)回填后不會(huì)超出虛擬機(jī)的處理能力、內(nèi)存和帶寬,則進(jìn)行回填;若不滿(mǎn)足,則重新壓入二叉堆隊(duì)列的末尾重新上浮;
步驟6:重復(fù)執(zhí)行步驟5,直到將二叉堆中所有任務(wù)調(diào)度完畢。
所述的虛擬機(jī)的計(jì)算處理能力通過(guò)mips(millioninstructionspersecond,單字長(zhǎng)定點(diǎn)指令平均執(zhí)行速度)表征。
本發(fā)明的有益效果:通過(guò)對(duì)未提交的任務(wù)按照預(yù)計(jì)執(zhí)行時(shí)間從大到小優(yōu)先分配到最快的虛擬機(jī),完成初步綁定,可以減少任務(wù)的最大完成時(shí)間;對(duì)進(jìn)入虛擬機(jī)后的任務(wù)按照bfv(backfillvalues,回填權(quán)重系數(shù))建立最小二叉堆的任務(wù)優(yōu)先隊(duì)列,采用此數(shù)據(jù)結(jié)構(gòu),可以高效的將bfv值最小的,最急需回填的任務(wù)快速推到根節(jié)點(diǎn)。優(yōu)先將bfv較小的任務(wù)進(jìn)行回填可以充分減小虛擬機(jī)的空閑,提高資源利用率,同時(shí)可以減少任務(wù)平均等待時(shí)延。
附圖說(shuō)明
圖1為基于優(yōu)先隊(duì)列的云任務(wù)多維約束回填調(diào)度架構(gòu)圖;
圖2為基于優(yōu)先隊(duì)列的云任務(wù)多維約束回填調(diào)度方法流程圖;
圖3為本發(fā)明實(shí)施例選定虛擬機(jī)后任務(wù)隊(duì)列的最小二叉堆結(jié)構(gòu)圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1是本發(fā)明的云任務(wù)回填調(diào)度架構(gòu)圖,整個(gè)架構(gòu)由等待任務(wù)隊(duì)列和數(shù)據(jù)中心組成,而數(shù)據(jù)中心由數(shù)據(jù)中心代理(datacenterbroker),主機(jī)和建立在主機(jī)之上的虛擬機(jī)組成。其中數(shù)據(jù)中心代理的角色就是云任務(wù)調(diào)度器。
首先對(duì)數(shù)據(jù)中心進(jìn)行初始化,數(shù)據(jù)中心首先開(kāi)啟若干臺(tái)主機(jī);然后提交任務(wù),數(shù)據(jù)中心接下來(lái)會(huì)在主機(jī)上建立相應(yīng)數(shù)量的虛擬機(jī);此時(shí)虛擬機(jī)上已經(jīng)運(yùn)行一些任務(wù),數(shù)據(jù)中心之外還有一些等待任務(wù)隊(duì)列,我們用一個(gè)普通的隊(duì)列來(lái)存儲(chǔ)。
圖2是整個(gè)云任務(wù)多維約束回填調(diào)度方法的詳細(xì)流程:
步驟1:首先針對(duì)未進(jìn)入數(shù)據(jù)中心的任務(wù)等待隊(duì)列按照公式1中的tratio值對(duì)任務(wù)進(jìn)行降序排列,使預(yù)計(jì)執(zhí)行時(shí)間較長(zhǎng)的任務(wù)優(yōu)先排列在隊(duì)列前面。
步驟2:對(duì)數(shù)據(jù)中心內(nèi)所有主機(jī)上的虛擬機(jī)依次建立索引表,key為每臺(tái)虛擬機(jī)的id;value為mips,即該虛擬機(jī)處理器核心的處理能力。然后針對(duì)虛擬機(jī)的mips值按照降序排列,使性能最好的虛擬機(jī)排列在索引表的最前面。然后將統(tǒng)計(jì)好的索引表提交到數(shù)據(jù)中心代理(datacenterbroker)并保存。
步驟3:根據(jù)步驟1中普通任務(wù)隊(duì)列中的任務(wù)依次往步驟2中的索引表中的虛擬機(jī)上綁定,綁定的同時(shí)需要計(jì)算當(dāng)前虛擬機(jī)和下一臺(tái)虛擬機(jī)累計(jì)執(zhí)行時(shí)間,選擇累計(jì)執(zhí)行時(shí)間最短的虛擬機(jī)進(jìn)行綁定。
步驟4:根據(jù)步驟3中提交到每臺(tái)虛擬機(jī)上的批量任務(wù)按照bfv的值進(jìn)行建立最小二叉堆的來(lái)組成優(yōu)先隊(duì)列。
選定虛擬機(jī)后進(jìn)入數(shù)據(jù)中心后對(duì)每臺(tái)虛擬機(jī)上的批量任務(wù)進(jìn)行建堆操作,這里使用的是如圖3所示的最小二叉堆數(shù)據(jù)結(jié)構(gòu),最小二叉堆是一種堆有序的完全二叉樹(shù)。如圖3中t1~t9節(jié)點(diǎn)分別存儲(chǔ)的是任務(wù)的bfv值。其中t1小于t2/t3,t2小于t4/t5,t3小于t6/t7,t4小于t8。t1作為根節(jié)點(diǎn)是整個(gè)隊(duì)列中bfv值最小的,其中每個(gè)左子節(jié)點(diǎn)的索引值是父節(jié)點(diǎn)的2倍,右子節(jié)點(diǎn)的索引值是父節(jié)點(diǎn)的2倍+1。依次構(gòu)建出最小二叉堆組成的優(yōu)先隊(duì)列
步驟5:掃描虛擬機(jī)中空閑資源,依次彈出二叉堆中的第一個(gè)任務(wù),掃描虛擬機(jī)中正在運(yùn)行中的任務(wù),進(jìn)行任務(wù)回填。
步驟5-1:因?yàn)樽钚《娑阎械母?jié)點(diǎn)是bfv值最小的任務(wù),因此我們?cè)賿呙璁?dāng)前虛擬機(jī)中若存在空閑計(jì)算資源,則彈出優(yōu)先隊(duì)列的第一個(gè)任務(wù),然后根據(jù)公式3來(lái)判斷若將該任務(wù)回填是否滿(mǎn)足資源約束條件。若滿(mǎn)足,則依次進(jìn)行回填。其中pe為處理器核心數(shù)量,ram和bw分別是任務(wù)的內(nèi)存占用量和帶寬使用量。
步驟5-2:若在步驟5-1中發(fā)現(xiàn)彈出的任務(wù)不滿(mǎn)足資源約束條件,則將該任務(wù)重新插入二叉堆的隊(duì)尾,然后將之前根節(jié)點(diǎn)下面的子節(jié)點(diǎn)彈出嘗試回填,回填成功后,因?yàn)閺年?duì)尾插入的任務(wù)可能小于他的父節(jié)點(diǎn),所以按照二叉堆的定義要求,將該任務(wù)上浮至合適的位置。
步驟5-3:根據(jù)上面兩個(gè)子步驟將所有虛擬機(jī)的提交的任務(wù)都依次回填調(diào)度完畢,最后等待任務(wù)執(zhí)行完畢,銷(xiāo)毀虛擬機(jī),整個(gè)任務(wù)調(diào)度流程完畢。
本發(fā)明方案所公開(kāi)的技術(shù)手段不僅限于上述實(shí)施方式所公開(kāi)的技術(shù)手段,還包括由以上技術(shù)特征任意組合所組成的技術(shù)方案。