徐勝超 葉朝武
(廣州華商學(xué)院數(shù)據(jù)科學(xué)學(xué)院 廣州 511300)
云計(jì)算[1]作為最新的計(jì)算技術(shù)在各行業(yè)中逐步發(fā)展,最新的數(shù)據(jù)中心也是云技術(shù)衍生出的產(chǎn)物[2~3],隨著人們對(duì)資源利用率以及高質(zhì)量作業(yè)的要求,必須加強(qiáng)資源的整合和管理,才能實(shí)現(xiàn)容器云資源的靈活部署和利用[4]。容器云技術(shù)是虛擬化的關(guān)鍵技術(shù),為了提高其利用率,降低能量消耗,合理部署容器即為實(shí)現(xiàn)容器云資源低能耗部署的重要途徑。
文獻(xiàn)[5]在分析用戶的需求以及運(yùn)行成本的基礎(chǔ)上,將底層資源約束條件形象化,通過演示等得出用戶需求,通過模擬退火算法計(jì)算出云資源部署的初始解,同時(shí)運(yùn)用禁忌搜索算法的記憶功能以及選禁忌表取初始解中的最優(yōu)解,實(shí)現(xiàn)了服務(wù)功能鏈部署。但是該方法在部署時(shí)存在運(yùn)行時(shí)間開銷較大的問題。文獻(xiàn)[6]構(gòu)建了虛擬機(jī)部署模型,詳細(xì)分析云計(jì)算主機(jī)負(fù)載均衡,根據(jù)改進(jìn)粒子群的虛擬機(jī)優(yōu)化配置算法得出最優(yōu)虛擬機(jī)配置解,實(shí)現(xiàn)了云計(jì)算虛擬機(jī)資源配置優(yōu)化。但是該方法在實(shí)際部署過程中沒有將能耗問題轉(zhuǎn)換,不能獲取部署過程中的最低能耗。文獻(xiàn)[7]提出了基于云計(jì)算的海量碎片資源動(dòng)態(tài)調(diào)度方法。依據(jù)碎片資源的優(yōu)先級(jí)計(jì)算結(jié)果重組海量碎片資源,確定資源調(diào)度的初始位置和速度,并更新信息素、控制資源動(dòng)態(tài)循環(huán)迭代次數(shù)和區(qū)間,實(shí)現(xiàn)海量碎片資源的動(dòng)態(tài)調(diào)度。但是該方法只能根據(jù)實(shí)際情況隨機(jī)設(shè)定,導(dǎo)致部署的能耗仍有浪費(fèi),存在部署性能差以及運(yùn)行時(shí)間開銷大的問題。文獻(xiàn)[8]構(gòu)建了用于數(shù)據(jù)中心節(jié)能容器放置的鯨魚優(yōu)化系統(tǒng),提出了一種基于鯨魚優(yōu)化算法的算法,將容器即服務(wù)環(huán)境中容器和虛擬兩個(gè)放置階段作為一個(gè)優(yōu)化問題來解決,但是該方法部署過程中的能耗較高。文獻(xiàn)[9]提出了一種基于學(xué)習(xí)自動(dòng)機(jī)的容器云自適應(yīng)任務(wù)調(diào)度算法。通過集群、節(jié)點(diǎn)和任務(wù)對(duì)環(huán)境進(jìn)行建模,通過調(diào)度執(zhí)行優(yōu)化動(dòng)作選擇的概率,從而增強(qiáng)調(diào)度對(duì)云環(huán)境的適應(yīng)性。但是該方法中大量空閑節(jié)點(diǎn)消耗能量,提高了部署能耗。
容器云合理部署可以保證數(shù)據(jù)中心整合、處理的穩(wěn)定性,其可以進(jìn)一步滿足用戶對(duì)于數(shù)據(jù)的需求。螢火蟲群優(yōu)化算法可以在目標(biāo)區(qū)域內(nèi),提高容器部署覆蓋率,實(shí)現(xiàn)全方位覆蓋的同時(shí),解決容器部署冗余的問題,為此,本文為了解決容器云資源部署過程中存在的部署性能差、運(yùn)行時(shí)間開銷較大的問題,提出了基于螢火蟲群優(yōu)化算法的容器云資源低能耗部署方法。
為了在保證部署性能的同時(shí)最大程度地降低能耗,必須實(shí)時(shí)監(jiān)測(cè)資源能耗情況,因此需要構(gòu)建能耗模型,進(jìn)而得出能耗的代價(jià)函數(shù)以及約束條件,最終對(duì)其求解得出最優(yōu)解完成資源的低能耗部署。
云計(jì)算主機(jī)運(yùn)行時(shí),能量消耗的主要部分是容器云資源的計(jì)算過程,即動(dòng)態(tài)能量消耗,令目前云計(jì)算系統(tǒng)的主機(jī)共有n臺(tái),基于容器云資源分配模型得出云計(jì)算系統(tǒng)能耗代價(jià)函數(shù)[10],其主要包括云計(jì)算平臺(tái)中全部容器的最小動(dòng)態(tài)能耗匯總和云計(jì)算主機(jī)的處理器利用率兩部分,其表達(dá)式分別式(1)和式(2)為
式中,m代表云計(jì)算系統(tǒng)中容器的數(shù)量,代表第j臺(tái)主機(jī)的處理器利用率最高的時(shí)的能耗,yij代表第i個(gè)容器被遷移到第j臺(tái)主機(jī),fij代表第i個(gè)容器在第j臺(tái)主機(jī)中的能耗。
上述兩個(gè)代價(jià)函數(shù)對(duì)應(yīng)容器云能耗指標(biāo),通過計(jì)算代價(jià)函數(shù)即可得到最優(yōu)資源部署的最低能耗[11~12],其中最低能耗的約束條件為
由于上述兩種代價(jià)函數(shù)之間存在沖突,所以代價(jià)函數(shù)也是容器云資源部署的多目標(biāo)的優(yōu)化問題[13~14],約束條件就是容器與主機(jī)之間的影響關(guān)系,所以容器的分配y=yij以及容器的能耗f=fij就是多目標(biāo)優(yōu)化問題需要解決的問題。
因?yàn)槭剑?)和式(2)之間存在沖突,所以不存在兩個(gè)代價(jià)函數(shù)結(jié)果均為最小的唯一解,只能是一組最小解集合,即帕累托最優(yōu)解集[15]。
根據(jù)帕累托占優(yōu)的特點(diǎn)獲取解之間的關(guān)系,假設(shè)式(1)代價(jià)函數(shù)得出的解為g1,式(2)代價(jià)函數(shù)得出的解為g2,當(dāng)g1帕累托占優(yōu)于g2,其需要滿足的條件為
通過對(duì)多目標(biāo)優(yōu)化問題的計(jì)算即可得出每個(gè)主機(jī)配置策略的最低能耗配置結(jié)果[16~17]。
大多容器云資源在部署過程中均沒有分析云計(jì)算平臺(tái)數(shù)據(jù)中心的動(dòng)態(tài)變化運(yùn)行環(huán)境[18],由于其中的容器一直處理運(yùn)行狀態(tài),導(dǎo)致容器云平臺(tái)性能受到影響,為了保證用戶的需求,在低能耗的基礎(chǔ)上最大程度地提高資源利用率和整體效率[19],容器在部署過程中需要符合以下幾種條件。
1)云計(jì)算平臺(tái)中容器的數(shù)量必須小于對(duì)應(yīng)主機(jī)的最大使用容量。
2)容器對(duì)應(yīng)的主機(jī)受運(yùn)行環(huán)境的影響是不可避免的,但其影響范圍必須控制在用戶可接受范圍內(nèi)。
3)容器整體效率的變化增量必須保證為最大值,即容器對(duì)現(xiàn)有主機(jī)的性能干預(yù)必須降到最小。
式中,mi代表目前投入使用的容器數(shù)量,ui代表分配后容器的效率。
由于容器部署更新后其相應(yīng)的主機(jī)運(yùn)行環(huán)境會(huì)發(fā)生變化,同時(shí)對(duì)鄰近容器性能造成影響,進(jìn)而得出容器在完成部署前后相應(yīng)主機(jī)的效用變化量ΔU′,其表達(dá)式為
式中,uk代表鄰近容器的效率。
通常情況下每個(gè)策略均對(duì)應(yīng)一個(gè)分配方案,即每個(gè)主機(jī)都對(duì)應(yīng)一個(gè)容器,通過式(4)計(jì)算即可得出最低能耗的部署結(jié)果,為了得到最低能耗的最優(yōu)資源部署結(jié)果,運(yùn)用螢火蟲優(yōu)化算法予以計(jì)算[20~21],獲取到主機(jī)分配方案的最優(yōu)解集。
螢火蟲群優(yōu)化算法(GSO)的特點(diǎn)是捕捉速度快、用時(shí)少,將其應(yīng)用于容器云資源部署中,可以在最短時(shí)間內(nèi)覆蓋容器云資源覆蓋所有部署區(qū)域,通過求解螢火蟲群優(yōu)化算法相關(guān)參數(shù)等內(nèi)容[22~23],得到容器云資源低能耗部署方案,具體步驟如下所示。
第一步,在容器云平臺(tái)任意區(qū)域內(nèi)設(shè)置一個(gè)部署策略q,即云計(jì)算系統(tǒng)主機(jī),將其視為一個(gè)螢火蟲,進(jìn)而組成一個(gè)螢火蟲群。
第二步,在進(jìn)行計(jì)算的初始過程為每個(gè)部署策略q設(shè)置同一濃度的熒光素。
第三步,對(duì)部署策略q的熒光色素進(jìn)行更新。其中熒光素濃度計(jì)算公式為
式中,lq(t) 代表部署策略q經(jīng)過t地帶后的熒光素濃度,β代表熒光素衰減系數(shù),E(?)代表部署策略q在迭代后的目標(biāo)函數(shù)結(jié)果,xq代表部署策略q在t地帶中的位置。通過多次迭代獲取最新的部署策略q的熒光色素。
第四步,計(jì)算容器向低濃度熒光素移動(dòng)的概率。
概率計(jì)算表達(dá)式為
式中,lo(t)代表熒光素較低的容器經(jīng)過t地帶后的熒光素濃度。
第五步,針對(duì)變化的部署策略位置進(jìn)行更新。
更新后的部署策略位置計(jì)算公式為
式中,c代表部署策略每次迭代的步長(zhǎng),s代表標(biāo)準(zhǔn)歐氏距離,xo(t)代表低濃度熒光素容器在t地帶中的位置。
第六步:直到滿足迭代次數(shù)和部署需求即可停止位置更新,最終的位置即為容器云低能耗最優(yōu)部署方法,若不滿足則返回第三步。根據(jù)上述部署步驟即可得出最高效的部署結(jié)果。
為了驗(yàn)證基于螢火蟲群優(yōu)化算法的容器云資源低能耗部署方法的整體有效性,文獻(xiàn)[5]和文獻(xiàn)[6]在相應(yīng)領(lǐng)域應(yīng)用后均獲得了較優(yōu)的部署方案,因此將文獻(xiàn)[5]感知服務(wù)的容器云資源部署方法和文獻(xiàn)[6]云計(jì)算虛擬機(jī)資源部署方法作為對(duì)比方法,對(duì)三種方法進(jìn)行部署性能以及運(yùn)行時(shí)間開銷的測(cè)試。
采用Cloudsim5模擬容器云資源低能耗部署仿真環(huán)境,在實(shí)驗(yàn)硬件方面,采用Intel i7 8700CPU 六核心,32 GB 內(nèi)存的64 位機(jī)器搭建24 個(gè)節(jié)點(diǎn)的物理集群,每個(gè)物理機(jī)運(yùn)行Linux3.10 內(nèi)核的Ubuntu Xenial 16.04。每個(gè)物理節(jié)點(diǎn)上運(yùn)行Docker1.7.1 來創(chuàng)建虛擬節(jié)點(diǎn),同時(shí)最多運(yùn)行4 個(gè)虛擬容器,虛擬集群的最大規(guī)模為64 個(gè)節(jié)點(diǎn)。在Docker 中用CPU-Share 比重參數(shù)將6 個(gè)CPU 核心平均分給3 個(gè)虛擬節(jié)點(diǎn),即每個(gè)Container公平使用兩個(gè)物理CPU核心。在實(shí)驗(yàn)軟件方面,使用Docker Swarm 實(shí)現(xiàn)容器的動(dòng)態(tài)管理,將系統(tǒng)執(zhí)行規(guī)則轉(zhuǎn)換為Swarm 的管理腳本并且執(zhí)行。在上述仿真環(huán)境的支持下,模擬除了容器云低能耗部署區(qū)域如圖1所示。
圖1 容器云低能耗部署區(qū)域
除上述參數(shù)外,還需要設(shè)定螢火蟲優(yōu)化算法的相關(guān)參數(shù)。設(shè)置迭代次數(shù)為500 次,容器感知半徑為5m,通信半徑為10m,熒光素的起始濃度為400,熒光素的揮發(fā)性系數(shù)為0.9,適宜度的提取率為0.1。根據(jù)上述參數(shù)設(shè)置和環(huán)境,采用三種方法進(jìn)行對(duì)比測(cè)試。
實(shí)驗(yàn)共選取33 個(gè)物理節(jié)點(diǎn)以及90 個(gè)容器,云平臺(tái)各個(gè)容器的動(dòng)態(tài)資源均是根據(jù)用戶需求自動(dòng)生成的,假設(shè)目前物理節(jié)點(diǎn)的初始條件相同,即云平臺(tái)負(fù)載程度相同,分別計(jì)算出三種方法容器需要遷移的次數(shù)、穩(wěn)定時(shí)間以及物理節(jié)點(diǎn)空閑的數(shù)量,其中物理節(jié)點(diǎn)就是云計(jì)算平臺(tái)的主機(jī)。
4.2.1 容器遷移次數(shù)
容器云資源部署方法可轉(zhuǎn)換成對(duì)容器的部署,容器的狀態(tài)轉(zhuǎn)換需要對(duì)容器進(jìn)行遷移,不同方法所需的容器遷移次數(shù)也不盡相同,遷移次數(shù)越多耗費(fèi)的時(shí)間也就越長(zhǎng),所產(chǎn)生的影響也較多,現(xiàn)設(shè)定三種方法更新的容器狀態(tài)相同,判斷在每種進(jìn)化代數(shù)下容器所需的遷移次數(shù),實(shí)驗(yàn)結(jié)果如圖2所示。
圖2 三種方法部署所需的容器遷移系數(shù)
根據(jù)圖2 所示的實(shí)驗(yàn)結(jié)果可知,經(jīng)過多次進(jìn)化,容器所需遷移次數(shù)最少的是本文方法,最高遷移次數(shù)為40 次,感知服務(wù)的容器云資源部署方法和云計(jì)算虛擬機(jī)資源部署方法的最高遷移次數(shù)分別為72 次和91 次,即本文方法更新出資源分布狀態(tài)最高效,較比其余兩種方法更加便捷。其主要原因是本文方法將云計(jì)算系統(tǒng)能耗代價(jià)函數(shù)求解問題轉(zhuǎn)化為容器云資源部署的多目標(biāo)優(yōu)化問題,通過求解多目標(biāo)函數(shù),確定最優(yōu)部署方案,減少容器遷移次數(shù)。
4.2.2 穩(wěn)定時(shí)間
以某數(shù)據(jù)中心為研究對(duì)象,對(duì)其容器進(jìn)行更新后,該數(shù)據(jù)中心可以保持一段時(shí)間的穩(wěn)定狀態(tài)。而由于容器在不斷的分配與再部署,導(dǎo)致數(shù)據(jù)中心需要平衡容器遷移和容器分布狀態(tài),以保證數(shù)據(jù)中心的運(yùn)行穩(wěn)定性。設(shè)定該數(shù)據(jù)中心的CPU 利用率分別為20%~80%的容器,利用三種方法對(duì)其進(jìn)行部署,在經(jīng)過相同遷移次數(shù)(40 次)后判斷每種方法下容器保持穩(wěn)定狀態(tài)時(shí)間。容器穩(wěn)定狀態(tài)的時(shí)間越長(zhǎng),其部署性能越好,實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 三種方法容器的穩(wěn)定時(shí)間
根據(jù)圖3 的實(shí)驗(yàn)結(jié)果可知,感知服務(wù)的容器云資源部署方法的穩(wěn)定時(shí)間在22s~31s 之間波動(dòng),云計(jì)算虛擬機(jī)資源部署方法的穩(wěn)定時(shí)間在13s~17s之間波動(dòng)。而本文方法均是保證容器穩(wěn)定狀態(tài)時(shí)間最長(zhǎng)方法,最低穩(wěn)定時(shí)間為35s,受CPU 利用率大小影響較小,從而驗(yàn)證所提方法的性能高。其主要原因是本文方法在構(gòu)建容器云資源低能耗部署模型時(shí),考慮了CPU 利用率以及容器需要不斷更新、遷移的影響,因此通過螢火蟲群優(yōu)化算法求解后,就要較高的穩(wěn)定時(shí)間。
4.2.3 部署能耗情況
為了實(shí)現(xiàn)容器云資源低能耗部署思想,在保證部署效果的同時(shí)盡可能地減少物理點(diǎn)的使用,為了進(jìn)一步驗(yàn)證本文方法的有效性,在分別對(duì)不同數(shù)量的容器進(jìn)行部署,判斷每組實(shí)驗(yàn)中三種方法所需的物理點(diǎn),現(xiàn)已知是三種方法在每組實(shí)驗(yàn)下的部署效果均一致,僅對(duì)比每種方法的物理節(jié)點(diǎn)使用情況即可,物理節(jié)點(diǎn)使用數(shù)量越少,其能耗越小,部署能力越高。
根據(jù)表1 的實(shí)驗(yàn)結(jié)果可知,物理節(jié)點(diǎn)在不同數(shù)量容器下的使用數(shù)量均不相同,且每組實(shí)驗(yàn)下由于容器作用和外界影響因素的不同,每組實(shí)驗(yàn)所需的物理節(jié)點(diǎn)均不相同,但對(duì)比每組實(shí)驗(yàn)下三種方法所需的物理節(jié)點(diǎn),本文方法使用的物理節(jié)點(diǎn)最少,即保證部署能力的同時(shí)耗能最小。產(chǎn)生該結(jié)果的原因是,本文算法將單一的能耗的求解問題,轉(zhuǎn)換為了容器分配以及容器能耗的多目標(biāo)優(yōu)化問題,因此,在部署過程中所需要的物理節(jié)點(diǎn)更少,能耗最優(yōu)。
表1 三種方法物理節(jié)點(diǎn)使用情況
在對(duì)資源進(jìn)行部署過程中種群總代數(shù)是導(dǎo)致運(yùn)行時(shí)間加長(zhǎng)的主要原因,且隨著種群總代數(shù)的增長(zhǎng),部署時(shí)間是呈幾何級(jí)別數(shù)增長(zhǎng),假設(shè)三種方法在現(xiàn)有種群總代數(shù)下的執(zhí)行時(shí)間均在可承受范圍之內(nèi),因此不影響容器云資源部署的進(jìn)程,計(jì)算出在不同種群總代數(shù)下每種方法所需的運(yùn)行時(shí)間,實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 不同方法的運(yùn)行時(shí)間開銷
根據(jù)圖4 的實(shí)驗(yàn)結(jié)果可知,三種部署方法中更新?lián)Q代用時(shí)最短的就是本文方法,這是因?yàn)楸疚姆椒ㄔ谶M(jìn)行部署前構(gòu)建部署能耗模型,得出部署過程中所需的能耗,并實(shí)時(shí)管控能耗,將不必要的能耗關(guān)閉,降低部署計(jì)算量,減少運(yùn)行時(shí)間開銷。
為了降低云數(shù)據(jù)中心能源消耗,提出基于螢火蟲群優(yōu)化算法的容器云資源低能耗部署方法,該方法通過構(gòu)建能量模型和設(shè)立部署要求降低能耗,在此基礎(chǔ)上利用螢火蟲優(yōu)化算法在全局中得到最優(yōu)部署策略,實(shí)現(xiàn)了容器云資源低能耗部署,經(jīng)實(shí)驗(yàn)測(cè)試可知,所提出方法解決了部署性能差以及運(yùn)行時(shí)間開銷大的問題,有效降低資源消耗。下一步將具體分析容器云資源部署策略的準(zhǔn)確性,以保證容器云資源低能耗部署的同時(shí),提高部署精度,為數(shù)據(jù)中心調(diào)度奠定基礎(chǔ)。