徐勝超,楊 波
(廣州華商學(xué)院 數(shù)據(jù)科學(xué)學(xué)院,廣東 廣州 511300)
如何讓云計(jì)算變得更加節(jié)能高效,是當(dāng)今政府和企業(yè)都在關(guān)注的重點(diǎn)問題[1-2]。容器技術(shù)[3]是近年來云計(jì)算行業(yè)發(fā)展中重要的一部分,容器虛擬化技術(shù)及其平臺(tái)更是憑借自身部署快、性能高、啟動(dòng)迅速等優(yōu)勢(shì),被廣泛應(yīng)用于各大云服務(wù)項(xiàng)目中。但是容器云資源長期運(yùn)行時(shí),會(huì)增加不必要的能耗消耗,為提升容器的使用性能,降低容器云資源能耗,提出高效的容器云資源低功耗部署方法[4],就變得尤為迫切。
文獻(xiàn)[5]提出基于多維資源空閑率權(quán)重的容器云多維資源利用率均衡調(diào)度方法,該方法綜合考慮物理節(jié)點(diǎn)CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)帶寬空閑率和已部署的容器應(yīng)用個(gè)數(shù)等因素,利用模糊層次分析法自動(dòng)建模求解容器應(yīng)用多維資源權(quán)重參數(shù)。文獻(xiàn)[6]提出基于遺傳算法的容器云資源配置優(yōu)化方法,該方法將容器云平臺(tái)數(shù)據(jù)中心整體能耗最低作為目標(biāo)函數(shù),設(shè)置物理主機(jī)與虛擬機(jī)對(duì)應(yīng)、虛擬機(jī)與容器對(duì)應(yīng)等約束條件,利用遺傳算法通過染色體表達(dá)、初始化、交叉操作、變異操作以及設(shè)置適應(yīng)度函數(shù)5個(gè)步驟求解目標(biāo)函數(shù),獲取最優(yōu)容器云環(huán)境資源配置結(jié)果。文獻(xiàn)[7]提出容器云環(huán)境虛擬資源配置策略的優(yōu)化方法,首先,提出容器云虛擬資源的配置和遷移方案,發(fā)現(xiàn)物理機(jī)選擇策略對(duì)數(shù)據(jù)中心能耗有重要影響;其次,通過研究主機(jī)利用率與容器利用率,主機(jī)利用率與虛擬機(jī)利用率,主機(jī)利用率與數(shù)據(jù)中心能耗之間的數(shù)學(xué)關(guān)系,建立容器云數(shù)據(jù)中心能耗的數(shù)學(xué)模型,定義出優(yōu)化目標(biāo)函數(shù);最后,通過對(duì)物理機(jī)的能耗函數(shù)使用線性插值進(jìn)行模擬,依據(jù)鄰近事物相類似的特性,提出改進(jìn)的最佳能耗優(yōu)先物理機(jī)選擇算法。上述三種方法在提高容器云資源利用效率方面都有很好的改善,但是應(yīng)用到云資源部署的過程中還是存在能耗較高的問題,影響了容器資源部署效果。
人工魚群算法是通過模仿魚類行為方式,從而提出來的一種基于動(dòng)物自治體的優(yōu)化方法,它能夠很好地解決非線性函數(shù)優(yōu)化等問題。人工魚群算法的收斂速度較快,可以用來解決有實(shí)時(shí)性要求的問題,針對(duì)一些精度要求不高的情況,可以用來快速得到一個(gè)可行解。由于容器在云資源低能耗部署過程中,需要通過用戶需求調(diào)整容器低能耗部署方案,是動(dòng)態(tài)優(yōu)化問題,對(duì)于模型的求解效率要求較高。因此,該文通過人工魚群算法快速確定云資源能耗極值變化時(shí)間,尋找出滿意的解域,制定最佳的云資源低能耗部署方案。
容器[8-9]是提供程序運(yùn)行的獨(dú)立空間,Docker容器平臺(tái)負(fù)責(zé)容器的生命周期管理以及相關(guān)資源信息的管理。Docker容器技術(shù)[10]的出現(xiàn),為容器平臺(tái)的誕生打下了堅(jiān)實(shí)的基礎(chǔ)。
容器云平臺(tái)開展資源低功耗部署時(shí),平臺(tái)基本單位為容器,封裝軟件為平臺(tái)運(yùn)行環(huán)境。容器云平臺(tái)主要側(cè)重于容器的編排以及資源的部署、共享,具體的資源組織結(jié)構(gòu)如圖1所示。
圖1 容器云平臺(tái)資源組織結(jié)構(gòu)
容器云平臺(tái)[11-12]包括應(yīng)用、開發(fā)、資源共享、設(shè)備、集群服務(wù)等層級(jí)。資源配置模塊與項(xiàng)目開發(fā)模塊位于集群服務(wù)層中,該文將研究的云資源低能耗部署方法應(yīng)用于該資源配置模塊中,實(shí)現(xiàn)云資源的低能耗部署配置。
設(shè)在有m個(gè)物理主機(jī)和n個(gè)容器的云平臺(tái)中,云資源部署的能量消耗主要來自固定和遷移兩部分,經(jīng)實(shí)驗(yàn)發(fā)現(xiàn),云資源能耗與物理主機(jī)的資源利用率有較大關(guān)聯(lián),因此t時(shí)刻物理主機(jī)的能耗見公式(1):
Ehost(t)=E(Ucpu(t))+E(Umem(t))+E(Udisk(t))+E(Ubw(t))
(1)
其中,E(Ucpu(t))表示物理主機(jī)CPU的能耗,E(Umem(t))表示物理主機(jī)的內(nèi)存能耗,E(Udisk(t))表示物理主機(jī)的磁盤能耗,E(Ubw(t))表示物理主機(jī)的網(wǎng)絡(luò)帶寬能耗。這樣第i個(gè)物理主機(jī)在[ta,tb]時(shí)間段的總體能量消耗Ei可以按照公式(2)來計(jì)算:
(2)
考慮到容器云資源調(diào)度過程中的能耗除了硬件資源利用率實(shí)時(shí)變化產(chǎn)生的能耗外,還包括容器遷移能耗?;谙到y(tǒng)各部位的資源利用率以及能耗公式得出容器遷移開銷,其計(jì)算見公式(3):
(3)
其中,j代表容器,vj(t)代表t時(shí)刻的第j個(gè)容器處理器利用率,t1代表容器開始遷移的時(shí)間,tkj代表容器完成全部遷移所需的時(shí)間,Vj代表容器遷移開銷。
由于容器遷移開銷是影響容器云資源調(diào)度能耗的重要影響因素,因此容器云資源能耗分析過程中重點(diǎn)計(jì)算容器遷移開銷。整個(gè)容器云平臺(tái)的能量消耗見公式(4):
(4)
由于云計(jì)算環(huán)境中的任務(wù)呈現(xiàn)多樣性,導(dǎo)致任務(wù)在處理時(shí)不僅有實(shí)時(shí)的在線處理任務(wù),還有若干異步任務(wù)。所以云數(shù)據(jù)中心運(yùn)行時(shí),容器、虛擬機(jī)[13-14]以及物理機(jī)都會(huì)隨著任務(wù)的進(jìn)行增加負(fù)載情況。其中,由于物理機(jī)任務(wù)完成時(shí)間較早,所以當(dāng)物理機(jī)完成任務(wù),而容器未完成任務(wù)時(shí),會(huì)出現(xiàn)短暫的資源浪費(fèi)。
在容器云環(huán)境中,虛擬機(jī)遷移是保障物理服務(wù)器負(fù)載均衡的關(guān)鍵。遷移過程中,通常分為觸發(fā)遷移時(shí)間、遷移目標(biāo)服務(wù)器以及遷移位置3個(gè)階段。遷移觸發(fā)時(shí)間主要依據(jù)數(shù)據(jù)中心的資源部署策略來實(shí)現(xiàn)。遷移過程如下:
(1)統(tǒng)計(jì)物理主機(jī)資源利用率,通過統(tǒng)計(jì)將物理主機(jī)[15]中過載的利用率信息保存在相關(guān)列表中。
(2)基于列表信息,對(duì)其展開降序排列,選取對(duì)應(yīng)的容器遷移目標(biāo)。
(3)依據(jù)排列的順序從列表中選取對(duì)應(yīng)物理主機(jī),并將其作為遷移過程中的源物理主機(jī),依據(jù)順序完成遷移后,保證源物理主機(jī)利用率不超載,若超載則遷移不成功,需要依據(jù)上述流程繼續(xù)尋找遷移目標(biāo)。
(4)統(tǒng)計(jì)物理主機(jī)中資源利用率潛在信息,并將其存儲(chǔ)在相應(yīng)列表中。
(5)選取一臺(tái)不在列表當(dāng)中的物理主機(jī)作為容器遷移目標(biāo),將部署于源物理主機(jī)上的容器全部遷移至目標(biāo)物理主機(jī)中,完成容器的遷移。
依據(jù)上述容器云虛擬資源的遷移流程可知,容器在云資源部署以及遷移過程中,容器云都需要面對(duì)物理主機(jī)的選取問題,物理主機(jī)是整個(gè)數(shù)據(jù)中心[16]的最大能源消耗部件,所以,找出物理主機(jī)與容器、虛擬機(jī)之間的能耗計(jì)算關(guān)系,是完成容器云資源低能耗部署的關(guān)鍵。
容器運(yùn)行時(shí),可以通過Hypervisor采集容器的虛擬資源運(yùn)行狀態(tài)參數(shù),但是由于采樣參數(shù)過多,會(huì)對(duì)物理機(jī)的運(yùn)算帶來額外能耗負(fù)擔(dān),所以該文在建立數(shù)據(jù)中心能耗模型時(shí),通過灰色關(guān)聯(lián)分析方法[17],完成容器運(yùn)行狀態(tài)參數(shù)的提取。設(shè)定容器虛擬能耗為P,容器運(yùn)行參數(shù)比較序列設(shè)定為(p1,p2,…,pn),通過關(guān)聯(lián)系數(shù)計(jì)算方法,完成參數(shù)比較序列的采樣,過程如下式所示:
(5)
式中,容器比較序列與P之間的灰色關(guān)聯(lián)值標(biāo)記β(P,pi)形式,容器序列的兩級(jí)最小值分別用P(l)、pi(l)表述,常數(shù)標(biāo)記i、n形式。設(shè)定βi≥0.6為參數(shù)選取閾值,完成容器運(yùn)行狀態(tài)的選取[18-19]。
設(shè)定人工魚群個(gè)體狀態(tài)值為Qi,食物濃度標(biāo)記Pi,魚群視野范圍標(biāo)記σ,最大移動(dòng)步長標(biāo)記u,通過人工魚群的行為分析,總結(jié)魚群覓食行為,獲取容器云資源能耗部署模型全局最佳值,完成最佳部署方案的制定。流程如下:
步驟1:初始化人工魚群參數(shù),建立人工魚群,并通過容器云資源部署模型對(duì)魚群實(shí)施編碼處理,預(yù)測(cè)任務(wù)執(zhí)行時(shí)間。
步驟2:開展魚群個(gè)體覓食、聚群追尾等行為,估計(jì)當(dāng)前狀態(tài)下,任務(wù)搜索所需時(shí)間。
步驟3:基于評(píng)價(jià)函數(shù)完成魚群行為評(píng)價(jià),剔除個(gè)別個(gè)體,更新魚群行為。過程中,若迭代次數(shù)大于設(shè)定的閾值,則需要選取相應(yīng)種群個(gè)體完成跳躍行為。
步驟4:若魚群多次跳躍后公告板差值不變,魚群結(jié)束搜索,將搜索結(jié)果中的最佳全局值,算法結(jié)束。
魚群編碼[20-21]就是將容器云資源低能耗部署問題的解空間與算法搜索空間互相映射的過程。根據(jù)容器云虛擬資源的遷移過程,使用人工魚群算法對(duì)容器云資源的低能耗部署模型進(jìn)行求解。設(shè)定容器數(shù)量為x,物理主機(jī)數(shù)量為y,二進(jìn)制的編碼搜索空間設(shè)定2x×y,多值編碼搜索空間為yx,從而完成魚群編碼b=(c1,c2,…,cx)。
建立評(píng)價(jià)函數(shù):
人工魚群搜索過程中,需要建立相應(yīng)的評(píng)價(jià)函數(shù)確定魚群個(gè)體的優(yōu)劣,容器云資源能耗部署模型具備相關(guān)約束條件,所以若魚群尋找的最佳值不能滿足約束條件,需要建立相關(guān)的目標(biāo)函數(shù),輔助魚群完成全局最佳值的搜索,建立的容器云資源低能耗部署模型的目標(biāo)函數(shù)如下式所示:
f(x)=
(6)
式中,建立的容器云資源低能耗部署模型目標(biāo)函數(shù)標(biāo)記f(x)形式,懲罰系數(shù)標(biāo)記δ形式,目標(biāo)向量用η表述,容器云資源低能耗部署模型相關(guān)參數(shù)標(biāo)記D、E、F、G形式。
基于上述建立的容器云資源低能耗部署模型目標(biāo)函數(shù),結(jié)合容器資源部署時(shí)的負(fù)載均衡問題,建立評(píng)價(jià)函數(shù),過程如下式所示:
g(x)=1/f(x)
(7)
式中,建立的魚群個(gè)體評(píng)價(jià)函數(shù)用g(x)表述。
人工魚群中的個(gè)體數(shù)量越多,收斂速度越快,搜索精度越高。依據(jù)弱肉強(qiáng)食原則,在人工魚群算法運(yùn)行時(shí),剔除搜索性能較差的個(gè)體,這樣不僅能夠滿足算法初期對(duì)收斂速度的要求,還能夠降低算法的復(fù)雜程度。搜索性能較差的個(gè)體離部署模型的最優(yōu)解較遠(yuǎn),對(duì)魚群的影響較為負(fù)面,剔除該人工魚有利于算法的收斂。
跳躍行為有利于提升人工魚群算法的全局搜索能力。魚群出現(xiàn)跳躍行為,說明云資源集群中節(jié)點(diǎn)差異較小,魚群容易進(jìn)入局部最優(yōu)。跳躍行為能夠強(qiáng)行改變魚群的參數(shù),使魚群跳出局部區(qū)域,保障魚群的全局搜索能力。
通過上述人工魚群算法[22-23],調(diào)整容器云資源低能耗部署策略,建立容器云資源低能耗最佳部署方案,就實(shí)現(xiàn)了容器云資源的低能耗部署。
為了驗(yàn)證上述容器云資源低能耗部署方法的整體有效性,需要對(duì)此方法展開測(cè)試。實(shí)驗(yàn)環(huán)境配置如表1所示。
表1 實(shí)驗(yàn)環(huán)境配置
3.2.1 參數(shù)設(shè)置
設(shè)置實(shí)驗(yàn)初始條件如表2所示。
表2 實(shí)驗(yàn)初始參數(shù)設(shè)置
3.2.2 比較對(duì)象
實(shí)驗(yàn)選取云資源部署平均最大等待時(shí)間、最大響應(yīng)時(shí)間、容器最大平均任務(wù)隊(duì)列長度以及容器云資源能量損耗4個(gè)指標(biāo)對(duì)容器資源部署方法進(jìn)行測(cè)試。分別采用基于人工魚群算法的容器云資源低能耗部署方法(方法1)、文獻(xiàn)[5]方法(方法2)、文獻(xiàn)[6]方法(方法3)、文獻(xiàn)[7]方法(方法4)檢測(cè)4種方法的資源部署效果。
(1)云資源部署平均最大等待時(shí)間測(cè)試。
云資源部署平均最大等待時(shí)間是容器云資源低能耗部署時(shí)的最長平均延遲時(shí)間,數(shù)值越高部署效果越差。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時(shí),測(cè)試上述4種方法的平均最大等待時(shí)間,測(cè)試結(jié)果如圖2所示。
圖2 不同方法的平均最大等待時(shí)間測(cè)試結(jié)果
分析圖2實(shí)驗(yàn)數(shù)據(jù)可知,方法2、3、4測(cè)試出的平均最大等待時(shí)間在第10次時(shí)均超過40 ms,最高為60 ms,而方法1平均最大等待時(shí)間僅33 ms;隨著檢測(cè)次數(shù)的增加,4種方法測(cè)試出的平均最大等待時(shí)間都呈現(xiàn)出不同程度的上升趨勢(shì)。但同次數(shù)測(cè)試結(jié)果對(duì)比,方法1測(cè)試出的容器云資源部署平均最大等待時(shí)間是4種方法中最低的,檢測(cè)次數(shù)為50時(shí)平均最大等待時(shí)間不超過70 ms,由此可見應(yīng)用方法1可縮短平均最大等待時(shí)間。這主要是因?yàn)榉椒?在容器云資源低能耗部署前對(duì)容器云資源配置開展了詳細(xì)的分析,并且通過人工魚群算法,調(diào)整容器云資源低能耗部署策略,建立容器云資源低能耗最佳部署方案,所以該方法在云資源低能耗部署時(shí)的平均最大等待時(shí)間短。
(2)最大響應(yīng)時(shí)間測(cè)試。
最大響應(yīng)時(shí)間是容器云資源部署過程中的最長延遲時(shí)間。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時(shí),測(cè)試上述4種方法的最大響應(yīng)時(shí)間,測(cè)試結(jié)果如圖3所示。
圖3 不同方法的最大響應(yīng)時(shí)間測(cè)試結(jié)果
測(cè)試過程中,部署最大響應(yīng)時(shí)間越長,說明部署過程的部署效果越差,反之則越好。分析圖3可知,方法1、2、3、4在檢測(cè)次數(shù)為10次時(shí),最大響應(yīng)時(shí)間相差不大,均低于30 ms,方法1最大響應(yīng)時(shí)間最短;隨著檢測(cè)次數(shù)的增加,4種方法測(cè)試出的最大響應(yīng)時(shí)間都出現(xiàn)了不同程度的上升,方法3上升效果最明顯。方法1的最大響應(yīng)時(shí)間均未超過45 ms,其他方法最大響應(yīng)時(shí)間最長超過100 ms;對(duì)比同次數(shù)測(cè)試結(jié)果,方法1測(cè)試出的容器云資源低能耗部署響應(yīng)時(shí)間是4種方法中最低的,說明方法1在開展容器資源低能耗部署時(shí)的部署效果最優(yōu)。是因?yàn)樵撐耐ㄟ^制定的模型約束條件建立容器云資源的低能耗部署模型,再使用人工魚群算法對(duì)模型求解,搜索出部署模型的全局最佳值,制定最佳部署方案,從而提升了部署效率。
(3)容器最大平均任務(wù)隊(duì)列長度測(cè)試。
容器最大平均任務(wù)隊(duì)列長度能直觀地體現(xiàn)容器資源部署時(shí)的容器負(fù)載情況。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時(shí),測(cè)試上述4種方法的容器最大平均任務(wù)隊(duì)列長度,查看4種方法的容器負(fù)載情況。測(cè)試結(jié)果如圖4所示。
最大平均隊(duì)列長度是容器運(yùn)行時(shí)間內(nèi),容器部署任務(wù)隊(duì)列的平均長度最大值,實(shí)驗(yàn)過程中,任務(wù)隊(duì)列長度越長,說明部署方法的排隊(duì)時(shí)間越長,容器負(fù)載就越大,反之則越小。分析圖4可知,方法1在初始部署任務(wù)時(shí),與方法2、3、4對(duì)比隊(duì)列長度最短。隨部署時(shí)間增大,4種方法的任務(wù)隊(duì)列長度均有所增長;但比較4種方法,方法1在相同的部署時(shí)間內(nèi)測(cè)試出的任務(wù)隊(duì)列長度是4種方法中最短的,說明方法1在云資源部署時(shí)的容器負(fù)載小。是因?yàn)樵撐幕诮⒌娜萜髟瀑Y源低能耗部署模型的目標(biāo)函數(shù),結(jié)合容器資源部署時(shí)的負(fù)載均衡問題,建立評(píng)價(jià)函數(shù),并利用全局搜索能力較強(qiáng)的人工魚群算法對(duì)模型求解,搜索出部署模型的全局最佳值,從而降低了云資源部署時(shí)的容器負(fù)載。
(4)容器云資源平均能量損耗測(cè)試。
采用方法1、方法2、方法3以及方法4,對(duì)24小時(shí)內(nèi)的容器云資源平均能量損耗進(jìn)行測(cè)試,測(cè)試結(jié)果如表3所示。
表3 不同部署方法的容器云資源平均能量損耗測(cè)試結(jié)果
根據(jù)表3中的數(shù)據(jù)可知,經(jīng)過多次實(shí)驗(yàn),方法1的容器云資源平均能量損耗在25 672 kJ以內(nèi);方法2、3、4的容器云資源平均能量損耗均高于30 000 kJ,高于方法1,方法1的容器云資源平均能量損耗最低,說明利用該文提出的基于人工魚群算法的容器云資源低能耗部署方法進(jìn)行容器云資源低能耗部署的效果最好。
綜上所述,方法1在開展容器資源部署方法測(cè)試過程中,測(cè)試出的部署效果高于其他方法,證明方法1在資源部署時(shí),具備有效性。
隨著國家節(jié)能減排的要求增多,使容器云資源低能耗部署方法變得尤為重要。針對(duì)傳統(tǒng)資源部署方法中存在的問題,提出基于人工魚群算法的容器云資源低能耗部署方法。該方法通過容器云資源配置分析結(jié)果,建立云資源的低能耗部署模型;然后使用人工魚群算法獲取模型最佳值,建立最佳部署策略,完成容器云資源的低能耗部署。由于該方法在選取容器運(yùn)行參數(shù)時(shí)存在誤差,今后會(huì)針對(duì)該項(xiàng)缺陷,繼續(xù)對(duì)該部署方法實(shí)施優(yōu)化處理。