賀立 戴新發(fā) 夏靜
(武漢數(shù)字工程研究所 武漢 430205)
在信息化時(shí)代,互聯(lián)網(wǎng)產(chǎn)生的數(shù)據(jù)量呈爆炸性增長,而如何高效處理這些數(shù)據(jù)以提供高質(zhì)量服務(wù)成為當(dāng)前面臨的關(guān)鍵問題。針對該問題,互聯(lián)網(wǎng)發(fā)生了一次重大變革,即云計(jì)算的出現(xiàn)。MapReduce[1]是一個(gè)編程模型,也是一個(gè)處理和生成超大數(shù)據(jù)集的算法模型的相關(guān)實(shí)現(xiàn)。Hadoop[2]是MapReduce的開源實(shí)現(xiàn),它不僅廣泛應(yīng)用于批量大作業(yè)同時(shí)也用于處理相應(yīng)低效率的短作業(yè)。
現(xiàn)有的MapReduce 調(diào)度算法存在許多問題。比如FIFO 調(diào)度算法相對簡單、便于理解、易于實(shí)現(xiàn)。若單個(gè)作業(yè)發(fā)送到集群,則該作業(yè)會(huì)將整個(gè)集群資源占據(jù);若多個(gè)作業(yè)發(fā)送到集群,則調(diào)度器基于作業(yè)的發(fā)送順序完成作業(yè)調(diào)度。雖然所有用戶共享整個(gè)集群資源,但FIFO 給用戶提供資源的機(jī)會(huì)并不公平,所以FIFO 調(diào)度器在實(shí)時(shí)調(diào)度處理方面并不適用。Fair 算法調(diào)度器給所有用戶都分配了獨(dú)立資源池以確保公平性。因此,不管某用戶提交多少作業(yè),都不會(huì)影響到其他用戶的資源池,所有用戶都可以得到相同的共享資源,但無法保證所有節(jié)點(diǎn)負(fù)載均衡;資源的利用率不高。Capacity 算法隊(duì)列設(shè)計(jì)層次化;彈性分配;容量保證;可操作性高但不支持不支持負(fù)載均衡和搶占。
根據(jù)現(xiàn)有調(diào)度算法的缺點(diǎn),本文提出了一種基于ACO 和SA 的組合優(yōu)化算法——ACOSA 算法,該算法可以結(jié)合了ACO 算法和SA 算法在調(diào)度算法中實(shí)現(xiàn)的優(yōu)點(diǎn),摒棄了缺點(diǎn)??s短任務(wù)完成的時(shí)間以及平衡了對資源的負(fù)載。
在整個(gè)現(xiàn)代隨機(jī)數(shù)學(xué)上普遍認(rèn)為Ants 組合啟發(fā)式算法組合隨機(jī)搜索算法是一種對所有啟發(fā)式算法進(jìn)行隨機(jī)組合的最優(yōu)化隨機(jī)搜索算法?;诮M合Ants 的啟發(fā)式優(yōu)化組合算法(Ant Colony Optimization,ACO)最早由m.dorigo[3]提出,隨后metropolis提出了SA(Simulated Annealing)組合優(yōu)化想法,并在啟發(fā)式優(yōu)化和系統(tǒng)優(yōu)化組合領(lǐng)域得到廣泛應(yīng)用[4]。SA算法用于獲取組合全局最優(yōu)解。
Ant 是一種社會(huì)昆蟲,其可能只有一種結(jié)構(gòu)和行為構(gòu)成。一只小型的Ant 可以同時(shí)執(zhí)行少量的結(jié)構(gòu)與動(dòng)作,且大多數(shù)動(dòng)作用于信息傳遞。一個(gè)組織性良好且結(jié)構(gòu)化較高的研究團(tuán)隊(duì)對Ants 的結(jié)構(gòu)與行為進(jìn)行了研究,結(jié)果發(fā)現(xiàn)Ants可以完成遠(yuǎn)遠(yuǎn)超出Ant個(gè)人能力的任務(wù)。盡管每個(gè)Ant個(gè)體都有不同的分工,但激素通過其自身獨(dú)特的信息系統(tǒng)傳遞信息,Ants可以通過信息的傳遞來“聞到糖分”并收集。
SA 的基本結(jié)構(gòu)設(shè)計(jì)和思想主要目的是通過模擬了物理學(xué)中固體的溫度逐漸退火和停止冷卻的一種物理過程,即當(dāng)物理學(xué)中固體的內(nèi)部溫度逐漸地升高到物理固體已經(jīng)有了足夠高的物理固體溫度時(shí)逐漸地退火和停止冷卻物理固體的一種物理過程。例如當(dāng)一個(gè)固體物理學(xué)中的固體內(nèi)部原子開始連續(xù)地加熱時(shí),物理學(xué)家發(fā)現(xiàn)固體其中的內(nèi)部原子在固體中連續(xù)地做劇烈熱運(yùn)動(dòng),由此,原子能量得以不斷的增加與釋放。隨著固體內(nèi)部溫度的不斷升高,物理學(xué)中固體的內(nèi)部原子和顆粒逐漸從有序地轉(zhuǎn)變?yōu)榱藷o序。例如當(dāng)物理固體的內(nèi)部溫度逐漸地降低時(shí),顆粒逐漸從無序變化到縱坐標(biāo),最終在常溫下恢復(fù)到最初的基本狀態(tài)。
ACOSA 算法是搜索函數(shù)ACO 和ACOSA 的組合。如2.1 節(jié)所示,ACOSA 是通過設(shè)計(jì)和模擬人類在自然界中搜索函數(shù)Ant 的過程而提出的一種全局搜索算法。實(shí)際上該算法不僅具有很強(qiáng)的復(fù)雜性和全局搜索能力,還具有魯棒性和快速反饋的優(yōu)點(diǎn),但其容易過早的陷入局部最優(yōu)解。由2.2 節(jié)可知,SA 是在固態(tài)物理退火機(jī)制的基礎(chǔ)上所提出的一種搜索算法,該算法具有強(qiáng)大的本地搜索功能,可以接受比當(dāng)前解決方案差的結(jié)果并跳過。雖然SA 引擎具有以上所述的優(yōu)點(diǎn),但其并沒有充分了解整個(gè)文字搜索的空間結(jié)構(gòu),因此其文字搜索的準(zhǔn)確效率很有可能會(huì)受到大大降低。為了能夠更好地幫助克服函數(shù)ACO 的不足,例如對于收斂的函數(shù)速度,本地搜索功能弱和易于本地優(yōu)化的問題,本文提出ACOSA 算法(Ant Clony Optimization Simulated Anealling)。
SA 主要研究用于優(yōu)化ACO 模型。ACOSA 的這個(gè)算法主要特點(diǎn)是認(rèn)為包括兩個(gè)主要的算法階段:ACO和SA。也就是說,首先通過ACO來構(gòu)建候選人是解決這個(gè)問題的整體方案,然后通過SA 調(diào)整和優(yōu)化獲得的候選解決方案。
ACO 操作階段:主要考慮節(jié)點(diǎn)負(fù)載平衡時(shí),任務(wù)的完成時(shí)間能夠有所縮短。ACO 利用正反饋縮小候選解的搜索范圍,促使局部最優(yōu)解轉(zhuǎn)向全局最優(yōu)解,最終得到有效的全局最優(yōu)解。
SA階段:在ACO得到局部最優(yōu)解的基礎(chǔ)上,一定溫度Ti下,基于Metropolis 原理,利用SA 機(jī)制判斷是否接受候選方案,這構(gòu)成了一個(gè)新的解決方案全局最優(yōu)。
在ACO 中引入SA,以形成新的ACOSA 算法,該算法彌補(bǔ)了ACO 算法的缺點(diǎn),避免其陷入局部最優(yōu)解。
云環(huán)境中的資源節(jié)點(diǎn)具有異構(gòu)性、動(dòng)態(tài)性以及不確定性。由此,本研究基于異構(gòu)環(huán)境提出編程算法,并做出以下假設(shè):
1)用戶分配的任務(wù)具有獨(dú)立性和不可分割性;未按照正確順序執(zhí)行任務(wù);除非節(jié)點(diǎn)發(fā)生故障,否則在執(zhí)行期間無法中斷任務(wù)。
2)云環(huán)境中的資源節(jié)點(diǎn)數(shù)量遠(yuǎn)遠(yuǎn)小于任務(wù)數(shù)量。
通過數(shù)據(jù)分析和進(jìn)行測量計(jì)算構(gòu)造一個(gè)節(jié)點(diǎn)中CPU的網(wǎng)絡(luò)數(shù)據(jù)處理計(jì)算能力,網(wǎng)絡(luò)的內(nèi)存帶寬和構(gòu)造網(wǎng)絡(luò)中的內(nèi)存容量情況來進(jìn)行測量計(jì)算構(gòu)造一個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)性能和平均計(jì)算構(gòu)造一個(gè)節(jié)點(diǎn)數(shù)據(jù)群集的網(wǎng)絡(luò)性能。計(jì)算各個(gè)信息節(jié)點(diǎn)j的初始元素值以及信息素濃度:
式中:RT 為n*m 矩陣;RTij為任務(wù)i 在各節(jié)點(diǎn)j 上的平均執(zhí)行時(shí)間與速度,其中包含通信時(shí)間和計(jì)算時(shí)間。
ACOSA 算法的主要目的是極大地減少了節(jié)點(diǎn)中每一個(gè)任務(wù)的平均完成速度和時(shí)間,同時(shí)還要考慮到每一個(gè)節(jié)點(diǎn)的任務(wù)負(fù)載平衡的情況。
1)節(jié)點(diǎn)選擇概率
將大于Ants 的輪盤概率節(jié)點(diǎn)隨機(jī)分配到所有的輪盤概率任務(wù)上,假設(shè)任務(wù)在i 處放置了a 只Ants,Ants(k=l,2,…,a)在所有的m 個(gè)輪盤概率節(jié)點(diǎn)中隨機(jī)選擇一個(gè)輪盤概率能夠同時(shí)滿足輪盤概率的放置節(jié)點(diǎn)并將其分配到所有的任務(wù)i上。
為維持兩個(gè)節(jié)點(diǎn)間的負(fù)載均衡,需根據(jù)ACOSA 算法對其進(jìn)行計(jì)算,并將所得結(jié)果用于輪盤概率啟發(fā)計(jì)算函數(shù)。任務(wù)Ti分配到節(jié)點(diǎn)Nj的概率為
式中:τj(t)為在t時(shí)信息素濃度的計(jì)算函數(shù);ηj(t)為t時(shí)的啟發(fā)函數(shù);allowedk為節(jié)點(diǎn)集合{N1,N2…Nm}-tabuk。
本研究為了更加公平地運(yùn)用該算法,設(shè)置信息素濃度計(jì)算函數(shù)的初始值ηj(0)=c。根據(jù)式(8)計(jì)算信息素啟發(fā)函數(shù):
式中:Timej為節(jié)點(diǎn)Nj在t 時(shí)執(zhí)行任務(wù)的次數(shù)與時(shí)間。
式中:Timeexec(Ti,Nj)為任務(wù)i 在各節(jié)點(diǎn)j 上執(zhí)行任務(wù)的次數(shù)與時(shí)間;Timetra(Ti,Nj)為任務(wù)i 發(fā)送至節(jié)點(diǎn)j上的數(shù)據(jù)傳輸時(shí)間;根據(jù)式(9)可以計(jì)算得到各節(jié)點(diǎn)i 在Nj上的任務(wù)運(yùn)行次數(shù)與時(shí)間;TimeBest-avg為上次迭代任務(wù)已經(jīng)結(jié)束,且取得最優(yōu)解,在該情況下各節(jié)點(diǎn)執(zhí)行任務(wù)的次數(shù)與時(shí)間。
2)信息素更新
ACO 對Ants 在節(jié)點(diǎn)上分泌的信息素種類進(jìn)行檢測,以有效地加快包含Ants的節(jié)點(diǎn)數(shù)據(jù)搜索速度并有效地優(yōu)化搜索路徑。在本文中,信息素的分泌通常是在特定的節(jié)點(diǎn)而不是路徑中進(jìn)行的。所以,在Ant 完成其所分配的任務(wù)后會(huì)對信息素節(jié)點(diǎn)繼續(xù)更新。此外,本地信息素在等到所有Ants完成任務(wù)后才會(huì)結(jié)束。信息素更新的表達(dá)式為
式中:ρ為路徑信息素的揮發(fā)系數(shù),其值越大,殘存的信息素對當(dāng)前選擇路徑的影響就越小。
Ant 將所有任務(wù)分配完之后,對已訪問節(jié)點(diǎn)上的局部信息素進(jìn)行更新,其計(jì)算表達(dá)式為
式中:Timej為第i 次迭代完成后,節(jié)點(diǎn)j 上各任務(wù)所需完成時(shí)間。
若所有Ant 能同時(shí)完成所分配的任務(wù),則對其進(jìn)行全局任務(wù)信息素的更新,其方法為
式中:Bestj為節(jié)點(diǎn)j在任務(wù)得到一個(gè)全局最優(yōu)解后,其完成剩余任務(wù)所需時(shí)間。
3)Metropolis準(zhǔn)則
根據(jù)ACO 能夠得到局部最優(yōu)解,而根據(jù)SA 可以增加局部最優(yōu)的搜索能力,基于置換規(guī)則,能夠破壞節(jié)點(diǎn)當(dāng)前任務(wù)的局部最優(yōu)解,即從節(jié)點(diǎn)中隨機(jī)選擇兩個(gè)最優(yōu)任務(wù)。如果兩個(gè)最優(yōu)任務(wù)都對應(yīng)于不同的局部最優(yōu)節(jié)點(diǎn)請選擇交換一個(gè)節(jié)點(diǎn)。如果更換后節(jié)點(diǎn)縮短了局部最優(yōu)任務(wù)完成的時(shí)間,請選擇接受新的節(jié)點(diǎn)解決方案,否則根據(jù)SAMetropolis的標(biāo)準(zhǔn)判斷您是否接受新的解決方案。根據(jù)式(14)和(15),接受一個(gè)新解p 的隨機(jī)概率到底是多少?如果隨機(jī)函數(shù)p 的隨機(jī)值遠(yuǎn)遠(yuǎn)小于在當(dāng)前的溫度范圍r 下生成的隨機(jī)值,則將不可能接受新的隨機(jī)概率解決方案,否則將接受新的解決方案。
式中:TCnew、TCcur-best分別為當(dāng)前溫度T 下,節(jié)點(diǎn)完成所有任務(wù)所需時(shí)間;ACO中的全部節(jié)點(diǎn)完成任務(wù)所需的最短時(shí)間。ΔTC 時(shí)間概率值是表示在當(dāng)前任務(wù)節(jié)點(diǎn)的運(yùn)行溫度ΔTC 時(shí)間大于溫度T 下,交換一個(gè)新節(jié)點(diǎn)任務(wù)后在該節(jié)點(diǎn)的運(yùn)行溫度和當(dāng)前運(yùn)行的溫度時(shí)間之差所產(chǎn)生減少的概率值。P 為絕對溫度ΔTC>0時(shí),節(jié)點(diǎn)新值在改時(shí)間點(diǎn)所減少的概率。
4)抽樣穩(wěn)定準(zhǔn)則和終止準(zhǔn)則
SA 算法中的采樣溫度退火過程與判斷采樣溫度穩(wěn)定性的最優(yōu)解相對應(yīng),即在溫度相同的情況下,局部最優(yōu)解在經(jīng)過m 次的連續(xù)干擾后,其采樣溫度仍然保持不變。此時(shí),認(rèn)為該算法符合當(dāng)前采樣該算法的終止準(zhǔn)則與SA過程算法中的終止性退火相對應(yīng),也就是說如果在當(dāng)前采樣溫度t下,其最優(yōu)解比Tmin小,則認(rèn)為該采樣算法符合終止性退火準(zhǔn)則,從而終止該算法。
ACOSA算法的基本步驟為:
Step1:初始化有關(guān)參數(shù)。評(píng)估模型指標(biāo)包括迭代次數(shù)n;Ant 的規(guī)模m;溫度衰減參數(shù)α;SA 初始溫度T0;信息素?fù)]發(fā)因子ρ;評(píng)估信息素濃度的重要性β;信息素濃度的重要性最大值a。
Step2:在全部任務(wù)上隨機(jī)布置Ants,由式(7)構(gòu)造候選解。
Step3:基于完成全部任務(wù)所需時(shí)間最小化的原則,再次構(gòu)造一個(gè)局部最優(yōu)解的鄰域,按照式(11)和(12)對信息素進(jìn)行計(jì)算和更新。
Step4:基于SA 的置換規(guī)則,構(gòu)造鄰域內(nèi)的新解,根據(jù)式(14)和(15)判斷該解接受與否。
Step5:在當(dāng)前抽樣穩(wěn)定溫度r 下,判斷局部最優(yōu)值以及該條件參數(shù)是否符合抽樣溫度自動(dòng)穩(wěn)定繼續(xù)旋轉(zhuǎn)運(yùn)動(dòng)準(zhǔn)則,若滿足條件則直接返回穩(wěn)定旋轉(zhuǎn)準(zhǔn)則步驟6,否則直接返回抽樣繼續(xù)穩(wěn)定運(yùn)轉(zhuǎn)準(zhǔn)則步驟4。
Step6:按照式(11)和(13)對全局信息素進(jìn)行更新。
Step7:T(t+1)=a7T(t),其中a為溫度變化常數(shù)。算法需判斷常數(shù)值是否小于當(dāng)前溫度常數(shù),T(t+1)?Tmin與否,若該溫度常數(shù)符合這個(gè)通用算法的溫度終止轉(zhuǎn)換準(zhǔn)則,則這個(gè)溫度常數(shù)值的轉(zhuǎn)換結(jié)果為零,此時(shí)轉(zhuǎn)至Step8,否則返回Step2。
Step8:判斷當(dāng)前迭代次數(shù)的條件是否全部符合,且是否達(dá)到當(dāng)前最大迭代次數(shù),若條件滿足,則終止算法,否則返回Step2。
本節(jié)采用的實(shí)驗(yàn)仿真平臺(tái)為CloudSim3.0,用其分析云計(jì)算ACOSA、ACO 和FCFS 調(diào)度算法的應(yīng)用性能。
在實(shí)驗(yàn)仿真平臺(tái)(CloudSim)中可以設(shè)置5個(gè)資源和虛擬計(jì)算機(jī)的數(shù)據(jù)中心,50 個(gè)對虛擬機(jī)的資源和100個(gè)~1000個(gè)對虛擬機(jī)資源和對任務(wù)的虛擬計(jì)算機(jī)進(jìn)行長度仿真的模擬實(shí)驗(yàn)。數(shù)據(jù)中心發(fā)送到對資源和虛擬任務(wù)計(jì)算機(jī)長度的參數(shù)設(shè)置為1000mi~20000mi(MillionInstructions)。云長度仿真模擬實(shí)驗(yàn)中的參數(shù)設(shè)置如表1所示,ACOSA與ACO算法的參數(shù)設(shè)置如表2所示。
表1 CloudSim的參數(shù)設(shè)置
表2 ACO和ACOSA算法參數(shù)設(shè)置
采用虛擬機(jī)負(fù)載不均值DI(DegreeofImbalance)對虛擬機(jī)的負(fù)載均衡情況進(jìn)行評(píng)價(jià),計(jì)算表達(dá)式見式(15)、(16)。
式中所有提交完成分配指令到每一個(gè)系統(tǒng)節(jié)點(diǎn)j 上的所有完成分配任務(wù)的運(yùn)行長度之和用TotalLengthj表示每一個(gè)系統(tǒng)節(jié)點(diǎn)j 和j 的所有完成和分配任務(wù)處理能力是分配指令的運(yùn)行速度和處理能力。Timej所表示的系統(tǒng)運(yùn)行的時(shí)間分別是每一個(gè)系統(tǒng)節(jié)點(diǎn)j 和j 的所有完成和分配任務(wù)所需的系統(tǒng)運(yùn)行長度和處理時(shí)間。Timeavg,Timemax、Timemin分別表本每一個(gè)節(jié)點(diǎn)j運(yùn)行長度和時(shí)間的平均值、最大值和最小平均值。
由圖1 可知,隨著迭代次數(shù)的持續(xù)增加,采用ACOSA 與ACO 算法可逐漸縮短任務(wù)的完成時(shí)間,但對于這兩種算法,任務(wù)開始完成的時(shí)間在迭代完成次數(shù)之后逐漸開始減少的迭代完成次數(shù)遠(yuǎn)遠(yuǎn)大于60。
圖1 550個(gè)任務(wù)不同迭代次數(shù)的完成時(shí)間
在實(shí)驗(yàn)2 中,對不同數(shù)量調(diào)度任務(wù)的主要完成和執(zhí)行時(shí)間進(jìn)行比較。例如圖2 描述了任務(wù)調(diào)度圖中的fcfs,ACO 和任務(wù)ACO,SA 的任務(wù)調(diào)度算法對于一個(gè)調(diào)度任務(wù)的主要調(diào)度完成和執(zhí)行時(shí)間包括調(diào)度和任務(wù)的執(zhí)行時(shí)間。從上圖所示的兩個(gè)任務(wù)調(diào)度實(shí)驗(yàn)算法分析的結(jié)果中我們已經(jīng)看到了可以清楚地明顯可以看出,隨著我國大型企業(yè)任務(wù)調(diào)度數(shù)量的進(jìn)一步大大地增加,任務(wù)調(diào)度中經(jīng)常使用的調(diào)度任務(wù)fs 和ACOSA 兩種任務(wù)調(diào)度算法使得大型企業(yè)任務(wù)的調(diào)度完成率和中型企業(yè)調(diào)度完成任務(wù)的執(zhí)行時(shí)間逐漸大大地小于任務(wù)調(diào)度中經(jīng)常使用的fcfs和任務(wù)ACOSA兩種任務(wù)調(diào)度算法
圖2 各算法的不同任務(wù)集的完成時(shí)間
利用實(shí)驗(yàn)2 的結(jié)果對負(fù)載不均衡值DI 進(jìn)行計(jì)算,得到的結(jié)果如圖3所示。
圖3 各算法的DI值
從圖2 和3 中能夠清楚地看出,任務(wù)調(diào)度的效果遠(yuǎn)遠(yuǎn)優(yōu)于它的f和fs兩個(gè)最前處理算法的原因就是ACOSA 兩個(gè)最前處理算法,它們處理任務(wù)的最前和完成最后的執(zhí)行和處理的時(shí)間比基于它的fcfs兩個(gè)算法的處理任務(wù)最前的完成和最后執(zhí)行的處理任務(wù)時(shí)間分別明顯地縮短了50%~60%和15%~20%,并且明顯程度上優(yōu)于其他的ACOSA 任務(wù)最前處理的算法。同時(shí),虛擬機(jī)上還可能存在不平等的資源和負(fù)載。通過深入學(xué)習(xí)與應(yīng)用分析前面所使用的云計(jì)算及其他可編程任務(wù)的最前處理算法顯著的增加或減少負(fù)載,可知ACOSA 算法無論是在任務(wù)的最前完成執(zhí)行速度和處理時(shí)間還是在完成收斂和運(yùn)行速度等方面都將具有更好的負(fù)載平衡優(yōu)勢和更好的負(fù)載平衡。
本文根據(jù)蟻群算法作業(yè)調(diào)度和蟻群策略的特點(diǎn)優(yōu)化了MapReduce的作業(yè)調(diào)度性能,對目前蟻群算法的性能優(yōu)化方向和作業(yè)調(diào)度策略進(jìn)行充分闡述與分析,并重點(diǎn)討論啟發(fā)式蟻群算法ACO 和ACOSA 的基本原理和其取舍。本文針對將蟻群啟發(fā)式算法易用于受局部最優(yōu)“未成熟”算法影響的局部蟻群啟發(fā)式算法的一些缺點(diǎn),詳細(xì)地介紹了將SA 算法引入新的ACOSA 算法的優(yōu)點(diǎn)以及ACOSA啟發(fā)式算法解決問題。本研究采用的仿真工具主要是ACOcloudsim,用其對新ACOSA算法進(jìn)行模擬計(jì)算,并以任務(wù)完成時(shí)間、收斂速度和消耗的負(fù)載均衡值為評(píng)價(jià)指標(biāo)分析仿真結(jié)果的可靠性,結(jié)果顯示:ACOSA啟發(fā)式算法在三個(gè)指標(biāo)上均有良好表現(xiàn)。