點(diǎn)設(shè)定上下閾值,再將總的時(shí)間設(shè)定為零。
[0061]步驟三、根據(jù)用戶提交的虛擬機(jī)請求,按照虛擬機(jī)列表中的虛擬機(jī)資源請求數(shù)目降序排列。
[0062]對虛擬機(jī)列表中的請求按照申請的規(guī)模降序排列,將虛擬機(jī)的資源請求數(shù)目從大到小進(jìn)行排列。目的在于算法優(yōu)化,對于資源占用多的虛擬機(jī)優(yōu)先放置。
[0063]步驟四、針對排列后的虛擬機(jī),依次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),判斷某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)是否能夠滿足當(dāng)前虛擬機(jī)資源請求。如果滿足,進(jìn)入步驟五;否則進(jìn)入步驟六;
[0064]當(dāng)前虛擬機(jī)記為Vnij,1彡j彡η ;n為請求資源的虛擬機(jī)的總數(shù);Vmj初始值為排列后的第一個(gè)虛擬機(jī),即資源請求數(shù)目最多的虛擬機(jī);
[0065]步驟五、獲取滿足當(dāng)前虛擬機(jī)請求的能耗最小的網(wǎng)絡(luò)節(jié)點(diǎn)作為放置目標(biāo)節(jié)點(diǎn),進(jìn)入步驟七;
[0066]如圖2所示,具體步驟為:
[0067]步驟501、依次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),對能滿足當(dāng)前虛擬機(jī)資源請求數(shù)目的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行標(biāo)記;
[0068]如果某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的可用資源數(shù)目大于等于當(dāng)前虛擬機(jī)的資源請求數(shù)目,則該網(wǎng)絡(luò)節(jié)點(diǎn)滿足虛擬機(jī)請求,標(biāo)記該網(wǎng)絡(luò)節(jié)點(diǎn)的布爾變量W (Node)值為1 ;
[0069]步驟502、針對步驟501中標(biāo)記的各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),分別計(jì)算虛擬機(jī)放置在各個(gè)標(biāo)記網(wǎng)絡(luò)節(jié)點(diǎn)上的能耗;
[0070]統(tǒng)計(jì)布爾變量W(Node)值為1的網(wǎng)絡(luò)節(jié)點(diǎn),且通過公式ENERGY-ESTIMATE計(jì)算虛擬機(jī)放置在各節(jié)點(diǎn)上的能耗;
[0071]虛擬機(jī)放置算法中的ENERGY-ESTIMATE是基于節(jié)點(diǎn)的能耗模型的,與服務(wù)器當(dāng)前的使用狀態(tài)和虛擬機(jī)申請的資源規(guī)模相關(guān)。虛擬機(jī)對服務(wù)器的能耗估計(jì)為放置該虛擬機(jī)后,服務(wù)器能耗增長的部分。
[0072]步驟503、選取步驟502中能耗最小的網(wǎng)絡(luò)節(jié)點(diǎn)作為放置目標(biāo)節(jié)點(diǎn);
[0073]步驟504、將當(dāng)前虛擬機(jī)放在放置目標(biāo)節(jié)點(diǎn)上,并更新放置目標(biāo)節(jié)點(diǎn)信息,進(jìn)入步驟七。
[0074]該算法的目標(biāo)不僅是讓虛擬機(jī)和物理節(jié)點(diǎn)進(jìn)行匹配,也要讓集群的能耗最少。
[0075]從虛擬機(jī)列表中選擇一個(gè)虛擬機(jī)i,添加到放置目標(biāo)節(jié)點(diǎn)的虛擬機(jī)集合中,并將虛擬機(jī)i放置在該節(jié)點(diǎn)上,更新該節(jié)點(diǎn)信息。
[0076]步驟六、再次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),獲取剩余可用資源最多的網(wǎng)絡(luò)節(jié)點(diǎn),迀出該節(jié)點(diǎn)上的某個(gè)虛擬機(jī),放置當(dāng)前虛擬機(jī),進(jìn)入步驟七;
[0077]如圖3所示,具體為:
[0078]步驟601、遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),尋找剩余資源最多的當(dāng)前網(wǎng)絡(luò)節(jié)點(diǎn),記為Nodek
[0079]步驟602、對節(jié)點(diǎn)Nodek上各虛擬機(jī)的使用資源升序排列,
[0080]網(wǎng)絡(luò)節(jié)點(diǎn)上虛擬機(jī)的使用資源越小,則該節(jié)點(diǎn)的剩余資源就越大;
[0081]步驟603、按使用資源由小到大的順序選取虛擬機(jī)作為待迀出虛擬機(jī)vmt;
[0082]待迀出虛擬機(jī)Vmt初始值為節(jié)點(diǎn)Node k上使用資源最小的虛擬機(jī);
[0083]步驟604、判斷將虛擬機(jī)Vmt迀出后,節(jié)點(diǎn)Node k的剩余可用資源能否符合當(dāng)前虛擬機(jī)Vm,的資源請求,如果滿足,將待迀出虛擬機(jī)Vm t迀出,同時(shí)將當(dāng)前虛擬機(jī)Vm ,放置到節(jié)點(diǎn)Nodek,并更新節(jié)點(diǎn)NodeJ^E ;否則,當(dāng)前虛擬機(jī)Vm.j沒有成功放置,返回步驟603。
[0084]步驟605、遍歷其余網(wǎng)絡(luò)節(jié)點(diǎn),為待迀出虛擬機(jī)¥!1^尋找目標(biāo)節(jié)點(diǎn)進(jìn)行放置;
[0085]計(jì)算其余各網(wǎng)絡(luò)節(jié)點(diǎn)的當(dāng)前剩余可用資源,尋找能滿足虛擬機(jī)Vmt的資源請求,且虛擬機(jī)資源使用率最高的節(jié)點(diǎn),將待迀出虛擬機(jī)Vmt迀移到該節(jié)點(diǎn),并更新該節(jié)點(diǎn)信息。
[0086]步驟606、如果網(wǎng)絡(luò)節(jié)點(diǎn)Nodek,將使用資源最大的虛擬機(jī)迀出后,剩余的可用資源仍不滿足當(dāng)前虛擬機(jī)資源請求數(shù)目,則返回步驟601繼續(xù)遍歷其余所有網(wǎng)絡(luò)節(jié)點(diǎn),;
[0087]步驟七、順序選取虛擬機(jī)隊(duì)列中的下一個(gè)虛擬機(jī)作為當(dāng)前虛擬機(jī),返回步驟四;直至將虛擬機(jī)隊(duì)列中所有虛擬機(jī)放置完畢,算法結(jié)束。
[0088]步驟八、根據(jù)虛擬機(jī)實(shí)際使用的資源規(guī)模,對系統(tǒng)能耗進(jìn)行再優(yōu)化。
[0089]使用虛擬機(jī)迀移算法,在虛擬機(jī)放置算法中,虛擬機(jī)優(yōu)化放置節(jié)點(diǎn)是基于虛擬機(jī)申請資源的規(guī)模。當(dāng)系統(tǒng)在運(yùn)行一段時(shí)間趨于穩(wěn)定后,可以采用虛擬機(jī)實(shí)際使用的資源規(guī)模,對系統(tǒng)能耗進(jìn)行再優(yōu)化。虛擬機(jī)放置算法與虛擬機(jī)迀移算法都是集群資源調(diào)度算法的子算法。
[0090]當(dāng)虛擬機(jī)隊(duì)列中所有虛擬機(jī)放置完畢后,集群中沒有新的虛擬機(jī)請求到來時(shí),對集群中的每個(gè)節(jié)點(diǎn)通過公式ENERGY-ESTIMATE計(jì)算各節(jié)點(diǎn)當(dāng)前的能耗,同時(shí)預(yù)測虛擬機(jī)迀移到其他節(jié)點(diǎn)后的能耗情況,尋找能耗最小值。如果能耗最小的節(jié)點(diǎn)不是這個(gè)位置上現(xiàn)有的節(jié)點(diǎn),用能耗最小的節(jié)點(diǎn)代替現(xiàn)有節(jié)點(diǎn),完成虛擬機(jī)的迀移,并更新這兩個(gè)節(jié)點(diǎn)的信息。重復(fù)直到所有節(jié)點(diǎn)均經(jīng)過處理。優(yōu)化后為下一個(gè)虛擬機(jī)請求隊(duì)列釋放更多的剩余資源。
[0091]虛擬機(jī)迀移算法可以被看作是對云計(jì)算集群的能耗的二次優(yōu)化。在虛擬機(jī)放置算法中,虛擬機(jī)優(yōu)化放置節(jié)點(diǎn)是基于虛擬機(jī)申請資源的規(guī)模。當(dāng)系統(tǒng)在運(yùn)行一段時(shí)間趨于穩(wěn)定后,可以采用虛擬機(jī)實(shí)際使用的資源規(guī)模,對系統(tǒng)能耗進(jìn)行再優(yōu)化。虛擬機(jī)放置算法與虛擬機(jī)迀移算法都是集群資源調(diào)度算法的子算法。
【主權(quán)項(xiàng)】
1.一種基于云計(jì)算數(shù)據(jù)中心的統(tǒng)一資源調(diào)度節(jié)能方法,其特征在于,包括以下步驟: 步驟一、初始化數(shù)據(jù)中心所有的網(wǎng)絡(luò)節(jié)點(diǎn)和虛擬機(jī)隊(duì)列; 初始化網(wǎng)絡(luò)節(jié)點(diǎn)包括:1)將各節(jié)點(diǎn)的能耗使用、資源使用設(shè)為零;2)為每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的使用率設(shè)定上下閾值; 將虛擬機(jī)列表集合設(shè)為空集; 步驟二、將用戶提出的虛擬機(jī)請求存儲(chǔ)在虛擬機(jī)隊(duì)列中; 步驟三、根據(jù)用戶提交的虛擬機(jī)請求,對虛擬機(jī)按照虛擬機(jī)的資源請求數(shù)目降序排列; 步驟四、針對排列后的虛擬機(jī),依次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),判斷是否有網(wǎng)絡(luò)節(jié)點(diǎn)能夠滿足當(dāng)前虛擬機(jī)請求;如果滿足,進(jìn)入步驟五;否則進(jìn)入步驟六; 當(dāng)前虛擬機(jī)記為Vmj,1 ^ j ^ η,η為請求資源的虛擬機(jī)的總數(shù);Vmj初始為資源請求數(shù)目最多的虛擬機(jī); 步驟五、獲取滿足當(dāng)前虛擬機(jī)請求的能耗最小的網(wǎng)絡(luò)節(jié)點(diǎn)作為放置目標(biāo)節(jié)點(diǎn),進(jìn)入步驟七; 步驟六、再次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),獲取剩余可用資源最多的網(wǎng)絡(luò)節(jié)點(diǎn),迀出該節(jié)點(diǎn)上的某個(gè)虛擬機(jī),放置當(dāng)前虛擬機(jī),進(jìn)入步驟七; 步驟七、順序選取虛擬機(jī)隊(duì)列中的下一個(gè)虛擬機(jī)作為當(dāng)前虛擬機(jī),返回步驟四;直至將虛擬機(jī)隊(duì)列中所有虛擬機(jī)放置完畢,算法結(jié)束; 步驟八、根據(jù)虛擬機(jī)實(shí)際使用的資源規(guī)模,對系統(tǒng)能耗進(jìn)行再優(yōu)化。2.如權(quán)利要求1所述的一種基于云計(jì)算數(shù)據(jù)中心的統(tǒng)一資源調(diào)度節(jié)能方法,其特征在于,所述的步驟五,具體為: 步驟501、依次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),對能滿足當(dāng)前虛擬機(jī)資源請求數(shù)目的網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行標(biāo)記; 如果某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的可用資源數(shù)目大于等于當(dāng)前虛擬機(jī)的資源請求數(shù)目,則該網(wǎng)絡(luò)節(jié)點(diǎn)滿足虛擬機(jī)請求,標(biāo)記該網(wǎng)絡(luò)節(jié)點(diǎn)的布爾變量W (Node)值為1 ; 步驟502、針對標(biāo)記的各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn),分別計(jì)算虛擬機(jī)放置在各標(biāo)記網(wǎng)絡(luò)節(jié)點(diǎn)上的能耗; 步驟503、選取能耗最小的網(wǎng)絡(luò)節(jié)點(diǎn)作為放置目標(biāo)節(jié)點(diǎn); 步驟504、將當(dāng)前虛擬機(jī)放在放置目標(biāo)節(jié)點(diǎn)上,并更新放置目標(biāo)節(jié)點(diǎn)。3.如權(quán)利要求1所述的一種基于云計(jì)算數(shù)據(jù)中心的統(tǒng)一資源調(diào)度節(jié)能方法,其特征在于,所述的步驟六,具體為:具體為: 步驟601、遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),尋找剩余可用資源最多的網(wǎng)絡(luò)節(jié)點(diǎn),記為Nodek 步驟602、對網(wǎng)絡(luò)節(jié)點(diǎn)Nodek上各虛擬機(jī)的使用資源升序排列; 步驟603、依次選取從小到大排序后的虛擬機(jī)作為待迀出虛擬機(jī)Vmt; 步驟604、判斷將待迀出虛擬機(jī)^^迀出后,節(jié)點(diǎn)Node k的剩余可用資源能否符合當(dāng)前虛擬機(jī)Vnij的資源請求,如果能,將待迀出虛擬機(jī)Vm t迀出,同時(shí)將當(dāng)前虛擬機(jī)Vm.j放置到節(jié)點(diǎn)Nodek,并更新節(jié)點(diǎn)Nodek能耗使用和資源使用信息;否則,當(dāng)前虛擬機(jī)Vm ,沒有成功放置,返回步驟603 ; 步驟605、遍歷其余網(wǎng)絡(luò)節(jié)點(diǎn),為待迀出虛擬機(jī)^^尋找目標(biāo)節(jié)點(diǎn)進(jìn)行放置; 計(jì)算其余各網(wǎng)絡(luò)節(jié)點(diǎn)的當(dāng)前剩余可用資源,尋找能滿足虛擬機(jī)Vmt的資源請求,且虛擬機(jī)資源使用率最高的節(jié)點(diǎn),將待迀出虛擬機(jī)Vmt迀移到該節(jié)點(diǎn),并更新該節(jié)點(diǎn)能耗使用和資源使用信息; 步驟606、如果網(wǎng)絡(luò)節(jié)點(diǎn)Nodek,將使用資源最大的虛擬機(jī)迀出后,剩余的可用資源仍不滿足當(dāng)前虛擬機(jī)Vm,的資源請求數(shù)目,則返回步驟601繼續(xù)遍歷其余所有網(wǎng)絡(luò)節(jié)點(diǎn)。4.如權(quán)利要求1所述的一種基于云計(jì)算數(shù)據(jù)中心的統(tǒng)一資源調(diào)度節(jié)能方法,其特征在于,所述的步驟八,具體為:當(dāng)虛擬機(jī)隊(duì)列中所有虛擬機(jī)放置完畢后,集群中沒有新的虛擬機(jī)請求到來時(shí),對集群中的各網(wǎng)絡(luò)節(jié)點(diǎn)分別計(jì)算當(dāng)前的能耗; 將各節(jié)點(diǎn)上虛擬機(jī)的使用資源升序排列,同時(shí)計(jì)算各節(jié)點(diǎn)的剩余可用資源;如果某網(wǎng)絡(luò)節(jié)點(diǎn)Node上的剩余可用資源滿足另一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上某個(gè)虛擬機(jī)Vm的使用資源,則將虛擬機(jī)Vm迀移到網(wǎng)絡(luò)節(jié)點(diǎn)Node上,更新網(wǎng)絡(luò)節(jié)點(diǎn)Node的能耗使用和資源使用信息,使網(wǎng)絡(luò)節(jié)點(diǎn)Node的使用資源最大化;或者將某網(wǎng)絡(luò)節(jié)點(diǎn)使用資源較小的虛擬機(jī)迀出后,該網(wǎng)絡(luò)節(jié)點(diǎn)的剩余可用資源滿足資源使用數(shù)目更大的虛擬機(jī),將資源較小的虛擬機(jī)迀移,放置資源使用數(shù)目更大的虛擬機(jī)并更新該網(wǎng)絡(luò)節(jié)點(diǎn)能耗使用和資源使用信息。
【專利摘要】本發(fā)明公開了一種基于云計(jì)算數(shù)據(jù)中心的統(tǒng)一資源調(diào)度節(jié)能方法,步驟如下:一、初始化網(wǎng)絡(luò)節(jié)點(diǎn)和虛擬機(jī)隊(duì)列;二、將虛擬機(jī)請求存儲(chǔ)在虛擬機(jī)隊(duì)列中;三、對虛擬機(jī)按照虛擬機(jī)的資源請求數(shù)目降序排列;四、依次遍歷所有網(wǎng)絡(luò)節(jié)點(diǎn),判斷是否有網(wǎng)絡(luò)節(jié)點(diǎn)滿足當(dāng)前虛擬機(jī)請求;如果有,將當(dāng)前虛擬機(jī)請求的能耗最小的網(wǎng)絡(luò)節(jié)點(diǎn)作為放置目標(biāo)節(jié)點(diǎn),否則,尋找剩余可用資源最多的網(wǎng)絡(luò)節(jié)點(diǎn),遷出該節(jié)點(diǎn)上的某個(gè)虛擬機(jī),放置當(dāng)前虛擬機(jī);五、順序選取下一個(gè)虛擬機(jī)作為當(dāng)前虛擬機(jī),重新判斷;六、對系統(tǒng)能耗進(jìn)行再優(yōu)化。優(yōu)點(diǎn)在于:平衡了最小化功耗問題和滿足SLA要求之間的矛盾關(guān)系,是面向能耗優(yōu)化的資源調(diào)度算法,在能耗優(yōu)化方面具有更高的效率。
【IPC分類】G06F1/32, G06F9/50, G06F9/48, H04L29/08
【公開號】CN105426241
【申請?zhí)枴緾N201510782854
【發(fā)明人】吳文峻, 趙德棟, 孫吳昊, 孟憲
【申請人】北京航空航天大學(xué)
【公開日】2016年3月23日
【申請日】2015年11月16日