徐勝超,葉力洪
(廣州華商學院數(shù)據(jù)科學學院,廣東 廣州 511300)
容器云是一種輕量級新型虛擬化技術(shù)[1],是云計算的深入和發(fā)展。容器云的核心問題是容器在線任務(wù)分配,即如何將其中的容器合理、均衡地分配到各個物理機節(jié)點上。容器云的出現(xiàn)和使用,極大地緩解了數(shù)據(jù)處理和運算壓力,因此是很多企業(yè)內(nèi)聯(lián)網(wǎng)服務(wù)器的首選。然而,若容器云內(nèi)部的任務(wù)不能被合理分配到可用的資源(物理機節(jié)點)上,極易造成個別物理機節(jié)點負載過大、能耗過高的問題,對此,眾多學者進行了容器云任務(wù)分配問題的研究。
文獻[2]基于李雅普諾夫函數(shù)提出容器云隊列任務(wù)調(diào)度方法,構(gòu)建云計算任務(wù)排隊模型,采用李雅普諾夫函數(shù)分析任務(wù)隊列長度的變化;基于任務(wù)QoS構(gòu)建能耗最小化目標函數(shù);通過李雅普諾夫優(yōu)化方法求解目標函數(shù),實現(xiàn)對容器云隊列在線任務(wù)的整體調(diào)度。但該方法由于并非動態(tài)分配任務(wù),尋優(yōu)能力不足,因此分配合理性和資源均衡度不夠理想。文獻[3]提出帶約束修復的容器云任務(wù)隊列樹形調(diào)度目標模型。采用約束修復方法將容器云中的異構(gòu)任務(wù)和異構(gòu)資源映射為統(tǒng)一向量;采用優(yōu)先級綜合多個子目標并將其歸屬于不同樹形分支下的子空間,構(gòu)建多任務(wù)均衡調(diào)度模型,實現(xiàn)容器云隊列任務(wù)分配。但該方法經(jīng)過映射構(gòu)建的任務(wù)模型準確性不足,分配合理性較差,且任務(wù)隊列由于映射需要長時間排隊等候,導致?lián)砣?,任?wù)執(zhí)行效率不佳。
為了解決上述分配方法分配合理性和資源均衡度較差、任務(wù)處理效率較低的問題,本文進行基于長短期記憶神經(jīng)網(wǎng)絡(luò)(LSTM)的容器云隊列在線任務(wù)動態(tài)分配方法研究。由于長短期記憶神經(jīng)網(wǎng)絡(luò)搜索全局性更好,尋優(yōu)能力更強,本文將其應(yīng)用到容器云隊列在線任務(wù)分配當中,求解任務(wù)分配最優(yōu)方案。實驗結(jié)果表明應(yīng)用LSTM能使任務(wù)分配更加合理、更能節(jié)省能耗,減少任務(wù)排隊長度和時間。
結(jié)合長短期記憶神經(jīng)網(wǎng)絡(luò)進行容器云隊列在線任務(wù)動態(tài)分配方法研究,其主要分為4個部分,即容器云隊列在線任務(wù)模型描述、任務(wù)分配目標函數(shù)構(gòu)建、約束條件設(shè)置以及長短期記憶神經(jīng)網(wǎng)絡(luò)求解,以期保障用戶任務(wù)的有效執(zhí)行。
容器云隊列是由多個容器組成,而每個容器都代表一個排隊模型,由此組成容器云隊列,如圖1所示[4-6]。
圖1 容器云隊列在線任務(wù)模型
在圖1容器云隊列在線任務(wù)模型中[7],容器隊列的長度與網(wǎng)絡(luò)任務(wù)量和容器總量存在密切關(guān)系。當單個容器內(nèi)任務(wù)隊列長度超過容器總?cè)萘繒r,容器隊列長度會超過容器的處理能力,即會發(fā)生任務(wù)擁堵問題。針對這一問題,需要對容器云隊列在線任務(wù)進行動態(tài)分配,提高任務(wù)處理效率[8]。
容器云隊列在線任務(wù)動態(tài)分配目標函數(shù)是指通過分配要實現(xiàn)的目的表達式[9]。求出的這個表達式的解,就是可以滿足目標需求的分配方案?;诖?,任務(wù)分配目標函數(shù)構(gòu)建是重點。
在以往的研究中,多數(shù)都是以單一目標為任務(wù)構(gòu)建分配目標函數(shù),雖然在后期,這種方法計算簡便,且易求解,但是僅考慮一方面,而忽略其他方面,求出的任務(wù)分配方案只能實現(xiàn)一個目的,因此需要求出一個綜合最優(yōu)方案,即考慮多個目標,設(shè)置多目標函數(shù)[10]。
多目標函數(shù)中包括了3個單目標,即節(jié)點互補度、資源利用率以及能耗,對這3個目標進行優(yōu)化可以使得分配方案更加合理[11]。多目標函數(shù)具體表達式為:
(1)
容器和物理機節(jié)點之間的資源消耗互補度取決于容器對CPU資源的需求和物理主機擁有資源的量,二者的匹配程度越高,資源消耗互補度越高;資源利用率取決于容器和物理機節(jié)點之間的匹配度,可以通過構(gòu)建容器與物理主機的匹配值矩陣獲得最大利用率方案[12]。物理機節(jié)點的能耗分為空閑能耗和滿載能耗2種情況,兩者的區(qū)別在于物理機節(jié)點的CPU利用率不同[13]。利用率越大,滿載能耗越多,空閑能耗越少,有利于節(jié)省整體能耗。
由于物理機、容器、時間、費用等資源有限,多目標優(yōu)化方案的達成需要考慮一些約束條件。約束條件具體包括任務(wù)的執(zhí)行時間約束、物理機節(jié)點處理能力約束以及容器分配費用約束。通過這些約束,為目標函數(shù)求解劃定了范圍[14]。具體表達式為:
(2)
式(2)中,Tj、Tj′分別代表物理機節(jié)點j開始和結(jié)束租賃的時間;T代表任務(wù)k執(zhí)行時間;L0j(k,t)代表t時刻物理機節(jié)點j被占用的資源;N代表物理機節(jié)點數(shù)量;L1j(k,t)代表t時刻物理機節(jié)點j剩余可利用資源;ψ代表容器云隊列長度;D代表物理機節(jié)點處理能力即動態(tài)分配能力;ζ代表單容器分配費用;B代表容器分配總執(zhí)行費用;kN代表任務(wù)k需要的物理機節(jié)點數(shù)量;yjk(t)代表t時刻物理機節(jié)點j執(zhí)行任務(wù)k時被占用的資源;m和n分別為容器i和節(jié)點j的數(shù)量。
為了避免物理機節(jié)點資源的浪費,必須保證每個節(jié)點都在執(zhí)行任務(wù),因此物理機節(jié)點執(zhí)行任務(wù)結(jié)束的時間要大于節(jié)點開始執(zhí)行的時間。當任務(wù)較多時,物理機節(jié)點被占用的資源要大于節(jié)點剩余的可利用資源,讓資源充分利用。根據(jù)1.1節(jié)的容器云隊列在線任務(wù)模型可知,避免發(fā)生任務(wù)擁堵問題需要對容器云隊列在線任務(wù)進行動態(tài)分配,容器云隊列長度要小于物理機節(jié)點處理能力。為了讓執(zhí)行費用的分配更加公平合理,不能讓單容器消耗所有費用,因此單容器分配費用需要小于容器分配總執(zhí)行費用。
在1.3節(jié)設(shè)置的約束條件下,利用長短期記憶神經(jīng)網(wǎng)絡(luò)對多目標函數(shù)進行求解,這是容器云隊列在線任務(wù)動態(tài)分配方法研究的最后一步,也是核心步驟[15]。
與循環(huán)神經(jīng)網(wǎng)絡(luò)相比,長短期記憶神經(jīng)網(wǎng)絡(luò)學習能力更強,其結(jié)構(gòu)模型如圖2所示[16]。
圖2 長短期記憶神經(jīng)網(wǎng)絡(luò)模型
長短期記憶神經(jīng)網(wǎng)絡(luò)主要包含3個門,即輸入門、遺忘門和輸出門[17]。當原始信息通過輸入門進入到長短期記憶神經(jīng)網(wǎng)絡(luò)模型當中,同時輸入給Cell節(jié)點和遺忘門。每個Cell節(jié)點利用遺傳算法計算最佳時間步長、神經(jīng)網(wǎng)絡(luò)單元的數(shù)量以及單位時間3個參數(shù),優(yōu)化訓練模型;同時原始數(shù)據(jù)在經(jīng)過遺忘門篩選后,留下有價值的信息,通過輸出門輸出[18]。下面針對長短期記憶神經(jīng)網(wǎng)絡(luò)中3個門在任務(wù)分配多目標函數(shù)求解中的具體工作進行分析。
1)輸入門。
輸入門是信息進入長短期記憶神經(jīng)網(wǎng)絡(luò)中唯一的窗口,其作用是賦予容器隊列任務(wù)分配相關(guān)參數(shù)進入長短期記憶神經(jīng)網(wǎng)絡(luò)的權(quán)限以及對輸入信息的更新[19]。在任務(wù)分配相關(guān)參數(shù)經(jīng)過輸入門之后,得到結(jié)果。
2)遺忘門。
遺忘門是長短期記憶神經(jīng)網(wǎng)絡(luò)中核心部分。該部分蘊含了很多過濾規(guī)則,用于信息篩選,決定什么信息是有價值的,什么信息應(yīng)該是丟棄的[20]。在遺忘門中,除了包含1.3節(jié)設(shè)置的約束條件外,還有一個偏置項,在空間任何維度,都可以進行遺忘門決策。
3)輸出門。
輸出門是結(jié)果輸出的窗口,主要是通過將前一狀態(tài)值、遺忘門概率結(jié)果,通過激勵函數(shù),輸出最終的結(jié)果,即容器云隊列在線任務(wù)動態(tài)分配方案[21]。
在利用長短期記憶神經(jīng)網(wǎng)絡(luò)求解多目標函數(shù)中,有一個關(guān)鍵問題需要解決,即在求解前需要對每個Cell節(jié)點設(shè)置3個關(guān)鍵參數(shù),即timesteps(時間步長)、units(神經(jīng)網(wǎng)絡(luò)單元的數(shù)量)、predictsteps(預測多少單位時間)。這3個參數(shù)直接關(guān)系到長短期記憶神經(jīng)網(wǎng)絡(luò)的運行效率和精度[22-24]。在以往運算中,通常需要反復嘗試,才能找到一定范圍內(nèi)的最優(yōu)的參數(shù)值,不僅運算量大,速度也慢。針對這種情況,本文通過遺傳算法求解這3個參數(shù),以期提高多目標函數(shù)的求解精度。具體過程如圖3所示。
首先初始化系統(tǒng),并輸入基礎(chǔ)數(shù)據(jù),進行標準化和數(shù)據(jù)清洗處理。然后對timesteps、units、predictsteps這3個參數(shù)進行編碼,設(shè)置種群相關(guān)參數(shù),將3個參數(shù)解碼轉(zhuǎn)換成十進制值形式。其次,確定長短期記憶神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)。接著,將3個參數(shù)輸入到長短期記憶神經(jīng)網(wǎng)絡(luò)中,進行前向運行與反向傳播訓練。然后,判斷訓練結(jié)果是否滿足約束終止條件,若不滿足,則繼續(xù)訓練;若滿足,計算模型輸出值與預期值之間的均方根誤差作為適度值,公式為:
(3)
式(3)中,i=1,2,…,n表示反向傳播訓練次數(shù);YS表示模型輸出值;YK表示模型預期值。最后,根據(jù)種群規(guī)模判斷適度值是否滿足結(jié)束條件,若滿足,輸出timesteps、units、predictsteps;否則,獲得參數(shù)編碼階段,進行遺傳操作。
通過以上遺傳算法的操作[25-27],得出最佳timesteps、units、predictsteps這3個參數(shù),提高了LSTM運行精度,使得求解分配方案更加合理。
為測試基于長短期記憶神經(jīng)網(wǎng)絡(luò)的方法在容器云隊列在線任務(wù)動態(tài)分配求解中的應(yīng)用效果,判斷求解方案是否可以達到最優(yōu),以文獻[2]方法和文獻[3]方法作為對比方法。整個仿真測試以MATLAB軟件作為輔助工具。
方法運行的測試環(huán)境為一個容器云平臺,平臺的軟硬件環(huán)境參數(shù)如表1所示。
表1 實驗軟硬件環(huán)境參數(shù)
實驗采用真實的維基媒體云計算服務(wù)網(wǎng)絡(luò)任務(wù)負載24 h的數(shù)據(jù)(https://dumps.wikimedia.org/)進行仿真,該數(shù)據(jù)實時記錄了每個小時網(wǎng)絡(luò)終端用戶訪問維基媒體云服務(wù)的任務(wù)數(shù)。
為了模擬實際情況中大規(guī)模并發(fā)場景,在該容器云平臺上,依次設(shè)置了不同容器數(shù)量和物理機節(jié)點數(shù)量。容器與物理機節(jié)點相關(guān)參數(shù)設(shè)置如表2所示。
表2 容器與物理機節(jié)點相關(guān)參數(shù)設(shè)置
本文使用的物理機節(jié)點數(shù)量是根據(jù)實際情況中大規(guī)模并發(fā)場景選取的最常用物理機節(jié)點數(shù)量。
LSTM求解時,設(shè)置的相關(guān)參數(shù)如下:
?timesteps(時間步長):35;
?units:185;
?predictsteps:50;
?訓練精度:0.001;
?LSTM最大迭代次數(shù):1000;
?遺傳算法的最大迭代次數(shù):100;
?種群規(guī)模:50,100,200,500;
?交叉率:0.52;
?變異率:0.01;
?染色體長度:6+6+8。
借助500個訓練集樣本對LSTM進行訓練。
對求解得出的容器云隊列在線任務(wù)動態(tài)分配方案進行評價的指標有4個,即分配合理性、資源均衡度、最長隊列長度以及能耗。
1)分配合理性。
分配合理性ω是指容器分配到物理機節(jié)點的方案合理性得分,即多目標優(yōu)化方案的分配合理性,計算公式如下:
(4)
其中,k代表任務(wù)節(jié)點。
2)資源均衡度。
(5)
式中:Ei代表容器i對CPU資源的需求;N代表物理機節(jié)點數(shù)量;D代表物理機節(jié)點處理能力即動態(tài)分配能力。
表2中已列出了物理機節(jié)點處理能力D、單個容器分配執(zhí)行費用。
3)最長隊列長度。
最長隊列長度ψmax是指按照分配方案分配后,容器等待分配的隊列最長的長度值,計算公式為:
ψmax=(Tj′-Tj)·ψ
(6)
4)能耗值。
能耗值υ是指按照分配方案分配后,物理機節(jié)點的能耗值,根據(jù)公式(1)~公式(3),計算公式如下:
υ=N(Aj,max-Aj,p)
(7)
式中,Aj,p代表物理機節(jié)點j的空閑能耗;Aj,max代表物理機節(jié)點j的滿載能耗。
其他參數(shù)值可參照1.1節(jié)、1.2節(jié)的內(nèi)容和表2的數(shù)據(jù)計算。表2為基礎(chǔ)參數(shù)設(shè)置,本文方法、文獻[2]方法和文獻[3]方法這3種方法的分配方式不同,因此無法在參數(shù)設(shè)置中提前賦值公式(1)~公式(4)中的所有參數(shù)。
分別利用本文方法、文獻[2]方法和文獻[3]方法得出分配方案,然后按照分配方案進行容器云隊列在線任務(wù)分配到物理機節(jié)點上,比較物理機節(jié)點相關(guān)參數(shù)和仿真平臺測得的數(shù)據(jù),利用上述公式獲得3種方法分配方案的物理機節(jié)點分配合理性、資源均衡度、最長隊列長度以及能耗值,結(jié)果如表3所示。
表3 分配合理性、資源均衡度、最長隊列長度和能耗值
從表3中可以看出,本文方法求出的分配方案應(yīng)用下,分配合理性、資源均衡度、最長隊列長度以及能耗值表現(xiàn)均要好于其他2種分配方案的應(yīng)用效果,說明本文方法的分配方案更加合理。這是因為該方法通過長短期記憶神經(jīng)網(wǎng)絡(luò)求解任務(wù)動態(tài)分配目標函數(shù),多目標函數(shù)聯(lián)合應(yīng)用下,使得云計算效果滿足資源調(diào)度過程中的任何要求,反應(yīng)過程更加迅速,分配合理性逐漸擴大,降低了任務(wù)阻塞現(xiàn)象,提高了任務(wù)處理效率。
本文提出一種基于長短期記憶神經(jīng)網(wǎng)絡(luò)的容器云隊列在線任務(wù)動態(tài)分配方法,通過長短期記憶神經(jīng)網(wǎng)絡(luò)求解任務(wù)動態(tài)分配目標函數(shù),逐漸完善分配方案,使得出的分配方案更加合理。然而,本文所使用的容器/物理機數(shù)量較少,因此有待擴大容器/物理機數(shù)量,在未來的仿真平臺中,將對其進行進一步的深入研究。