徐勝超,熊茂華
(廣州華商學(xué)院數(shù)據(jù)科學(xué)學(xué)院,廣東 廣州 511300)
目前云計(jì)算研究領(lǐng)域重視云計(jì)算環(huán)境中的虛擬資源的優(yōu)化配置[1-4]。需利用動(dòng)態(tài)的尋優(yōu)方法獲取最佳的資源配置優(yōu)化效果,提升資源配置優(yōu)化調(diào)度效率[5-7]。云計(jì)算發(fā)展過(guò)程中,容器技術(shù)對(duì)云計(jì)算平臺(tái)發(fā)展影響巨大。利用容器虛擬化技術(shù)所建立的容器云平臺(tái)具有啟動(dòng)速度快、運(yùn)行性能高以及容易遷移的優(yōu)勢(shì)[8-11]。容器云環(huán)境中包含眾多虛擬資源,虛擬資源配置具有極高的實(shí)踐意義。
目前針對(duì)虛擬機(jī)以及虛擬資源的研究眾多,文獻(xiàn)[12]提出了一種基于最佳能耗優(yōu)先物理機(jī)選擇算法的虛擬資源配置策略,首先提出容器云虛擬資源的配置和遷移方案,發(fā)現(xiàn)物理機(jī)選擇策略對(duì)數(shù)據(jù)中心能耗有重要影響,其次通過(guò)研究主機(jī)利用率與容器利用率、主機(jī)利用率與虛擬機(jī)利用率、主機(jī)利用率與數(shù)據(jù)中心能耗之間的數(shù)學(xué)關(guān)系,建立容器云數(shù)據(jù)中心能耗的數(shù)學(xué)模型,定義出優(yōu)化目標(biāo)函數(shù),最后通過(guò)對(duì)物理機(jī)的能耗函數(shù)使用線性插值進(jìn)行模擬,依據(jù)鄰近事物相類似的特性,提出改進(jìn)的最佳能耗優(yōu)先物理機(jī)選擇算法。文獻(xiàn)[13]提出了一種基于多種群遺傳算法的優(yōu)化部署策略,對(duì)最優(yōu)個(gè)體進(jìn)行高斯學(xué)習(xí),避免陷入局部最優(yōu),獲取極高的配置優(yōu)化效果。但是上述方法存在配置容量較低、響應(yīng)時(shí)間過(guò)長(zhǎng)以及資源配置優(yōu)化過(guò)程中耗費(fèi)過(guò)多資源的問(wèn)題。
而遺傳算法是人工智能技術(shù)中應(yīng)用極為廣泛的技術(shù),將遺傳算法應(yīng)用于容器云資源配置優(yōu)化中可獲取極高的優(yōu)化效果。針對(duì)以上研究存在的不足,本文提出一種基于遺傳算法的容器云資源配置優(yōu)化,利用遺傳算法所具有的快速搜尋最佳路徑的優(yōu)勢(shì),解決云環(huán)境下的虛擬資源配置優(yōu)化問(wèn)題。通過(guò)實(shí)驗(yàn)驗(yàn)證本文方法具有較高的資源配置優(yōu)化有效性,應(yīng)用于容器云資源配置優(yōu)化中,具有很好的實(shí)用性。
針對(duì)容器云平臺(tái)中的虛擬資源配置實(shí)施優(yōu)化,將容器技術(shù)與虛擬化技術(shù)結(jié)合,所構(gòu)建的容器云平臺(tái)架構(gòu)如圖1所示。
圖1 容器云平臺(tái)的層次結(jié)構(gòu)
容器云平臺(tái)中包含共享資源層、設(shè)備層以及集群服務(wù)層等層。資源配置模塊位于集群服務(wù)層,將所研究的資源配置優(yōu)化方法應(yīng)用于資源配置模塊中,實(shí)現(xiàn)容器云環(huán)境虛擬資源配置的有效優(yōu)化。
通過(guò)容器云環(huán)境虛擬資源配置維護(hù)建立容器與虛擬機(jī)以及虛擬機(jī)與物理主機(jī)間配置情況[14]。設(shè)容器云平臺(tái)數(shù)據(jù)中心中包含容器、虛擬機(jī)以及物理主機(jī)數(shù)量分別為S、N、M。
4)用ηi={ηi,1,ηi,2,…,ηi,N}與λi={λi,1,λi,2,…,λi,S}分別表示物理主機(jī)的虛擬機(jī)配置以及虛擬機(jī)的容器配置,當(dāng)vmj與cj部署于gi與vmi上時(shí),則ηi,j=1,λi,j=1;否則ηi,j=0,λi,j=0。ηi與λi分別為N元向量以及S元向量。容器云數(shù)據(jù)中心配置狀態(tài)分別用矩陣A=(η1T,η2T,…,ηMT)T與矩陣B=(λ1T,λ2T,…,λNT)T表示,矩陣大小分別為M×N與N×S。
5)容器云環(huán)境虛擬資源數(shù)據(jù)中心資源配置應(yīng)符合以下約束條件:
①虛擬機(jī)配置于物理主機(jī)gi上時(shí),物理主機(jī)所提供資源需高于虛擬機(jī)的硬盤(pán)、內(nèi)存等全部資源。
②容器配置于虛擬機(jī)vmi上時(shí),虛擬機(jī)所提供資源需高于容器的硬盤(pán)、內(nèi)存以及帶寬之和[16]。
③容器配置于虛擬機(jī)vmi上時(shí),虛擬機(jī)CPU資源需高于全部容器CPU工作負(fù)載之和。
⑥不可多臺(tái)物理主機(jī)配置一臺(tái)虛擬機(jī)。
(1)
⑦不可多臺(tái)虛擬機(jī)配置一臺(tái)容器。
(2)
一般情況下容器云平臺(tái)中主要能源消耗的為物理主機(jī)。用γi(t)、πi(t)與μi(t)表示時(shí)間為t時(shí),虛擬機(jī)vmi、物理主機(jī)gi以及容器ci的CPU利用率。
①用λj表示容器配置于虛擬機(jī)vmi中的狀態(tài),時(shí)間為t時(shí),vmi的CPU利用率表達(dá)式如下:
(3)
②前面提到ηi為虛擬機(jī)配置于物理主機(jī)vmi中的狀態(tài),時(shí)間為t時(shí),物理主機(jī)gi的CPU利用率表達(dá)式如下:
(4)
③時(shí)間為t時(shí),物理主機(jī)能耗與CPU利用率所呈現(xiàn)的關(guān)系式如下:
Pi(t)=Pidle+(Pmax-Pidle)×πi(t)
(5)
其中,Pidle和Pmax分別表示物理主機(jī)gi在空閑和滿負(fù)載的時(shí)候的能量消耗,根據(jù)物理主機(jī)的硬件條件,Pidle和Pmax是固定的常數(shù)。
通過(guò)公式(5)可知,該關(guān)系式呈現(xiàn)單調(diào)遞增趨勢(shì)。
④物理主機(jī)運(yùn)行時(shí)間由t1變?yōu)閠2時(shí),其能耗表達(dá)式如下:
(6)
⑤全部物理主機(jī)所消耗能耗即數(shù)據(jù)中心所消耗能耗[18],其表達(dá)式如公式(7)所示。其中M為物理主機(jī)的個(gè)數(shù)。
(7)
利用遺傳算法求解上述容器云平臺(tái)數(shù)據(jù)中心整體能耗最低的目標(biāo)函數(shù),遺傳算法針對(duì)容器云可實(shí)現(xiàn)雙層資源分配,利用具有針對(duì)性的操作以及染色體設(shè)計(jì)實(shí)現(xiàn)虛擬資源配置有效優(yōu)化。遺傳算法的容器云平臺(tái)數(shù)據(jù)中心整體能耗最低的目標(biāo)函數(shù)求解過(guò)程如下。
1)染色體表達(dá)。
利用2個(gè)差異的染色體建立個(gè)體,分別用于分配容器云平臺(tái)中虛擬機(jī)以及容器,可以參考文獻(xiàn)[19-20]。通過(guò)算法輸入和輸出2部分設(shè)計(jì)染色體,利用染色體解碼過(guò)程實(shí)現(xiàn)容器云資源的良好分配。容器云中的雙染色體完成資源分配如圖2所示。
圖2 容器云中的雙染色體完成資源分配
利用正整數(shù)向量表示全部染色體,利用染色體實(shí)現(xiàn)容器分配時(shí),容器云平臺(tái)中的容器數(shù)量采用染色體長(zhǎng)度表示,染色體數(shù)值為輸入容器的索引編號(hào)。
染色體分配虛擬機(jī)時(shí),利用輸入口體現(xiàn)全部虛擬機(jī)中的獨(dú)立虛擬機(jī)類型。容器與虛擬機(jī)的分配向量長(zhǎng)度應(yīng)相同。容器與虛擬機(jī)應(yīng)實(shí)現(xiàn)一對(duì)一映射。利用遺傳算法解碼所輸入個(gè)體實(shí)現(xiàn)最終分配,選取下次適用算法實(shí)現(xiàn)個(gè)體分配,該算法是啟發(fā)式裝箱算法中的重要算法。將容器與虛擬機(jī)映射時(shí),需依據(jù)固定次序?qū)⑷萜髋渲弥撂摂M機(jī)中。已完成分配的容器無(wú)法分配至其他虛擬機(jī)中,需及時(shí)關(guān)閉虛擬機(jī),關(guān)閉的虛擬機(jī)表示已分配完成[21],無(wú)法再次裝載以及檢測(cè)。完成全部容器分配后,實(shí)現(xiàn)遺傳算法解碼。采用以上規(guī)則同樣配置裝載于物理主機(jī)的虛擬機(jī)。通過(guò)遺傳算法的雙染色體表示方法將全部解空間覆蓋,獲取最優(yōu)的容器云虛擬資源分配結(jié)果。
2)初始化。
通過(guò)對(duì)不同種群個(gè)體索引編號(hào),形成分配容器的染色體序列。選取虛擬機(jī)類型形成初始化分配虛擬機(jī)的遺傳算法染色體。
3)交叉操作。
對(duì)染色體進(jìn)行交叉操作,利用遺傳算法交叉操作提升容器云環(huán)境虛擬資源利用率,選取order1交叉操作避免遺傳算法運(yùn)行過(guò)程中下一代染色體存在預(yù)早熟情況。選取單點(diǎn)交叉操作分配容器云環(huán)境虛擬資源過(guò)程中的染色體[22]。單體交叉操作算法需選取連續(xù)序列于父代中,將其余值依據(jù)固定順序存儲(chǔ)于子代中。
4)變異操作。
完成交叉操作后,傳輸至變異操作模型進(jìn)行變異處理,遺傳算法利用變異操作搜索過(guò)程獲取局部最優(yōu)解,利用變異操作獲取目前個(gè)體的鄰居情況。不同層次分配染色體,搜索局部最優(yōu)解時(shí)選取調(diào)整虛擬機(jī)類型以及切換變異操作2部分實(shí)現(xiàn)新變異操作。
從分配容器的染色體中隨機(jī)選取接入點(diǎn),利用切換變異調(diào)整染色體入口值[23]。通過(guò)切換變異調(diào)整不同容器分配情況。利用循環(huán)操作虛擬機(jī)分配染色體調(diào)整虛擬機(jī)類型,調(diào)整虛擬機(jī)類型時(shí),需依據(jù)固定概率利用變異操作調(diào)整入口值。
5)設(shè)置適應(yīng)度函數(shù)。
計(jì)算所有染色體的適應(yīng)度函數(shù),設(shè)置容器云環(huán)境虛擬資源配置能量消耗作為遺傳算法適應(yīng)度函數(shù),經(jīng)過(guò)多次迭代計(jì)算,找出近似全局最優(yōu)染色體,獲取容器云平臺(tái)數(shù)據(jù)中心整體能耗最低的目標(biāo)函數(shù)的優(yōu)化結(jié)果,即目標(biāo)函數(shù)最優(yōu)解,則遺傳算法能量消耗適應(yīng)度函數(shù)表達(dá)式如下:
(8)
公式(8)中,tstart與tend分別表示執(zhí)行任務(wù)集的開(kāi)始時(shí)間以及結(jié)束時(shí)間。依據(jù)公式(8)所建立目標(biāo)函數(shù)可知,容器云平臺(tái)通過(guò)解決容器以及虛擬機(jī)配置過(guò)程中的物理主機(jī)選擇問(wèn)題實(shí)現(xiàn)能耗最低優(yōu)化過(guò)程。
為驗(yàn)證本文提出的基于遺傳算法的容器云資源配置優(yōu)化方法,選取AuverGrid資源分配數(shù)據(jù)集作為實(shí)驗(yàn)數(shù)據(jù)集。設(shè)置主頻為3500 MHz的CPU于物理主機(jī)中,利用共500臺(tái)物理主機(jī)建立容器云數(shù)據(jù)中心。設(shè)置遺傳算法交叉率為0.8,單染色體與雙染色體變異率分別為0.8與0.1,進(jìn)化代數(shù)量設(shè)置為800,種群數(shù)量為100。
實(shí)驗(yàn)所設(shè)置容器云平臺(tái)中虛擬機(jī)分類結(jié)果如表1所示。
表1 容器云平臺(tái)虛擬機(jī)分類
統(tǒng)計(jì)采用本文方法優(yōu)化容器云資源配置,不同交叉率情況下,三類虛擬機(jī)分類情況的容器云平臺(tái)于24小時(shí)的總能量消耗結(jié)果,統(tǒng)計(jì)結(jié)果如圖3所示。
圖3 不同虛擬機(jī)類型下總能量消耗結(jié)果
從圖3實(shí)驗(yàn)結(jié)果可以看出,本文方法在不同虛擬機(jī)分類時(shí)的平均能量消耗均較低。交叉率為0.8時(shí),采用本文方法優(yōu)化容器云資源配置的平均能量消耗為最低。資源分配方式的差異并不影響容器云能量消耗,主要原因是本文方法計(jì)算過(guò)程中保持最大的虛擬機(jī)需求,不同資源分配時(shí)能量消耗波動(dòng)較小。
統(tǒng)計(jì)采用本文方法優(yōu)化容器云資源配置,不同容器數(shù)量時(shí),容器云平臺(tái)于24小時(shí)內(nèi)的能量消耗結(jié)果,統(tǒng)計(jì)結(jié)果如圖4所示。
圖4 不同容器數(shù)量時(shí)總能量消耗結(jié)果
從圖4實(shí)驗(yàn)結(jié)果可以看出,伴隨容器數(shù)量的增加,采用本文方法優(yōu)化容器云資源配置,總能量消耗有所增加。說(shuō)明容器數(shù)量的增加對(duì)總能量消耗影響較大。本文方法在容器數(shù)量增加時(shí),保持穩(wěn)定的增加幅度,驗(yàn)證本文方法具有極強(qiáng)的容器云資源配置優(yōu)化有效性。
統(tǒng)計(jì)不同任務(wù)數(shù)量時(shí),虛擬機(jī)類型變化時(shí)的虛擬機(jī)利用數(shù)量,統(tǒng)計(jì)結(jié)果如圖5所示。
從圖5實(shí)驗(yàn)結(jié)果可以看出,隨著虛擬機(jī)類型數(shù)量的增加,容器云平臺(tái)中虛擬機(jī)利用數(shù)量有所增加;任務(wù)數(shù)量增加時(shí),虛擬機(jī)利用數(shù)量有所增加。本文方法在不同任務(wù)數(shù)量時(shí),虛擬機(jī)利用數(shù)量可保證低于80個(gè),說(shuō)明本文方法可利用較少的虛擬機(jī)利用數(shù)量獲取最佳的虛擬資源配置優(yōu)化效果。本文方法所采用遺傳算法可搜尋互補(bǔ)的虛擬機(jī)類型,提升物理資源利用率,實(shí)現(xiàn)良好的優(yōu)化效果,獲取能量消耗最低化。
圖5 虛擬機(jī)利用數(shù)量統(tǒng)計(jì)結(jié)果
設(shè)定虛擬資源節(jié)點(diǎn)為50,隨機(jī)選取5個(gè)虛擬資源節(jié)點(diǎn),統(tǒng)計(jì)各虛擬資源節(jié)點(diǎn)的內(nèi)存、CPU以及帶寬的資源節(jié)點(diǎn)分配比率,統(tǒng)計(jì)結(jié)果如圖6所示。
圖6 分配比率對(duì)比結(jié)果
從圖6實(shí)驗(yàn)結(jié)果可以看出,本文方法的虛擬資源節(jié)點(diǎn)分配較為均衡。采用本文方法可實(shí)現(xiàn)負(fù)載的有效均衡,再次驗(yàn)證本文方法所具有的資源配置優(yōu)化有效性。采用本文方法實(shí)現(xiàn)虛擬資源配置優(yōu)化,不同虛擬資源節(jié)點(diǎn)的內(nèi)存、CPU以及帶寬的資源節(jié)點(diǎn)分配比率均具有較小的波動(dòng)性,趨于平衡,驗(yàn)證本文方法具有較高的資源配置優(yōu)化有效性。本文方法可平衡不同節(jié)點(diǎn)資源利用情況,提升容器云平臺(tái)虛擬機(jī)的服務(wù)質(zhì)量以及服務(wù)器的資源利用率。
為了進(jìn)一步驗(yàn)證本文方法的有效性,對(duì)本文方法、文獻(xiàn)[12]方法和文獻(xiàn)[13]方法的容器云環(huán)境內(nèi)的虛擬資源配置容量進(jìn)行對(duì)比分析,對(duì)比結(jié)果如圖7所示。
圖7 虛擬資源配置容量對(duì)比結(jié)果
根據(jù)圖7可知,本文方法的容器云環(huán)境內(nèi)的虛擬資源配置容量最高可達(dá)12 T,而文獻(xiàn)[12]方法和文獻(xiàn)[13]方法的容器云環(huán)境內(nèi)的虛擬資源配置容量只有7 T和6 T,本文方法的容器云環(huán)境內(nèi)的虛擬資源配置容量較高,能夠存儲(chǔ)大量的虛擬資源。
容器是一種輕量級(jí)的新型虛擬化技術(shù),具有啟動(dòng)速度快、占用資源少、可伸縮強(qiáng)的優(yōu)點(diǎn),因而針對(duì)基于容器的云平臺(tái)研究頗受關(guān)注。本文針對(duì)容器云資源優(yōu)化問(wèn)題,采用遺傳算法求解所建立目標(biāo)函數(shù),實(shí)現(xiàn)了容器云環(huán)境中虛擬資源優(yōu)化。遺傳算法是重要的人工智能技術(shù),下一步的工作是利用其他的新型智能算法完成容器云資源調(diào)度優(yōu)化。