李 英,李 亞,劉廣亮
(南陽師范學(xué)院軟件學(xué)院,河南 南陽473061)
云計算是在并行計算、分布式計算、集群計算、網(wǎng)格計算的基礎(chǔ)上發(fā)展起來的一種新興計算模式[1],其基本思想是通過構(gòu)建數(shù)據(jù)中心,并采用成熟的虛擬化技術(shù)給用戶提供服務(wù)[2]。然而,不同的用戶對服務(wù)的需求是不同的,這就要求云計算平臺能夠通過任務(wù)調(diào)度為不同的用戶提供不同類型的服務(wù),并保證用戶能夠獲得較好的服務(wù)質(zhì)量。
任務(wù)調(diào)度是云計算的關(guān)鍵技術(shù)之一。云任務(wù)調(diào)度的目的就是按照某種策略,將任務(wù)合理地分配到處理單元,以達到完成時間最短、成本最小以及提高系統(tǒng)利用率等目的[3]。
目前,云計算的任務(wù)調(diào)度算法具有較好的完成時間,但是并不符合云計算按需分配的特性,不能滿足用戶的需求。為此,本文提出了基于加權(quán)歐氏距離的負(fù)載平衡的云計算任務(wù)調(diào)度算法(簡稱EDW-LB算法)。EDW-LB算法針對云計算平臺中任務(wù)執(zhí)行時的動態(tài)特征,提出使用加權(quán)歐式距離來計算任務(wù)和資源的相關(guān)程度,使云計算任務(wù)能夠分配到合適的資源中,更好的滿足用戶對完成時間以及帶寬等多方面的需求。通過仿真和分析,表明該算法是可行的,并將本算法與目前比較常用的最優(yōu)時間調(diào)度算法進行對比,證明了在用戶滿意度和資源利用率方面取得了較好的效果。
云環(huán)境中使用成熟的虛擬機技術(shù),將物理層上的硬件映射到虛擬機層上,用戶的任務(wù)是通過虛擬機來執(zhí)行的[4]。任務(wù)調(diào)度相應(yīng)于完成把n個任務(wù)通過某種策略合理的分配到虛擬機上執(zhí)行。
服務(wù)質(zhì)量(QoS)是衡量用戶使用云計算服務(wù)滿意度的標(biāo)準(zhǔn)。QoS衡量參數(shù)大致可以分為:完成時間、費用、帶寬和可靠性[4]。本文通過QoS參數(shù)對任務(wù)進行劃分。
云任務(wù)集合用T={T1,T2,…,Tn}表示,每個任務(wù)的屬性集合表示為:
其中,IDi為云任務(wù)的編號;TYPEi為云任務(wù)的類型;Li為任務(wù)的總長度;INi為任務(wù)的輸入大小;OUTi為任務(wù)的輸出大小;Ei為用戶對任務(wù)的期待值;Ji為用戶對任務(wù)的滿意度。
任務(wù)的類型是根據(jù)QoS參數(shù)對進行劃分,每一類任務(wù)都對資源有著不同的需求指標(biāo)。例如,計算型任務(wù)要求任務(wù)完成時間較短,而有些任務(wù)對帶寬有著較高的要求。文獻[2]提出給每類任務(wù)設(shè)定一般期待向量:
設(shè)第i類任務(wù)的一般期待向量為[2]:
其中,ei1、ei2、ei3、ei4、ei5分別表示對虛擬機的CPU數(shù)量、內(nèi)存大小、帶寬、任務(wù)執(zhí)行的費用以及虛擬機的故障率的期待值。
虛擬機集合用V={V1,V2,…,Vm}表示,每個虛擬機的性能參數(shù)集合表示為:
其中,IDi為虛擬機的編號;PENi為虛擬機中包含的處理機或者CPU個數(shù);RAM為虛擬機的內(nèi)存;BWi為虛擬機的帶寬;FRi為虛擬機的故障率;PPUi為虛擬機單位時間內(nèi)的使用價格。
2.1.1 歸一化
將虛擬機的 5 個性能參數(shù)進行歸一化,令集合Xij={X1j,X2j,…,Xij},i∈[1,m],j∈[1,5],Xij表示第i個虛擬機的第j個屬性(不包括虛擬機ID),歸一化值為:
其中,GXij為第i個虛擬機的第j個性能參數(shù)歸一化后的值;curXij、minXij、maxXij分別為性能當(dāng)前值、最小值和最大值。
2.1.2 歐氏距離的計算
任務(wù)的一般期待向量可以體現(xiàn)每種不同類別任務(wù)對資源性能的不同需求,因此,可以通過計算任務(wù)的一般期待向量與歸一化后的資源性能參數(shù)的歐氏距離,獲得最適合用戶需求的資源。假設(shè)某任務(wù)的一般期待向量為[e1,e2,e3,e4,e5],某虛擬機性能參數(shù)歸一化后為[GXi1,GXi2,GXi3,GXi4,GXi5],則該云任務(wù)與第i個虛擬機的歐式距離表示為[5-6]:
式(4)在計算任務(wù)與虛擬機的距離時,將各個性能所起的作用看成是一樣的,然而對于不同類別的任務(wù)對虛擬機性能的要求是不一樣的,所以這樣顯然是不合理的。文中提出加權(quán)的歐式距離,使計算距離時根據(jù)任務(wù)分類不同,虛擬機性能參數(shù)所起的作用也不同。加權(quán)歐式距離定義如下:
2.1.3 虛擬機負(fù)載計算
本文通過對虛擬機的性能參數(shù)歸一化后的值GXij來計算虛擬機的負(fù)載能力,具體操作為:首先,計算每個虛擬機的綜合性能指標(biāo)為第i個虛擬機的第j個性能參數(shù)歸一化后的值。再將GSi/min(GSi),得到虛擬機負(fù)載能力向量 gs= [gs1,gs2,gs3,gs4,gs5]。
定義1 虛擬機當(dāng)前負(fù)載狀態(tài)[7]指在當(dāng)前分配到該虛擬機上的所有任務(wù)的長度之和(長度單位為字節(jié))。第i個虛擬機的當(dāng)前負(fù)載狀態(tài)表示為:
其中,m為虛擬機的個數(shù)。
通過以上描述可知:第i個虛擬機的當(dāng)前負(fù)載狀態(tài)Loadi>gsi×SLoad時,則該虛擬機負(fù)載較重。此時,需要將任務(wù)轉(zhuǎn)移到其他虛擬機上。文中采用的轉(zhuǎn)移方法是根據(jù)歐氏距離來轉(zhuǎn)移。
2.1.4 任務(wù)的滿意度J值
任務(wù)執(zhí)行完后,需要計算任務(wù)的滿意度J的值。任務(wù)i的滿意度可以表示為:
其中,m為當(dāng)前分配到該節(jié)點的任務(wù)數(shù);Lk為第k個任務(wù)的長度(長度單位為字節(jié))。
由式(6)可得當(dāng)前系統(tǒng)中總負(fù)載量SLoad為:
其中,Texpt為任務(wù)的期待執(zhí)行時間;Tact為任務(wù)實際的執(zhí)行時間;BWact為任務(wù)實際獲得的帶寬;BWexpt任務(wù)期待的帶寬;COSTexpt為任務(wù)期待的成本;COSTact為任務(wù)實際成本;Psucces為任務(wù)期待的可靠完成率;P為機器的故障率。
Ji=0說明該任務(wù)獲得的資源與期待的資源一致;Ji>0表示該任務(wù)獲得的資源的性能高于期待的資源;Ji<0表示該任務(wù)獲得的資源沒有達到期待值。
根據(jù)前面的描述得知任務(wù)與資源之間的歐式距離越小,資源的性能也就越符合任務(wù)的期待值。這里需要考慮一個問題,同一類型的任務(wù)很有可能會被分配到同一個資源上,這樣就會造成某個或某些資源的負(fù)載過重,從而導(dǎo)致任務(wù)的完成時間過長。因此,本文提出的EDW-LB算法不僅考慮歐氏距離,而且還需要考慮資源的負(fù)載情況。該算法的偽代碼如下:
EDW-LB-bindCloudletToVM(cloudletList,vmList)
Foreach t in T
//計算任務(wù)t與各個資源加權(quán)歐式距離
eucliddis[]=ComputeWEuclidDis(vmList,t)
//根據(jù)加權(quán)歐式距離的值對資源進行排序(升序),
并記錄資源的編號
vmOS[]=SortVmByED(eucliddis[])
Foreach i in vmOS[]
//暫時第i個任務(wù)分配給歐式距離最小的資源
Allocate t to vmOS[i]
//考察編號為vmOS[i]資源的狀態(tài)
If(LoadvmOS[i]> gsvmOS[i]*SLoad)
//如果該資源負(fù)載較重,
根據(jù)歐式距離將任務(wù)分配給下一個資源
Allocate t to vmOS[i+1]
EndIF
EndFor
endFor
使用云計算仿真平臺Cloudsim[8-10]來驗證提出的基于加權(quán)歐式距離的負(fù)載均衡任務(wù)調(diào)度算法的可行性與算法性能,并與順序任務(wù)調(diào)度算法、最優(yōu)完成時間調(diào)度算法進行了仿真比較。
[2]將所有任務(wù)分成兩類,第1類屬于計算型任務(wù),對完成時間要求較高;第2類對帶寬要求較高。這兩類的任務(wù)的一般期待向量分別為[0.6,0.1,0.3],[0.3,0.2,0.5]。
模擬的云環(huán)境包括4個虛擬機,虛擬機的性能參數(shù)如表1所示,10個任務(wù)(其中5個為第1類,5個為第2類)。仿真實驗主要考察的3個方面是用戶任務(wù)的完成時間,用戶滿意度和各個資源的負(fù)載情況。
表1 虛擬機列表
圖1為任務(wù)完成時間對比圖,從圖1中可以看出順序調(diào)度、最優(yōu)完成時間以及EDW-LB這3種算法的對比情況,對于完成時間有較高要求的任務(wù)(任務(wù)1~5)而言,文中提出的EDW-LB算法的完成時間比順序調(diào)度算法以及最優(yōu)完成時間算法要短,而對于要求帶寬的任務(wù)(任務(wù)6~10),EDW-LB算法的完成時間卻不是最短的,這是因為EDW-LB算法需要在滿足任務(wù)的帶寬需求的情況下,對任務(wù)進行調(diào)度。
圖2體現(xiàn)了3種算法的用戶滿意度對比情況,由圖2可以看出:EDW-LB調(diào)度算法的用戶滿意度比順序調(diào)度算法以及最優(yōu)完成時間算法優(yōu)越,也就是說EDW-LB調(diào)度算法可以使任務(wù)獲得符合其需求的資源。
圖1 任務(wù)完成時間對比圖
圖2 用戶滿意度對比圖
考察虛擬機的負(fù)載狀態(tài),隨機生成長度在區(qū)間[10 000,50 000]的100個任務(wù),虛擬機性能參數(shù)如表1所示,進行仿真實驗。
表2是采用3種不同算法時虛擬機的負(fù)載狀態(tài),從表2中很容易看出采用順序調(diào)度算法各個虛擬機的負(fù)載情況,3號虛擬機上的任務(wù)長度(指令數(shù))大于1、2、4號虛擬機,然而實驗中所創(chuàng)建的虛擬機綜合性能1號>2號>3號>4號。也就是說,1號虛擬機的性能最好,負(fù)載的指令數(shù)卻并不是很多。WED-LB調(diào)度算法能夠根據(jù)虛擬機的性能,控制虛擬機的負(fù)載情況。
表2 虛擬機負(fù)載情況 byte
針對云環(huán)境下的任務(wù)調(diào)度提出了基于加權(quán)歐氏距離負(fù)載均衡的任務(wù)調(diào)度算法,該算法使用加權(quán)歐氏距離來計算用戶任務(wù)和虛擬機之間的相關(guān)程度,能夠滿足不同需求的用戶,在得到良好的用戶滿意度同時,通過資源的負(fù)載平衡策略提高資源的利用率,盡可能的縮短任務(wù)的完成時間。
參考文獻:
[1]吳煜祺,曾國蓀,曾媛.云計算環(huán)境下調(diào)度算法的趨勢分析[J].微電子學(xué)與計算機,2012,29(9):103-108.
[2]楊麗,武小年,商可旻.一種基于聚類的云計算任務(wù)調(diào)度算法[J].大眾科技,2012,14(5):37-39.
[3]趙春燕.云環(huán)境下作業(yè)調(diào)度算法研究與實現(xiàn)[D].北京:北京交通大學(xué),2009.
[4]朱健琛,徐潔,魯珂.一種類歐氏距離-負(fù)載平衡的云任務(wù)調(diào)度算法[J].計算機仿真,2012,29(6):159-162.
[5]董旭,魏振軍.一種加權(quán)歐氏距離聚類方法[J].信息工程大學(xué)學(xué)報,2005,6(1):23-25.
[6]劉瑞元.加權(quán)歐氏距離及其應(yīng)用[J].數(shù)理統(tǒng)計與管理,2002,21(5):17-19.
[7]韓云,于炯,張偉,等.基于負(fù)載均衡的任務(wù)調(diào)度改進算法[J].微電子學(xué)與計算機,2010,27(8):201-204.
[8]丁陽,顏惠琴.基于改進粒子群算法的云計算任務(wù)調(diào)度策略[J].無錫職業(yè)技術(shù)學(xué)院學(xué)報,2012,11(3):66-68.
[9]李坤.云環(huán)境下的任務(wù)調(diào)度算法研究與實現(xiàn)[D].長春:吉林大學(xué),2012.
[10]申麗君,劉麗,陸銳,等.基于改進免疫進化算法的云計算任務(wù)調(diào)度[J].計算機工程,2012,38(9):208-210.