本發(fā)明涉及到一種基于bp(benefitpunishment)-tabu搜索的云任務(wù)負(fù)載均衡調(diào)度方法。
背景技術(shù):
云計(jì)算的核心思想是利用分布在各地閑散異構(gòu)的大規(guī)模廉價(jià)物理資源,整合形成巨大的虛擬資源池,再通過網(wǎng)絡(luò)將用戶提交的計(jì)算和存儲(chǔ)任務(wù)調(diào)度到不同的虛擬機(jī)上,使得人們能夠以極低的成本投入提升計(jì)算能力及存儲(chǔ)容量,獲得較高的服務(wù)質(zhì)量。
在云環(huán)境下,一個(gè)個(gè)不能再分割的云任務(wù)從創(chuàng)建到被處理的過程,中間經(jīng)過兩層調(diào)度,由此可以得出云任務(wù)調(diào)度二級結(jié)構(gòu)模型。第一層調(diào)度模型為從用戶應(yīng)用到虛擬機(jī)的調(diào)度,第二層調(diào)度模型為虛擬機(jī)到實(shí)體主機(jī)的調(diào)度。本發(fā)明主要研究第一層用戶應(yīng)用,即云任務(wù),到虛擬機(jī)的調(diào)度中如何降低云任務(wù)總執(zhí)行時(shí)間以及提高虛擬機(jī)的負(fù)載均衡度的。
云計(jì)算環(huán)境下任務(wù)調(diào)度的實(shí)質(zhì)就是將n個(gè)相互獨(dú)立的任務(wù)分配到m個(gè)閑散異構(gòu)的物理資源上,使得總?cè)蝿?wù)完成時(shí)間最小并且可用資源得到充分利用。任務(wù)調(diào)度作為云計(jì)算平臺(tái)的重要組成部分,是將用戶提交的任務(wù)進(jìn)行合理高效地調(diào)度和分配,其效率直接影響到云計(jì)算平臺(tái)的整體性能和服務(wù)質(zhì)量。例如,順序任務(wù)調(diào)度算法把一組任務(wù)順序分配給一組虛擬機(jī),盡量保證每個(gè)虛擬機(jī)運(yùn)行相同數(shù)量的任務(wù)以平衡負(fù)載。但沒有考慮任務(wù)的需求和虛擬機(jī)之間的差別任務(wù)調(diào)度問題已經(jīng)被證明是一個(gè)np完全問題,在mn個(gè)可能任務(wù)調(diào)度的解空間尋找近似最優(yōu)解,使得總?cè)蝿?wù)的執(zhí)行時(shí)間和負(fù)載均衡度最小,其中執(zhí)行時(shí)間最小是為了滿足用戶的服務(wù)質(zhì)量,負(fù)載均衡度最小是為了保證云環(huán)境的穩(wěn)定性。
目前,求解云任務(wù)調(diào)度近似最優(yōu)解的算法主要分為傳統(tǒng)啟發(fā)式算法以及智能算法兩類。其中,傳統(tǒng)啟發(fā)式算法主要包括:brauntd,siegelhj,beckn在2001年提出的max-min算法、zhengq,veeravallib在2009年提出的min-min算法、shishao-feng,liuyan-bing在2012年提出的動(dòng)態(tài)規(guī)劃算法等;智能算法主要包括:yefent,wangzhi-jian,xuxin-kun在2012年提出的蟻群算法、蔣尚婷,王謙在2013年提出的基于粒子群的任務(wù)調(diào)度算法、以及李劍鋒、彭艦于2011年提出的遺傳算法等。其中,傳統(tǒng)啟發(fā)式算法一般采用先易后難或先難后易的原則,每次將任務(wù)優(yōu)先分配給執(zhí)行它最早完成的計(jì)算資源,然而其無法最小化總?cè)蝿?wù)的實(shí)際執(zhí)行時(shí)間。智能算法能有效地降低總?cè)蝿?wù)執(zhí)行時(shí)間,但是對于海量的任務(wù)調(diào)度,可能陷入局部最優(yōu)解,在負(fù)載均衡方面也有改善的空間。
禁忌(tabu)搜索算法是一種啟發(fā)式算法具有智能記憶功能,與模擬退火算法有一定的相似性,但求出的最優(yōu)解往往優(yōu)于傳統(tǒng)算法,同時(shí)又具有較高的搜索效率。在求解云任務(wù)負(fù)載均衡調(diào)度方面有一定的優(yōu)勢。孫凌宇、冷明等人在2015年提出一種云環(huán)境下基于tabu搜索的負(fù)載均衡調(diào)度算法,并申請了相關(guān)發(fā)明專利(專利號為201410527189.x),但是,其使用啟發(fā)式優(yōu)先分配策略獲得初始解較慢且效果不優(yōu);用于決策任務(wù)交換的收益值函數(shù)標(biāo)準(zhǔn)單一,未綜合多方面因素以保證交換后任務(wù)分配結(jié)果最優(yōu);自身的禁忌準(zhǔn)則在任務(wù)量較大時(shí),易陷入局部最優(yōu)解的困境。楊文強(qiáng)、鄧麗等人針對多目標(biāo)自動(dòng)化倉庫調(diào)度問題提出基于pareto解集的tabu搜索算法,但是其未考慮tabu搜索對于初始解要求較高問題,且其未借助優(yōu)值函數(shù),得到的調(diào)度方案在負(fù)載均衡方面有待改善。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有云資源任務(wù)調(diào)度方法陷入任務(wù)分配不均衡、單臺(tái)虛擬機(jī)資源負(fù)載過大或者空閑較多的不足,本發(fā)明提出一種任務(wù)分配均衡的基于bp-tabu搜索的云任務(wù)負(fù)載均衡調(diào)度方法,適用于云環(huán)境下任務(wù)調(diào)度的負(fù)載均衡方面,
本發(fā)明所采用的技術(shù)方案是:
一種基于bp-tabu搜索的云任務(wù)負(fù)載均衡調(diào)度方法,包括以下步驟:
第一步:形式化描述云計(jì)算環(huán)境下的負(fù)載均衡任務(wù)調(diào)度問題,并給出對于云計(jì)算環(huán)境下各元素相關(guān)定義,包括:云任務(wù)t、虛擬機(jī)資源vm、執(zhí)行時(shí)間矩陣ct、云任務(wù)到虛擬機(jī)的分配矩陣p、任務(wù)最早完成時(shí)間makespan、總?cè)蝿?wù)最優(yōu)完成時(shí)間vl、負(fù)載均衡度lbp;
第二步:基于貪心算法思想求得任務(wù)調(diào)度初始解,使用對時(shí)間貪心的算法,對任務(wù)調(diào)度初始解進(jìn)行求解,過程為:先通過計(jì)算獲得每個(gè)任務(wù)在相應(yīng)虛擬機(jī)資源上的最小完成時(shí)間列表,然后在這些最小完成時(shí)間中,選取出其中的最大值與最小值進(jìn)行組合,如果該任務(wù)組合對相對于其他任務(wù)組合對分配時(shí)間最優(yōu),就完成任務(wù)資源分配;如果不是最優(yōu),即將任務(wù)對分配給其他虛擬機(jī)資源;若任務(wù)對分配存在多種方案,挑選任務(wù)運(yùn)行數(shù)最少的虛擬機(jī)資源分配;
第三步:針對不同任務(wù)分配方案,根據(jù)虛擬機(jī)處理能力mips、指令的執(zhí)行成本以及延遲成本,定義虛擬機(jī)利用效益函數(shù),用于衡量虛擬機(jī)的使用效益。根據(jù)虛擬機(jī)總利用效益,以及虛擬機(jī)的總負(fù)載平衡度,定義任務(wù)調(diào)度方案p下的優(yōu)值(benefit)函數(shù)bp,用于衡量該任務(wù)調(diào)度方案的任務(wù)優(yōu)值;過程如下:
3.1、在任務(wù)分配方案p下,定義虛擬機(jī)vmj當(dāng)前狀態(tài)下vmuj為虛擬機(jī)vmj的利用效益,函數(shù)如下:
vmuj=vmu(α,dp,mips)
其中α為虛擬機(jī)處理指令的執(zhí)行成本,dp為處理指令的延遲成本;
3.2、定義n個(gè)不同任務(wù)調(diào)度到m個(gè)不同虛擬機(jī)上的平均負(fù)載,即總?cè)蝿?wù)最優(yōu)完成時(shí)間為
其中w1,w2為權(quán)重值。vmu為虛擬機(jī)利用效益和,lbp為該任務(wù)調(diào)度方案下的負(fù)載均衡度;
第四步、結(jié)合貪心算法獲得的任務(wù)調(diào)度初始解,通過衡量包含效益值以及負(fù)載均衡度的優(yōu)值函數(shù),得出基于tabu搜索算法優(yōu)化后的任務(wù)調(diào)度分配策略。由于tabu搜索的禁忌數(shù)組不能保證當(dāng)搜索進(jìn)入局部最優(yōu)時(shí)一定可以跳出。本發(fā)明在此基礎(chǔ)上提出了用于跳出局部最優(yōu)的懲罰策略。
進(jìn)一步,所述第四步中,使用禁忌算法獲取任務(wù)調(diào)度最優(yōu)解的過程包括以下步驟如下:
4.1、假設(shè)在某個(gè)云任務(wù)環(huán)境下,其中不可再分的云任務(wù)的總數(shù)為n,初始化禁忌數(shù)組tabulist[1,2,…,n],其中數(shù)組的初始值均為1,用于標(biāo)識該任務(wù)可以被交換;
4.2、根據(jù)1.5可知,虛擬機(jī)的負(fù)載vlj為分配給第j個(gè)虛擬機(jī)vmj所有任務(wù)的預(yù)期完成時(shí)間,即
4.3、若分配至vmmax的任務(wù)在tabulist中的值均為0,即均被置為禁止交換狀態(tài),則跳轉(zhuǎn)到步驟4.8,否則跳轉(zhuǎn)到4.4步;
4.4、選擇虛擬機(jī)vmmax上可被用于交換的任務(wù)tk,并設(shè)置其禁忌值tabulist[k]=0;
4.5、若分配至虛擬機(jī)vmmin的任務(wù)均被禁止交換,則跳轉(zhuǎn)到4.8;
4.6、分別選擇虛擬機(jī)vmmin上可交換任務(wù)tl,根據(jù)3.2,計(jì)算各任務(wù)交換狀態(tài)下的調(diào)度方案的優(yōu)值函數(shù)值bp,選擇使優(yōu)值函數(shù)值最高的任務(wù)對(k,l)進(jìn)行交換;
4.7、若交換后的優(yōu)值函數(shù)bp的值大于原優(yōu)值函數(shù)的值,則完成任務(wù)交換,更新禁忌表tabulist[l]=0,并且同時(shí)更新負(fù)載最大以及最小的虛擬機(jī)vmmax,vmmin的負(fù)載vl。跳轉(zhuǎn)到步驟4.2;
4.8、結(jié)束算法,獲得任務(wù)調(diào)度的最優(yōu)分配方案。
再進(jìn)一步,由于上述tabu搜索的禁忌數(shù)組不能保證當(dāng)搜索進(jìn)入局部最優(yōu)時(shí)一定可以跳出。跳出局部最優(yōu)的懲罰(punishment)策略的設(shè)計(jì)主要如下:
對修改禁忌表tabulist中禁忌對象的次數(shù)進(jìn)行記錄,其記錄次數(shù)用pt表示,初始值為0。當(dāng)禁忌對象進(jìn)入禁忌表時(shí),pt將被加1,當(dāng)連續(xù)k次tabulist集沒有更新時(shí),即pt=k時(shí),將會(huì)啟動(dòng)懲罰策略。定義虛擬機(jī)隨機(jī)分量函數(shù)p*(k):
p*(k)=p(k)+w*pt
其中p(k)為當(dāng)前最小虛擬機(jī)的索引量,w為隨機(jī)懲罰常量,k為記錄次數(shù)閾值。虛擬機(jī)分量函數(shù)的增加會(huì)對最小任務(wù)負(fù)載vl虛擬機(jī)vmmin的選擇產(chǎn)生影響,最小虛擬機(jī)的索引量p(k)會(huì)偏移,根據(jù)最新的p(k)選擇相應(yīng)(相鄰)的虛擬機(jī)代替vmmin,從而引導(dǎo)搜索跳出局部最優(yōu)。
更進(jìn)一步,優(yōu)化如下:所述步驟4.1中,增加虛擬機(jī)隨機(jī)分量函數(shù),初始化記錄次數(shù)pt=0,即隨機(jī)分量函數(shù)閾值k;所述步驟4.2中,增加對于閾值k判斷,若pt>=k,則使用隨機(jī)分量函數(shù)p*(k)對vmmin的選擇使用懲罰策略,若pt<=k,則跳過進(jìn)入下一步;所述步驟4.7中,增加對于記錄次數(shù)pt的操作,若交換后的優(yōu)值函數(shù)bp的值小于原優(yōu)值函數(shù)的值,則記錄次數(shù)pt加1,否則,pt不變,進(jìn)入下一步。
所述第一步中,云計(jì)算環(huán)境下各元素相關(guān)定義如下:
1.1、假設(shè)云環(huán)境下,任務(wù)作業(yè)已經(jīng)分解為n個(gè)無法再分割的子任務(wù)的集合,定義任務(wù)集合t={t1,…,ti,…,tn},其中ti為分解成的任務(wù)集合中的第i個(gè)任務(wù)(i=1,2,…,n),n為任務(wù)數(shù)量,且定義mii為任務(wù)ti的總指令長度;
1.2、假設(shè)有m個(gè)虛擬資源參與任務(wù)的處理,且虛擬資源以虛擬機(jī)的方式提供。定義虛擬機(jī)集合vm={vm1,…,vmj,…,vmm},其中vmj為第j個(gè)虛擬機(jī)資源,j=1,2,…,m,m為虛擬機(jī)數(shù)量,且定義mipsj為虛擬機(jī)vmj的指令執(zhí)行速度,單位:每秒執(zhí)行指令條數(shù);
1.3、定義n個(gè)不同任務(wù)t調(diào)度到m個(gè)不同虛擬機(jī)vm上所有可能的任務(wù)調(diào)度方案集η,定義p代表任務(wù)分配方案集η中的一種任務(wù)調(diào)度方案,即一個(gè)n×m的矩陣,其中pij表示任務(wù)ti與虛擬機(jī)vmj的分配關(guān)系,且p∈{0,1},
1.4、云環(huán)境下,假定每個(gè)任務(wù)只能分配到單臺(tái)虛擬機(jī)上執(zhí)行,且在某個(gè)時(shí)間段,一個(gè)虛擬機(jī)只能執(zhí)行一個(gè)任務(wù),定義n個(gè)不同的任務(wù)調(diào)度到m個(gè)不同臺(tái)虛擬機(jī)上的預(yù)期完成時(shí)間矩陣ct,其中ct[i][j]用于表示任務(wù)ti在虛擬機(jī)資源vmj上的任務(wù)完成時(shí)間,即ct[i][j]=mii/mipsj,下文用ctij表示;
1.5、對于某任務(wù)分配方案p,假設(shè)虛擬機(jī)vmj上已經(jīng)分配了前k-1個(gè)任務(wù),定義虛擬機(jī)vmj的當(dāng)前負(fù)載vlj為分配給虛擬機(jī)vmj的所有任務(wù)所需執(zhí)行時(shí)間,即
所述第二步中,使用對時(shí)間貪心的算法對任務(wù)調(diào)度初始解進(jìn)行求解,包括以下步驟:
2.1、初始化任務(wù)集合t以及虛擬機(jī)集合vm,由1.1,1.2已知mii表示任務(wù)ti的指令長度,mipsj表示虛擬機(jī)vmj的每秒處理指令數(shù),由1.4已知n個(gè)不同的任務(wù)調(diào)度到m個(gè)不同臺(tái)虛擬機(jī)上的預(yù)期完成時(shí)間矩陣ct;
2.2、將任務(wù)集合根據(jù)mi的大小進(jìn)行降序排列,虛擬機(jī)集合根據(jù)mips進(jìn)行升序排列;然后,初始化ct矩陣、行號h=0,由1.5已經(jīng)定義makespanij為當(dāng)前任務(wù)ti分配給虛擬機(jī)vmj的時(shí)間跨度,即任務(wù)ti在vmj上執(zhí)行的最早完成時(shí)間;
2.3、判斷所有任務(wù)是否已經(jīng)被分配完成,若完成分配,則結(jié)束算法跳轉(zhuǎn)到2.7獲得任務(wù)調(diào)度初始解,否則進(jìn)入2.4;
2.4、從ct矩陣行號為h開始,每次都嘗試將任務(wù)分配給最后一列對應(yīng)的虛擬機(jī)資源;
2.5、如果當(dāng)前虛擬機(jī)未分配任務(wù),則比較當(dāng)前任務(wù)調(diào)度給該虛擬機(jī)是否最優(yōu),若已經(jīng)分配任務(wù),則比較makespanij是否為最優(yōu)值,若是,那么完成任務(wù)分配,跳到2.6;否則它將分配給使makespanij結(jié)果最優(yōu)的虛擬機(jī)資源vmj,并且跳轉(zhuǎn)2.6;
2.6、更新行號h=h+1,跳轉(zhuǎn)到2.3;
2.7、若任務(wù)對調(diào)度存在多種方案,挑選任務(wù)運(yùn)行數(shù)最少的虛擬機(jī)資源分配,實(shí)現(xiàn)初始解的負(fù)載均衡。
本發(fā)明的技術(shù)構(gòu)思為:云計(jì)算環(huán)境下,任務(wù)的調(diào)度方法層出不窮,大多方法只考慮到任務(wù)完成時(shí)間,而未考慮到云資源利用率的最大化。本發(fā)明提出了一種基于bp-tabu搜索的云任務(wù)負(fù)載均衡調(diào)度方法,其內(nèi)容包括:通過時(shí)間貪心算法求出tabu搜索算法的初始解,然后利用基于多因素優(yōu)值函數(shù)的啟發(fā)式tabu搜索算法思想,結(jié)合虛擬機(jī)隨機(jī)分量函數(shù)實(shí)現(xiàn)的跳出局部最優(yōu)的懲戒策略,實(shí)現(xiàn)云環(huán)境下的任務(wù)調(diào)度總完成時(shí)間最短且負(fù)載均衡度最低。
本發(fā)明的相比其他云任務(wù)調(diào)度方法具有如下幾個(gè)優(yōu)點(diǎn):
(1)使用對時(shí)間貪心的算法可以快速求解出任務(wù)調(diào)度的初始解,并且此算法具有一定的負(fù)載均衡效益。
(2)在時(shí)間貪心算法獲得的任務(wù)調(diào)度初始解基礎(chǔ)上,使用基于啟發(fā)式tabu搜索算法思想,根據(jù)包含負(fù)載平衡度的優(yōu)值函數(shù),獲得優(yōu)值函數(shù)最優(yōu)的任務(wù)調(diào)度方案。使得到的任務(wù)調(diào)度方案任務(wù)總完成時(shí)間最低,任務(wù)總負(fù)載均衡度最高。
(3)使用基于隨機(jī)分量函數(shù)的懲罰策略,引導(dǎo)tabu搜索算法跳出局部最優(yōu)解。使最終獲得的任務(wù)調(diào)度方案盡可能趨于全局最優(yōu)。
附圖說明
圖1示出了云環(huán)境下任務(wù)調(diào)度模型圖。
圖2示出了時(shí)間貪心的算法流程圖。
圖3示出了基于tabu搜索的云任務(wù)負(fù)載均衡調(diào)度算法流程圖。
圖4示出了基于tabu搜索的懲罰策略設(shè)計(jì)圖。
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明作進(jìn)一步描述。
參照圖1~圖4,一種基于bp-tabu搜索的云任務(wù)負(fù)載均衡調(diào)度方法,圖1為云環(huán)境下任務(wù)調(diào)度模型圖。在云環(huán)境下,一個(gè)個(gè)不能再分割的云任務(wù)從創(chuàng)建到被處理的過程,中間經(jīng)過兩層調(diào)度,由此可以得出云任務(wù)調(diào)度二級結(jié)構(gòu)模型。第一層調(diào)度模型為從用戶應(yīng)用(client)產(chǎn)生的多個(gè)任務(wù)t到虛擬機(jī)(vm)的調(diào)度,第二層調(diào)度模型為虛擬機(jī)(vm)到實(shí)體主機(jī)(host)的調(diào)度。本發(fā)明主要研究第一層用戶應(yīng)用,即云任務(wù)t到虛擬機(jī)vm的調(diào)度中如何降低云任務(wù)總執(zhí)行時(shí)間以及提高虛擬機(jī)的負(fù)載均衡度的。
所述云任務(wù)負(fù)載均衡調(diào)度方法包括以下步驟:
第一步,對于云計(jì)算環(huán)境下的負(fù)載均衡任務(wù)調(diào)度問題進(jìn)行形式化描述,并給出對于云計(jì)算環(huán)境下各元素相關(guān)定義,包括:云任務(wù)t、虛擬機(jī)資源vm、執(zhí)行時(shí)間矩陣ct、云任務(wù)到虛擬機(jī)的分配矩陣p、任務(wù)最早完成時(shí)間makespan、總?cè)蝿?wù)最優(yōu)完成時(shí)間vl和負(fù)載均衡度lbp,
1.1、假設(shè)云環(huán)境下,任務(wù)作業(yè)已經(jīng)分解為n個(gè)無法再分割的子任務(wù)的集合。定義任務(wù)集合t={t1,…,ti,…,tn},其中ti為分解成的任務(wù)集合中的第i個(gè)任務(wù)(i=1,2,…,n),n為任務(wù)數(shù)量,且定義mii為任務(wù)ti的總指令長度。
1.2、假設(shè)有m個(gè)虛擬資源參與任務(wù)的處理,且虛擬資源以虛擬機(jī)的方式提供。定義虛擬機(jī)集合vm={vm1,…,vmj,…,vmm},其中vmj為第j個(gè)虛擬機(jī)資源(j=1,2,…,m),m為虛擬機(jī)數(shù)量,且定義mipsj為虛擬機(jī)vmj的指令執(zhí)行速度(單位:每秒執(zhí)行指令條數(shù))。
1.3、定義n個(gè)不同任務(wù)t調(diào)度到m個(gè)不同虛擬機(jī)vm上所有可能的任務(wù)調(diào)度方案集η。定義p代表任務(wù)分配方案集η中的一種任務(wù)調(diào)度方案,即一個(gè)n×m的矩陣。其中pij表示任務(wù)ti與虛擬機(jī)vmj的分配關(guān)系,且p∈{0,1},
1.4、云環(huán)境下,假定每個(gè)任務(wù)只能分配到單臺(tái)虛擬機(jī)上執(zhí)行,且在某個(gè)時(shí)間段,一個(gè)虛擬機(jī)只能執(zhí)行一個(gè)任務(wù)。定義n個(gè)不同的任務(wù)調(diào)度到m個(gè)不同臺(tái)虛擬機(jī)上的預(yù)期完成時(shí)間矩陣ct,其中ct[i][j]用于表示任務(wù)ti在虛擬機(jī)資源vmj上的任務(wù)完成時(shí)間,即ct[i][j]=mii/mipsj,下文用ctij表示。
1.5、對于某任務(wù)分配方案p,假設(shè)虛擬機(jī)vmj上已經(jīng)分配了前k-1個(gè)任務(wù),定義虛擬機(jī)vmj的當(dāng)前負(fù)載vlj為分配給虛擬機(jī)vmj的所有任務(wù)所需執(zhí)行時(shí)間,即
第二步,圖2為基于貪心算法思想求得任務(wù)調(diào)度初始解的流程圖。主要運(yùn)用的思想是,先通過計(jì)算獲得每個(gè)任務(wù)在相應(yīng)虛擬機(jī)資源上的最小完成時(shí)間列表,然后在這些最小完成時(shí)間中,選取出其中的最大值與最小值進(jìn)行組合,如果該任務(wù)組合對相對于其他任務(wù)組合對分配時(shí)間最優(yōu),就完成任務(wù)資源分配;如果不是最優(yōu),即將任務(wù)對分配給其他虛擬機(jī)資源。若任務(wù)對分配存在多種方案,挑選任務(wù)運(yùn)行數(shù)最少的虛擬機(jī)資源分配。
使用對時(shí)間貪心的算法對任務(wù)調(diào)度初始解進(jìn)行求解,包括以下步驟:
2.1、初始化任務(wù)集合t以及虛擬機(jī)集合vm,由1.1,1.2已知mii表示任務(wù)ti的指令長度,mipsj表示虛擬機(jī)vmj的每秒處理指令數(shù)。由1.4已知n個(gè)不同的任務(wù)調(diào)度到m個(gè)不同臺(tái)虛擬機(jī)上的預(yù)期完成時(shí)間矩陣ct。
2.2、將任務(wù)集合根據(jù)mi的大小進(jìn)行降序排列,虛擬機(jī)集合根據(jù)mips進(jìn)行升序排列。然后,初始化ct矩陣、行號h=0。由1.5已經(jīng)定義makespanij為當(dāng)前任務(wù)ti分配給虛擬機(jī)vmj的時(shí)間跨度,即任務(wù)ti在vmj上執(zhí)行的最早完成時(shí)間。
2.3、判斷所有任務(wù)是否已經(jīng)被分配完成,若完成分配,則結(jié)束算法跳轉(zhuǎn)到2.7獲得任務(wù)調(diào)度初始解。否則進(jìn)入2.4。
2.4、從ct矩陣行號為h開始,每次都嘗試將任務(wù)分配給最后一列對應(yīng)的虛擬機(jī)資源。
2.5、如果當(dāng)前虛擬機(jī)未分配任務(wù),則比較當(dāng)前任務(wù)調(diào)度給該虛擬機(jī)是否最優(yōu),若已經(jīng)分配任務(wù),則比較makespanij是否為最優(yōu)值,若是,那么完成任務(wù)分配,跳到2.6;否則它將分配給使makespanij結(jié)果最優(yōu)的虛擬機(jī)資源vmj,并且跳轉(zhuǎn)2.6。
2.6、更新行號h=h+1,跳轉(zhuǎn)到2.3。
2.7、若任務(wù)對調(diào)度存在多種方案,挑選任務(wù)運(yùn)行數(shù)最少的虛擬機(jī)資源分配,實(shí)現(xiàn)初始解的負(fù)載均衡。
第三步,通過時(shí)間貪心算法獲得任務(wù)調(diào)度初始解后,針對不同任務(wù)分配方案,根據(jù)虛擬機(jī)處理能力mips、指令的執(zhí)行成本以及延遲成本,定義虛擬機(jī)利用效益函數(shù),用于衡量虛擬機(jī)的使用效益。根據(jù)虛擬機(jī)總利用效益,以及虛擬機(jī)的總負(fù)載平衡度,定義任務(wù)調(diào)度方案p下的優(yōu)值函數(shù)bp,用于衡量該任務(wù)調(diào)度方案的任務(wù)優(yōu)值。過程如下:
3.1、在任務(wù)分配方案p下,定義虛擬機(jī)vmj當(dāng)前狀態(tài)下vmuj為虛擬機(jī)vmj的利用效益。函數(shù)如下:
vmuj=vmu(α,dp,mips)
其中α為虛擬機(jī)處理指令的執(zhí)行成本,dp為處理指令的延遲成本。
3.2、定義n個(gè)不同任務(wù)調(diào)度到m個(gè)不同虛擬機(jī)上的平均負(fù)載,即總?cè)蝿?wù)最優(yōu)完成時(shí)間為
其中w1,w2為權(quán)重值。vmu為虛擬機(jī)利用效益和,lbp為該任務(wù)調(diào)度方案下的負(fù)載均衡度。
第四步,圖3為基于tabu搜索的云任務(wù)負(fù)載均衡調(diào)度算法流程圖。本過程結(jié)合貪心算法獲得的任務(wù)調(diào)度初始解,通過衡量包含效益值以及負(fù)載均衡度的優(yōu)值函數(shù),得出基于tabu搜索算法優(yōu)化后的任務(wù)調(diào)度分配策略。由于tabu搜索的禁忌數(shù)組不能保證當(dāng)搜索進(jìn)入局部最優(yōu)時(shí)一定可以跳出。本發(fā)明在此基礎(chǔ)上提出了用于跳出局部最優(yōu)的懲罰策略。
使用禁忌算法獲取任務(wù)調(diào)度最優(yōu)解的過程包括以下步驟:
4.1、假設(shè)在某個(gè)云任務(wù)環(huán)境下,其中不可再分的云任務(wù)的總數(shù)為n,初始化禁忌數(shù)組tabulist[1,2,…,n],其中數(shù)組的初始值均為1,用于標(biāo)識該任務(wù)可以被交換。
4.2、根據(jù)1.5可知,虛擬機(jī)的負(fù)載vlj為分配給第j個(gè)虛擬機(jī)vmj所有任務(wù)的預(yù)期完成時(shí)間,即
4.3、判斷分配至vmmax的任務(wù)是否均被禁止交換,若分配至vmmax的任務(wù)在tabulist中的值均為0,即均被置為禁止交換狀態(tài),則跳轉(zhuǎn)到4.8,否則跳轉(zhuǎn)4.4。
4.4、選擇虛擬機(jī)vmmax上可被用于交換的任務(wù)tk,并設(shè)置其禁忌值tabulist[k]=0。進(jìn)入下一步。
4.5、判斷分配至vmmin的任務(wù)是否均被禁止交換,若分配至虛擬機(jī)vmmin的任務(wù)均被禁止交換,則跳轉(zhuǎn)到4.8,否則進(jìn)入下一步。
4.6、分別選擇虛擬機(jī)vmmin上可交換任務(wù),計(jì)算各任務(wù)交換狀態(tài)下的調(diào)度方案的優(yōu)值函數(shù)值,選擇使優(yōu)值函數(shù)值最高的任務(wù)對(k,l)進(jìn)行交換。
4.7、計(jì)算交換后的優(yōu)值函數(shù)值,若交換后的優(yōu)值函數(shù)的值大于原優(yōu)值函數(shù)的值,則完成任務(wù)交換,更新禁忌表tabulist[l]=0,并且同時(shí)更新負(fù)載最大以及最小的虛擬機(jī)vmmax,vmmin的負(fù)載vl。跳轉(zhuǎn)到4.2。
4.8、結(jié)束算法,獲得任務(wù)調(diào)度的最優(yōu)分配方案。
圖4為基于tabu搜索的跳出局部最優(yōu)的懲罰策略設(shè)計(jì)圖。設(shè)計(jì)主要過程如下:對修改禁忌表tabulist中禁忌對象的次數(shù)進(jìn)行記錄。其記錄次數(shù)用pt表示,初始值為0。當(dāng)禁忌對象進(jìn)入禁忌表時(shí),pt將被加1。當(dāng)連續(xù)k次tabulist集沒有更新時(shí),即pt=k時(shí),將會(huì)啟動(dòng)懲罰策略。定義虛擬機(jī)隨機(jī)分量函數(shù)p*(k):
p*(k)=p(k)-w*pt
其中p(k)為當(dāng)前最小虛擬機(jī)的索引量,w為隨機(jī)懲罰常量,k為記錄次數(shù)閾值。虛擬機(jī)分量函數(shù)的計(jì)算會(huì)對最小任務(wù)負(fù)載vl虛擬機(jī)vmmin的選擇產(chǎn)生影響,最小虛擬機(jī)的索引量p(k)會(huì)偏移,根據(jù)最新的p(k)選擇相應(yīng)(相鄰)的虛擬機(jī)代替vmmin,從而引導(dǎo)搜索跳出局部最優(yōu)。
優(yōu)化方式為:所述步驟4.1中,增加虛擬機(jī)隨機(jī)分量函數(shù),初始化記錄次數(shù)pt=0,即隨機(jī)分量函數(shù)閾值k;所述步驟4.2中,增加對于閾值k判斷,若pt>=k,則使用隨機(jī)分量函數(shù)p*(k)對vmmin的選擇使用懲罰策略,若pt<=k,則跳過進(jìn)入下一步;所述步驟4.7中,增加對于記錄次數(shù)pt的操作,若交換后的優(yōu)值函數(shù)bp的值小于原優(yōu)值函數(shù)的值,則記錄次數(shù)pt加1,否則,pt不變,進(jìn)入下一步。