本發(fā)明屬于云計(jì)算中的任務(wù)調(diào)度領(lǐng)域,具體涉及一種帶任務(wù)重復(fù)的工作流高度算法。
背景技術(shù):
異構(gòu)分布式計(jì)算系統(tǒng)是由大概數(shù)百萬的異構(gòu)計(jì)算節(jié)點(diǎn)組成;這些節(jié)點(diǎn)通過任意的網(wǎng)絡(luò)體系結(jié)構(gòu)互相連接,用于高吞吐的計(jì)算資源和虛擬組織的創(chuàng)建來滿足廣泛的應(yīng)用領(lǐng)域的需求。
異構(gòu)分布式系統(tǒng)存在多種形式,云計(jì)算是其中的一個(gè)范例。隨著科技的發(fā)展與進(jìn)步,在以往的各種計(jì)算如并行計(jì)算、分布式計(jì)算、網(wǎng)格計(jì)算發(fā)展的基礎(chǔ)上提出了云計(jì)算的概念。學(xué)術(shù)界及產(chǎn)業(yè)界均在積極探索云計(jì)算,全球正在步入云計(jì)算的時(shí)代。云計(jì)算以商業(yè)模式的形式展現(xiàn),它通過云平臺(tái)向用戶展現(xiàn)效用計(jì)算的美好前景和一些能夠吸引人的特性,比如將共享資源等作為互聯(lián)網(wǎng)上按需形成的服務(wù),按照使用次數(shù)及使用需求收費(fèi)從而為用戶提供即時(shí)、靈活、可擴(kuò)展的服務(wù)。
云計(jì)算由許多的異構(gòu)計(jì)算節(jié)點(diǎn)、虛擬化計(jì)算機(jī)和動(dòng)態(tài)配置的軟件服務(wù)組成。這些軟件服務(wù)通過它們的可用性、性能、功能和服務(wù)質(zhì)量(Quality of Service,QoS)的需求來競(jìng)爭(zhēng)用戶終端的應(yīng)用程序。云計(jì)算可提供的服務(wù)一般劃分為三類:基礎(chǔ)設(shè)施即服務(wù)(Infrastructure as a Service,IaaS),平臺(tái)即服務(wù)(Platform as a Service,PaaS),軟件即服務(wù)(Software as a Service,SaaS)。這些服務(wù)為了滿足不同消費(fèi)群的需求提供不同的服務(wù)。盡管這些服務(wù)存在一些相似的功能(如計(jì)算功能,存儲(chǔ)功能和網(wǎng)絡(luò)功能等),但由于它們的非功能性特性不同而區(qū)別于彼此,這些功能特性我們稱之為QoS參數(shù),如:服務(wù)時(shí)間,服務(wù)開銷,服務(wù)的有效性,服務(wù)的能量損耗,服務(wù)利用率等。
考慮云計(jì)算的特性,以有效的方式將任務(wù)請(qǐng)求映射到資源是IaaS層的主要過程。在此層中,它將虛擬機(jī)(Virtual Machines,Vms)作為調(diào)度單元從而將物理的異構(gòu)資源分配給任務(wù)。每個(gè)虛擬機(jī)在云環(huán)境中都是具有計(jì)算和存儲(chǔ)能力的一個(gè)抽象單元。因?yàn)橘Y源的異構(gòu)性和動(dòng)態(tài)性,以及有不同特征和數(shù)量的任務(wù),該任務(wù)調(diào)度問題被認(rèn)為是一個(gè)NP完全問題。
因?yàn)橐粋€(gè)好的調(diào)度方法可以大大提高云系統(tǒng)的性能,且沒有確切的方法在多項(xiàng)式時(shí)間內(nèi)找到最優(yōu)解,所以調(diào)度策略都必須依靠啟發(fā)式算法來盡可能尋找解決問題的好方法。并且為了有效地將任務(wù)分配到云計(jì)算環(huán)境中的處理器上執(zhí)行,工作流管理系統(tǒng)要求詳盡的調(diào)度策略來滿足任務(wù)需求和任務(wù)間的優(yōu)先級(jí)約束關(guān)系。綜上所述,工作流調(diào)度在云計(jì)算中是一個(gè)重要的挑戰(zhàn)。
在本發(fā)明作出之前,云計(jì)算中這些工作流調(diào)度是一個(gè)難點(diǎn)問題。這些問題的難點(diǎn)在于調(diào)度任務(wù)時(shí)需考慮許多的因素:1)各類的QoS標(biāo)準(zhǔn)2)具有異構(gòu)和動(dòng)態(tài)特性的彈性云服務(wù)3)服務(wù)的不同組合方法來滿足任務(wù)執(zhí)行4)大面積數(shù)據(jù)的傳輸?shù)取?/p>
在云環(huán)境下運(yùn)行的軟件我們稱之為應(yīng)用程序。每個(gè)應(yīng)用程序就是一個(gè)工作流,其由相互關(guān)聯(lián)的任務(wù)組成。這些任務(wù)會(huì)被調(diào)度到云環(huán)境下的不同處理器中運(yùn)行?,F(xiàn)在存在許多的科學(xué)應(yīng)用如生物信息學(xué),化學(xué)和天文學(xué)等,這些應(yīng)用包含了大量的任務(wù)且任務(wù)之間存在復(fù)雜的優(yōu)先級(jí)約束關(guān)系。這些應(yīng)用可以轉(zhuǎn)換為DAG圖(有向無環(huán)圖),轉(zhuǎn)換的DAG圖是復(fù)雜的,不具有明顯的分層和清晰的優(yōu)先級(jí)約束,我們稱此種DAG圖為復(fù)雜的DAG圖。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就在于克服上述缺陷,研制一種帶任務(wù)重復(fù)的工作流調(diào)度算法。
本發(fā)明的技術(shù)方案是:
一種帶任務(wù)重復(fù)的工作流調(diào)度算法,其主要技術(shù)特征在于包括如下步驟:
(1)根據(jù)用戶提交的任務(wù)初始化DAG圖,用G=(V,E,[W],C)表示,其中,vi∈V表示DAG圖中的第i個(gè)節(jié)點(diǎn),E是DAG圖中節(jié)點(diǎn)邊的集合,eij∈E表示任務(wù)vi到任務(wù)vj的邊,同時(shí)需注意的是任務(wù)vi必須在任務(wù)vj執(zhí)行前執(zhí)行完成;wik∈[W],[W]表示n×m階任務(wù)在不同處理器上的執(zhí)行時(shí)間矩陣,wik表示任務(wù)vi在處理器Pj上的執(zhí)行時(shí)間;cij∈C表示vi到vj的通信開銷,用邊上的權(quán)值表示;
(2)根據(jù)DAG圖的優(yōu)先級(jí)構(gòu)建任務(wù)隊(duì)列V,V={v1,v2,Λ,vn};
(3)計(jì)算任務(wù)隊(duì)列V的首個(gè)任務(wù)vi在虛擬列表中每個(gè)處理器上的完成時(shí)間:
(3a)計(jì)算任務(wù)vi在處理器Pk上的初始完成時(shí)間:
Tft(vi,Pk)=Tst(vi,Pk)+wik
其中,Tst(vi,Pk)為任務(wù)vi在處理器Pk上的開始時(shí)間,Tft(vi,Pk)為完成時(shí)間;
(3b)令Mj為任務(wù)vi所有任務(wù)中出度最大的父任務(wù)結(jié)點(diǎn)(若存在幾個(gè)以上相同出度,則比較完成時(shí)間,Mj為完成時(shí)間最大的任務(wù))。Mi為任務(wù)vi的最重要的直接父任務(wù),在考慮重復(fù)任務(wù)后,計(jì)算任務(wù)vi在處理器Pk上的最終完成時(shí)間:
(i)若Mi和Mj均不在或均已調(diào)度到當(dāng)前處理器Pk上,則返回Tft(vi,Pk)的值;
(ii)若處理器Pk上存在合適執(zhí)行Mi或Mj的空閑時(shí)間隙,計(jì)算任務(wù)Mj在處理器Pk上的完成時(shí)間Tft(vj,Pk),計(jì)算任務(wù)Mi在處理器Pk上的完成時(shí)間Tft(vt,Pk):
①若Tft(vj,Pk)<Tst(vi,Pk),則在處理器Pk上重復(fù)任務(wù)Mj;
②若Tft(vt,Pk)<Tst(vi,Pk),則在處理器Pk上重復(fù)任務(wù)Mi;
③其他情況,則返回Tft(vi,Pk);
(iii)其他情況,則返回Tft(vi,Pk);
(4)比較查找任務(wù)vi的最小完成時(shí)間Tft(vi,Pk),若存在相同值,則將該任務(wù)調(diào)度到任務(wù)相對(duì)較少的處理器上;
(5)當(dāng)任務(wù)隊(duì)列為空時(shí),構(gòu)建任務(wù)隊(duì)列A存儲(chǔ)需要重復(fù)的任務(wù),任務(wù)隊(duì)列B存儲(chǔ)已經(jīng)重復(fù)過的任務(wù),任務(wù)按照最早開始時(shí)間非遞增存儲(chǔ);
(6)對(duì)任務(wù)隊(duì)列B中的所有任務(wù),若移除該任務(wù)對(duì)總完成時(shí)間無影響的話,則移除該任務(wù)并更新隊(duì)列B;
(7)采用遺傳算法迭代出最優(yōu)解;
(8)將映射好的任務(wù)分配到相應(yīng)的資源以獲得最優(yōu)調(diào)度方案。
本發(fā)明的優(yōu)點(diǎn)和效果在于在D-IAHA和IAHA中,任務(wù)在交叉和變異階段中的是否要選擇變異的資源時(shí)考慮到了任務(wù)的出錯(cuò)概率,所以大大減少任務(wù)在處理器上執(zhí)行時(shí)的出錯(cuò)次數(shù)。
附圖說明
圖1——本發(fā)明的實(shí)現(xiàn)流程示意圖。
圖2——本發(fā)明任務(wù)的NSL性能分析示意圖。
圖3——本發(fā)明任務(wù)的Efficiency性能分析示意圖。
圖4——本發(fā)明負(fù)載率分析示意圖。
圖5——本發(fā)明任務(wù)失敗次數(shù)分析示意圖。
具體實(shí)施方式
一、步驟描述
本發(fā)明是基于云計(jì)算的帶任務(wù)重復(fù)的工作流任務(wù)調(diào)度算法。參照?qǐng)D1即本發(fā)明的實(shí)現(xiàn)流程示意圖,則本發(fā)明的具體實(shí)施過程包括以下步驟:
步驟1.根據(jù)用戶提交的任務(wù)初始化DAG圖,用G=(V,E,[W],C)表示。其中,vi∈V表示DAG圖中的第i個(gè)節(jié)點(diǎn),E是DAG圖中節(jié)點(diǎn)邊的集合,eij∈E表示任務(wù)vi到任務(wù)vj的邊,同時(shí)需注意的是任務(wù)vi必須在任務(wù)vj執(zhí)行前執(zhí)行完成;wik∈[W],[W]表示n×m階任務(wù)在不同處理器上的執(zhí)行時(shí)間矩陣,wik表示任務(wù)vi在處理器Pj上的執(zhí)行時(shí)間;cij∈C表示vi到vj的通信開銷,用邊上的權(quán)值表示。
步驟2.根據(jù)DAG圖的優(yōu)先級(jí)構(gòu)建任務(wù)隊(duì)列V,V={v1,v2,Λ,vn}。
步驟3.計(jì)算任務(wù)隊(duì)列V的首個(gè)任務(wù)vi在虛擬列表中每個(gè)處理器上的完成時(shí)間:
(3.1)計(jì)算任務(wù)vi在處理器Pk上的初始完成時(shí)間:
Tft(vi,Pk)=Tst(vi,Pk)+wik
其中,Tst(vi,Pk)為任務(wù)vi在每個(gè)處理器Pk上的開始時(shí)間,Tft(vi,Pk)為完成時(shí)間;
(3.2)令Mj為任務(wù)vi所有任務(wù)中出度最大的父任務(wù)結(jié)點(diǎn)(若存在幾個(gè)以上相同出度,則比較完成時(shí)間,Mj為完成時(shí)間最大的任務(wù))。Mi為任務(wù)vi的最重要的直接父任務(wù),在考慮重復(fù)任務(wù)后,計(jì)算任務(wù)vi在處理器Pk上的最終完成時(shí)間:
(3.21)若Mi和Mj均不在或均已調(diào)度到當(dāng)前處理器Pk上,則返回Tft(vi,Pk)的值;
(3.22)若處理器Pk上存在合適執(zhí)行Mi或Mj的空閑時(shí)間隙,計(jì)算任務(wù)Mj在處理器Pk上的完成時(shí)間Tft(vj,Pk),計(jì)算任務(wù)Mi在處理器Pk上的完成時(shí)間Tft(vt,Pk):
①若Tft(vj,Pk)<Tst(vi,Pk),則在處理器Pk上重復(fù)任務(wù)Mj;
②若Tft(vt,Pk)<Tst(vi,Pk),則在處理器Pk上重復(fù)任務(wù)Mi;
③其他情況,則返回Tft(vi,Pk);
(3.23)其他情況,則返回Tft(vi,Pk)。
步驟4.比較查找任務(wù)vi的最小完成時(shí)間Tft(vi,Pk),若存在相同值,則將該任務(wù)調(diào)度到任務(wù)相對(duì)較少的處理器上。
步驟5.若不存在相同值且任務(wù)隊(duì)列為空時(shí),構(gòu)建任務(wù)隊(duì)列A存儲(chǔ)需要重復(fù)的任務(wù),任務(wù)隊(duì)列B存儲(chǔ)已經(jīng)重復(fù)過的任務(wù),任務(wù)按照最早開始時(shí)間非遞增存儲(chǔ)。
步驟6.對(duì)任務(wù)隊(duì)列B中的所有任務(wù),若移除該任務(wù)對(duì)總完成時(shí)間無影響的話,則刪除冗余任務(wù),更新任務(wù)隊(duì)列。
步驟7.采用遺傳算法迭代出最優(yōu)解。
步驟8.將映射好的任務(wù)分配到相應(yīng)的資源以獲得最優(yōu)調(diào)度方案。
二、仿真實(shí)驗(yàn)
1.實(shí)驗(yàn)參數(shù)設(shè)置
為了對(duì)D-IAHA算法的有效性進(jìn)行測(cè)試,本文利用CloudSim平臺(tái)將其與HEFT算法和IAHA算法進(jìn)行比較。與HEFT進(jìn)行比較是因?yàn)镠EFT中也用到了在處理器空閑時(shí)間隙插入任務(wù)的策略,與IAHA進(jìn)行比較是因?yàn)镈-IAHA是考慮了通信開銷元素然后在IAHA的基礎(chǔ)上進(jìn)行了一定的改進(jìn)。本算法所采用的CCR參數(shù)代表了通信運(yùn)算比,在實(shí)驗(yàn)中CCR值發(fā)生變化,其計(jì)算公式如下:
其中,Cm是平均通信開銷;Cp是平均計(jì)算開銷。
實(shí)驗(yàn)參數(shù)如表1所示:
表1 仿真參數(shù)
本實(shí)驗(yàn)采用的性能度量參數(shù)為NSL和Efficiency,其計(jì)算公式如下所示:
其中,makespan是總算法的完成時(shí)間;MSC是關(guān)鍵路徑上的最大計(jì)算開銷總和。
其中,SLU是在單處理器系統(tǒng)中的調(diào)度長度;SLM是在多處理器系統(tǒng)中的調(diào)度長度;Num是處理器個(gè)數(shù)。
2.仿真結(jié)果
實(shí)驗(yàn)1 任務(wù)的NSL性能分析
圖2是HEFT、IAHA、D-IAHA算法隨CCR值的增大NSL值的變化情況。隨著CCR值的增大,即任務(wù)逐漸向通信密集型進(jìn)行轉(zhuǎn)變,通信時(shí)間有所增長,HEFT和IAHA的總完成時(shí)間受到影響增大,則NSL值也隨之增加;而D-IAHA由于采取重復(fù)任務(wù)的方法用計(jì)算代價(jià)換取通信代價(jià),從而將任務(wù)開始時(shí)間提前,減少了通信時(shí)間并且總時(shí)間也不會(huì)有明顯的增加,所以NSL值低于另兩種算法。但若CCR變得越來越大,任務(wù)通信頻繁,導(dǎo)致任務(wù)間關(guān)系變得復(fù)雜,那么如何選擇重復(fù)任務(wù)就會(huì)有困難,總完成時(shí)間會(huì)有所反彈。
實(shí)驗(yàn)2 任務(wù)的Efficiency性能分析
圖3是HEFT、IAHA、D-IAHA算法隨CCR值的增大Efficiency值的變化情況。D-IAHA的Efficiency值較之其余兩個(gè)算法都是較小的。由于此算法中設(shè)定的處理器個(gè)數(shù)是一定的,那么可以說明其調(diào)度長度較之其余兩個(gè)算法都比較小,所以其性能提高較多。
實(shí)驗(yàn)3 負(fù)載率分析
圖4是HEFT、IAHA、D-IAHA算法隨任務(wù)個(gè)數(shù)的增多其負(fù)載率的變化情況。由于IAHA及D-IAHA中采用將任務(wù)分配到計(jì)算速度較快、性能較優(yōu)的處理器上的方法,并且在交叉和變異的過程中考慮到資源負(fù)載這一概念,所以可以看出這兩種算法的負(fù)載率小于HEFT;但由于D-IAHA采取了用計(jì)算代價(jià)換通信代價(jià)的方式來減少總完成時(shí)間,所以各節(jié)點(diǎn)上的負(fù)載率比IAHA相對(duì)高一點(diǎn),但與其他算法相比還是降低了資源的負(fù)載率。
實(shí)驗(yàn)4 任務(wù)失敗次數(shù)分析
圖5是HEFT、IAHA、D-IAHA算法下任務(wù)在處理器上執(zhí)行的失敗次數(shù)變化情況。因?yàn)槿蝿?wù)在處理器上執(zhí)行存在一定的出錯(cuò)率,所以云計(jì)算系統(tǒng)中有一定的容錯(cuò)機(jī)制。但如果能從根本上減少任務(wù)的出錯(cuò)次數(shù)就可以大大提高系統(tǒng)的性能。D-IAHA及IAHA的出錯(cuò)次數(shù)小于HEFT,主要是由于在HEFT中未考慮到任務(wù)的出錯(cuò)概率;而在D-IAHA和IAHA中,任務(wù)在交叉和變異階段中的是否要選擇變異的資源時(shí)考慮到了任務(wù)的出錯(cuò)概率,所以大大減少任務(wù)在處理器上執(zhí)行時(shí)的出錯(cuò)次數(shù)。