徐勝超 陳 剛 毛明揚(yáng)
(廣州華商學(xué)院數(shù)據(jù)科學(xué)學(xué)院 廣州 511300)
隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的迅速普及和發(fā)展,對(duì)網(wǎng)絡(luò)用戶和業(yè)務(wù)的需求急劇增長(zhǎng),使得云平臺(tái)上的數(shù)據(jù)集成服務(wù)更加復(fù)雜、更加多樣化,對(duì)云資源調(diào)度提出了更高的要求[1~2]。當(dāng)前的容器云平臺(tái)部署方法在面臨開(kāi)發(fā)、集成、部署、運(yùn)維等情況時(shí),在已經(jīng)無(wú)法滿足集中化管理與自動(dòng)化運(yùn)維。為了充分發(fā)揮容器易分發(fā)、易部署的優(yōu)勢(shì),相關(guān)國(guó)內(nèi)外專家針對(duì)容器云平臺(tái)的低能耗部署方面的內(nèi)容展開(kāi)了不同方向的研究。
文獻(xiàn)[3]將虛擬機(jī)放置在物理主機(jī)上,這樣可以最小化功耗,最大化資源利用率。因此該文獻(xiàn)在考慮優(yōu)化能源消耗和資源利用的情況下,解決了CaaS 環(huán)境中容器和虛擬機(jī)的放置問(wèn)題,并提出了一種基于鯨魚(yú)優(yōu)化算法來(lái)進(jìn)行求解。該算法在一個(gè)搜索空間中搜索虛擬機(jī)和虛擬機(jī)的最優(yōu)數(shù)量,實(shí)驗(yàn)結(jié)果表明,該方法在測(cè)試環(huán)境套件上優(yōu)于常見(jiàn)的方法。但是該方法受服務(wù)器分配的影響,造成部署方案能耗較高。文獻(xiàn)[4]通過(guò)邊緣計(jì)算節(jié)點(diǎn)部署的位置選擇,采用窮舉方式選擇最佳網(wǎng)絡(luò)節(jié)點(diǎn),最終實(shí)現(xiàn)需求響應(yīng)邊緣云部署。文獻(xiàn)[5]通過(guò)馬爾科夫鏈模型描述單一容器的資源需求情況以及資源需求態(tài)勢(shì),最終通過(guò)資源預(yù)留方法實(shí)現(xiàn)集群容器部署。文獻(xiàn)[6]采用Harmony 的搜索算法移動(dòng)虛擬機(jī),減少云平臺(tái)的能耗,通過(guò)對(duì)節(jié)點(diǎn)和虛擬機(jī)按優(yōu)先級(jí)降序排序的方法實(shí)現(xiàn)定位,完成工作負(fù)載計(jì)算,以此降低能耗。文獻(xiàn)[4~6]方法實(shí)現(xiàn)了容器云或邊緣云低能耗部署,但是其部署效率有待進(jìn)一步提升。文獻(xiàn)[7]引入霧計(jì)算理論基礎(chǔ),提出了一種混合整數(shù)線性規(guī)劃公式,在考慮服務(wù)功能鏈概念、不同低功率廣域網(wǎng)技術(shù)和多個(gè)優(yōu)化目標(biāo)的基礎(chǔ)上,完成無(wú)線網(wǎng)絡(luò)需求,實(shí)現(xiàn)在霧計(jì)算環(huán)境中的資源配置優(yōu)化,但是該方法在容器云資源部署過(guò)程中的資源綜合利用率較低。
粒子群算法是一種基于隨機(jī)求解的演化方法,通過(guò)相互傳遞各自信息,判斷是否得出最優(yōu)解,即問(wèn)題收斂。粒子群算法易于實(shí)現(xiàn),精度高,收斂速度快,因此可以用于容器云平臺(tái)低能耗部署。為此,本文提出了基于粒子群算法的容器云平臺(tái)低能耗部署方法,并通過(guò)仿真測(cè)試驗(yàn)證了該方法可以有效提升容器云平臺(tái)低能耗部署性能。
在建立容器云平臺(tái)低能耗部署模型的過(guò)程中,待部署的資源以服務(wù)的形式存在。隨機(jī)任務(wù)集合根據(jù)任務(wù)等待序列被部署到云服務(wù)資源節(jié)點(diǎn)執(zhí)行相關(guān)操作。為了進(jìn)一步達(dá)到容器云資源低能耗部署的目的,需要通過(guò)建立目標(biāo)函數(shù)降低容器云平臺(tái)能耗,在約束條件下構(gòu)建低能耗部署模型。下面的式(1)為目標(biāo)函數(shù),式(2)和式(3)為約束條件,式(4)為能耗模型。
2.1.1 建立目標(biāo)函數(shù)
云資源調(diào)度過(guò)程中不僅需要降低網(wǎng)絡(luò)存儲(chǔ)開(kāi)銷和計(jì)算開(kāi)銷,還需要為內(nèi)存優(yōu)化、運(yùn)行安全提供最大限度的保障。因此,可以利用指數(shù)函數(shù)構(gòu)建容器云平臺(tái)低能耗部署模型,分析低能耗動(dòng)態(tài)負(fù)載情況,達(dá)到優(yōu)化負(fù)載均衡調(diào)度的目的,本文設(shè)計(jì)的具體目標(biāo)函數(shù)可以表示為式(1)的形式:
上式中,Eit代表網(wǎng)絡(luò)節(jié)點(diǎn)i在時(shí)刻t的低能耗動(dòng)態(tài)負(fù)載;αi代表網(wǎng)絡(luò)節(jié)點(diǎn)i的配置權(quán)值;pit代表網(wǎng)絡(luò)節(jié)點(diǎn)i在時(shí)刻t的傳輸幅值。
2.1.2 創(chuàng)建約束條件
以目標(biāo)函數(shù)為基礎(chǔ),創(chuàng)建約束條件,在滿足約束條件下構(gòu)建低能耗部署模型。低能耗部署平衡約束(等式約束)和時(shí)間約束(不等式約束),能夠有效降低網(wǎng)絡(luò)節(jié)點(diǎn)失衡度,如式(2)、式(3)所示:
上式中,Q代表低能耗部署平衡約束;ki代表有效的負(fù)載電容;Gi代表網(wǎng)損;Tc代表用戶期望獲取的最長(zhǎng)時(shí)間;Ti代表時(shí)間約束;Ta代表用戶提交的任務(wù)計(jì)算時(shí)間。忽略網(wǎng)損Gi,在云資源調(diào)度結(jié)構(gòu)優(yōu)化過(guò)程中,完成分布式網(wǎng)絡(luò)節(jié)點(diǎn)分配。
2.1.3 構(gòu)建部署模型
結(jié)合以上分析,構(gòu)建容器云平臺(tái)低能耗部署模型。低能部署耗模型是結(jié)合目標(biāo)函數(shù),利用約束條件分析綜合用戶提交的任務(wù)計(jì)算時(shí)間及用戶期望獲取最長(zhǎng)時(shí)間的一種部署模型。通過(guò)低能耗模型可以有效權(quán)衡提交時(shí)間和期望時(shí)間之間的關(guān)系,以此獲取最短任務(wù)執(zhí)行時(shí)間,有效解決容器云平臺(tái)低能耗部署任務(wù)執(zhí)行時(shí)間最小化的問(wèn)題。
在隨機(jī)任務(wù)執(zhí)行過(guò)程中,需要獲取容器云平臺(tái)低能耗部署的最短時(shí)間。但是單一的時(shí)間優(yōu)化模型會(huì)導(dǎo)致網(wǎng)絡(luò)負(fù)載增加,同時(shí)容器云整體服務(wù)效率也會(huì)大幅度下降,所以需要設(shè)定任務(wù)時(shí)間的具體取值范圍為tk[t,tbegin-tend],其中,tk代表容器云平臺(tái)低能耗部署時(shí)間;t代表部署時(shí)間總和;tbegin和tend分別代表任務(wù)起始時(shí)間和任務(wù)結(jié)束時(shí)間。
在容器云平臺(tái)低能耗部署過(guò)程中,還需要考慮超時(shí)忍耐函數(shù),同時(shí)也代表任務(wù)服務(wù)的關(guān)鍵程度。當(dāng)超時(shí)忍耐函數(shù)的取值越好,則說(shuō)明節(jié)點(diǎn)利用率就越高,任務(wù)在同一時(shí)間段內(nèi)可以被更多資源部署。當(dāng)網(wǎng)絡(luò)服務(wù)壓力的取值越大,需要通過(guò)云網(wǎng)絡(luò)和忍耐函數(shù)均衡因子條件不同參數(shù)的取值,確保忍耐值最小。對(duì)于已經(jīng)參與服務(wù)的云計(jì)算節(jié)點(diǎn)總數(shù)量、任務(wù)數(shù)量以及忍耐函數(shù)值而言,當(dāng)任務(wù)等待隊(duì)列中有任務(wù)不僅滿足資源能力需求同時(shí)也滿足任務(wù)約束時(shí)間時(shí),則直接執(zhí)行該任務(wù);反之,則需要引入松弛時(shí)間相關(guān)概念,使其滿足以上需求,最終完成任務(wù)請(qǐng)求。
通過(guò)上述分析可知,由于需要制定一個(gè)容器云平臺(tái)低能耗服務(wù)器分配方案[8],才可以得到對(duì)應(yīng)的部署方案,所以在不考慮散熱的情況下,計(jì)算容器云數(shù)據(jù)中心的能耗,從計(jì)算結(jié)果中同時(shí)獲取最低能量消耗,獲取對(duì)應(yīng)的容器云平臺(tái)低能耗部署模型可以表示為式(4)的形式:
上式中,minN代表容器云平臺(tái)低能耗部署模型;fmax和fmin分別代表最高和最低分工頻率;Fmax代表服務(wù)器最大占用頻率,n代表節(jié)點(diǎn)總數(shù)量。在執(zhí)行隨機(jī)任務(wù)的過(guò)程中,由于數(shù)據(jù)傳輸會(huì)給數(shù)據(jù)中心帶來(lái)一定的負(fù)載,所以需要設(shè)定負(fù)載函數(shù)θ[9-10]。
以最低能量消耗和最短任務(wù)執(zhí)行時(shí)間為目標(biāo),組建容器云平臺(tái)低能耗部署模型,同時(shí)設(shè)定對(duì)應(yīng)的約束條件。根據(jù)通過(guò)負(fù)載函數(shù)和超時(shí)忍耐函數(shù)的優(yōu)化求解可以獲取最佳部署方案。
粒子群算法[11~12]屬于全局優(yōu)化算法的一種,粒子群的個(gè)體對(duì)應(yīng)于容器云平臺(tái)低能耗部署問(wèn)題的可能解,各個(gè)粒子存在位置、速度兩種變量,粒子位置坐標(biāo)表示的目標(biāo)函數(shù)值就是此粒子的適應(yīng)度。粒子群算法里,各個(gè)粒子都存在一個(gè)可能的最優(yōu)解,因此容器云低能耗部署過(guò)程中,將一個(gè)任務(wù)劃分為多個(gè)大小相同的子任務(wù),并將其分配到對(duì)應(yīng)的部署節(jié)點(diǎn)上。對(duì)任務(wù)編碼的方式主要使用間接編碼方式,其中編碼的長(zhǎng)度主要根據(jù)子任務(wù)長(zhǎng)度體現(xiàn)。利用圖1給出粒子編碼解碼規(guī)則。
圖1 粒子編碼解碼規(guī)則
粒子群算法的適應(yīng)度函數(shù)會(huì)直接關(guān)系到算法的收斂速度以及全局最優(yōu)解。在確保容器穩(wěn)定性的前提下,需要兼顧多個(gè)優(yōu)化目標(biāo),進(jìn)而獲取更加滿意的優(yōu)化結(jié)果。基于容器云平臺(tái)低能耗部署實(shí)際需求,利用粒子位置完成容器云平臺(tái)低能耗部署實(shí)數(shù)編碼,使編碼形式更加直觀、更便于解碼。假設(shè)表示粒子狀態(tài),則推導(dǎo)出粒子群編碼格式為,其中,xmD代表粒子的位置,g(xm)代表粒子的適應(yīng)度函數(shù)值,m代表粒子數(shù)量。
給定粒子數(shù)量m與迭代次數(shù)k后,對(duì)粒子群中各粒子位置與速度進(jìn)行初始化處理,設(shè)置節(jié)點(diǎn)編碼與速度是1,兩者分別與容器云資源低能耗部署的任務(wù)起始時(shí)間和任務(wù)結(jié)束時(shí)間相對(duì)應(yīng),適應(yīng)度函數(shù)值是+∞,其他指標(biāo)的初始化值均是0。
考慮到容器云平臺(tái)低能耗部署過(guò)程中存在總負(fù)載均衡度、總?cè)蝿?wù)完成時(shí)間等諸多限制信息,只有在粒子群優(yōu)化算法中加入相應(yīng)的約束條件,才能確保容器云平臺(tái)低能耗部署方案具有一定的有效性與實(shí)用性。因此,在考慮負(fù)載均衡的前提下[13],設(shè)定如式(5)所示的適應(yīng)度函數(shù):
上式中,L代表總負(fù)載均衡度;tmax代表總?cè)蝿?wù)完成時(shí)間;Numvm-cup代表單一CPU的處理能力;λ代表限制信息。
在采用粒子群算法[14~15]求解容器云平臺(tái)低能耗部署模型的過(guò)程中,由于種群規(guī)模比較大,會(huì)導(dǎo)致算法出現(xiàn)早熟的現(xiàn)象。所以實(shí)行早熟判斷和處理是十分重要的環(huán)節(jié),可以增加收斂速度的同時(shí),避免早熟現(xiàn)象,該過(guò)程通過(guò)迭代方式實(shí)現(xiàn)。
假設(shè)迭代更新的時(shí)間間隔是Δt,慣性權(quán)重為ω,則采用式(6)和式(7)更新粒子位置與速度:
上式中,k代表迭代次數(shù);代表更新后的粒子速度。根據(jù)式(5)計(jì)算出的解碼過(guò)程中適應(yīng)度函數(shù)值,留存多個(gè)理想粒子,在每次迭代過(guò)程中,及時(shí)更新各個(gè)粒子的位置和速度信息[16],當(dāng)粒子的適應(yīng)度取值大于歷史適應(yīng)度值,則需要展開(kāi)替換操作。在整個(gè)群體中,可以通過(guò)種群中粒子適應(yīng)度值的個(gè)體或者全局描述對(duì)應(yīng)的位置信息[17~18],進(jìn)而判定算法是否陷入早熟。
通過(guò)上述分析,在粒子群算法[19]的基礎(chǔ)上,充分考慮容器云平臺(tái)低能耗部署限制信息,在其中加入相應(yīng)的約束條件并通過(guò)限制粒子移動(dòng)區(qū)域,實(shí)現(xiàn)基于粒子群算法的容器云平臺(tái)低能耗部署,圖2 給出了粒子群算法求解容器云平臺(tái)低能耗部署模型的詳細(xì)操作流程。
圖2 容器云平臺(tái)低能耗部署模型求解流程圖
步驟1:參數(shù)初始化處理;
步驟2:對(duì)各個(gè)粒子解碼處理,主要由容器云平臺(tái)低能耗部署任務(wù)和計(jì)算節(jié)點(diǎn)之間的分配關(guān)系獲取對(duì)應(yīng)的矩陣;
步驟3:計(jì)算各個(gè)粒子的適應(yīng)度值;
步驟4:根據(jù)設(shè)定的適應(yīng)度函數(shù)篩選最佳個(gè)體位置,依據(jù)式(5)優(yōu)先篩選負(fù)載均衡度最小的粒子作為最優(yōu)個(gè)體位置,假設(shè)有多個(gè)粒子,則進(jìn)入二級(jí)篩選階段,將總?cè)蝿?wù)完成時(shí)間加權(quán)最大的粒子設(shè)定為當(dāng)前最佳粒子;
步驟5:通過(guò)適應(yīng)度函數(shù)篩選全局最優(yōu)粒子位置;
步驟6:判斷算法是否達(dá)到最大迭代次數(shù),是則執(zhí)行步驟9;反之,進(jìn)入步驟7;
步驟7:更新慣性權(quán)重ω取值,確保算法的慣性權(quán)重在設(shè)定區(qū)間范圍內(nèi)波動(dòng);
步驟8:依據(jù)式(6)和式(7)分段更新粒子的位置和速度;
步驟9:輸出最佳容器云平臺(tái)低能耗部署方案,停止計(jì)算。
為了驗(yàn)證基于粒子群算法的容器云平臺(tái)低能耗部署方法,根據(jù)第二部分的計(jì)算和分析,得到如表1 所示的種群粒子數(shù)量與容器云平臺(tái)低能耗部署相關(guān)性設(shè)置。
表1 種群粒子數(shù)量與容器云平臺(tái)低能耗部署設(shè)置
根據(jù)表1 可知,粒子群算法運(yùn)行時(shí)長(zhǎng)隨粒子數(shù)量的增加而上升,只有當(dāng)粒子規(guī)模是路網(wǎng)節(jié)點(diǎn)的1倍~1.5倍時(shí),才能取得較為理想的部署效果。綜合上述分析,設(shè)定粒子群算法參數(shù)分別為:種群粒子數(shù)量是1350 個(gè),最大允許迭代次數(shù)是220 次,慣性權(quán)重ω與迭代次數(shù)呈線性負(fù)相關(guān),取值范圍為[0,1]。
在阿里云Serverless Kubernetes 平臺(tái)中進(jìn)行容器云平臺(tái)低能耗部署測(cè)試。具體的測(cè)試環(huán)境參數(shù)設(shè)置為:隨機(jī)選擇48h 內(nèi)的容器云平臺(tái)低能耗部署任務(wù)負(fù)載數(shù)據(jù)作為測(cè)試數(shù)據(jù),設(shè)定容器的緩沖能力取值范圍,最大可至10000,最低至2000,同時(shí)最多可以分配200 個(gè)容器;最大響應(yīng)時(shí)間為1s。測(cè)試流程如圖3所示。
圖3 測(cè)試流程圖
參考文獻(xiàn)中的文獻(xiàn)[3~7],這5 種方法都有一定的共通性,選擇其中哪種方法進(jìn)行對(duì)比都能確保測(cè)試的準(zhǔn)確性。由于時(shí)間和研究條件的有限性,所以選擇了兩種方法進(jìn)行對(duì)比。對(duì)比本文方法和文獻(xiàn)[3]方法、文獻(xiàn)[4]方法的容器云平臺(tái)低能耗部署性能、資源綜合利用率和集群資源失衡度。
3.3.1 容器云平臺(tái)低能耗部署性能分析
測(cè)試通過(guò)最大任務(wù)執(zhí)行總時(shí)間、任務(wù)最大響應(yīng)時(shí)間、容器最大平均隊(duì)列長(zhǎng)度和容器在線運(yùn)行時(shí)間總長(zhǎng)四個(gè)指標(biāo)對(duì)比不同部署方案的性能展開(kāi)分析和研究。利用圖4 給出本文方法與文獻(xiàn)[3]方法和文獻(xiàn)[4]方法三種不同方法各項(xiàng)指標(biāo)的測(cè)試結(jié)果。
分析圖4 中的測(cè)試數(shù)據(jù)可知,與另外兩種方法相比,本文方法的任務(wù)平均最大等待時(shí)間、任務(wù)最大響應(yīng)時(shí)間和容器在線運(yùn)行時(shí)間明顯更低一些,容器最大平均隊(duì)列長(zhǎng)度更長(zhǎng)。這是由于本文方法利用粒子群算法根據(jù)篩選機(jī)制獲取歷史最好位置,將粒子群的最優(yōu)位置與容器云平臺(tái)低能耗部署方案進(jìn)行對(duì)應(yīng),以此提升容器云平臺(tái)低能耗部署性能效果。由此可見(jiàn),本文方法在容器云平臺(tái)低能耗部署過(guò)程中,不僅考慮到了服務(wù)質(zhì)量保證,同時(shí)還考慮了資源利用率,有效確保了容器運(yùn)行過(guò)程中的服務(wù)質(zhì)量。
圖4 容器云平臺(tái)低能耗部署性能測(cè)試結(jié)果分析
3.3.2 資源綜合利用率分析
各個(gè)方法的資源綜合利用率對(duì)比結(jié)果如表2所示。該測(cè)試結(jié)果通過(guò)負(fù)載均衡度指標(biāo)進(jìn)行衡量,容器的負(fù)載均衡度越高,代表對(duì)應(yīng)方法下的服務(wù)器吞吐性能更好,其資源綜合利用率更高。
由表2 中的數(shù)據(jù)可知,本文方法的負(fù)載均衡度相較于對(duì)比方法更高,最高負(fù)載均衡度達(dá)到95%,相較于文獻(xiàn)[3]方法的93%和90%更高,其主要原因是本文方法在考慮資源低能耗部署的網(wǎng)絡(luò)重要程度以及用戶期望值的情況下,建立了容器云平臺(tái)低能耗部署模型,可以更好利用帶寬以及存儲(chǔ)需求,從而提升了資源綜合利用率。
表2 不同方法的資源綜合利用率測(cè)試結(jié)果對(duì)比
3.3.3 集群資源失衡度分析
選取集群資源失衡度作為測(cè)試指標(biāo),利用圖5給出詳細(xì)的測(cè)試結(jié)果。
圖5 不同方法的集群資源失衡度測(cè)試結(jié)果對(duì)比分析
由圖5 中的測(cè)試數(shù)據(jù)可知,各個(gè)方法的集群資源失衡度會(huì)隨著虛擬機(jī)內(nèi)存的增加而增加。其主要原因是虛擬機(jī)內(nèi)存的增加,造成容器內(nèi)需調(diào)度和部署的資源增多,導(dǎo)致容器的負(fù)載增加,更易導(dǎo)致集群資源失衡。然而在三種方法中,本文方法的集群資源失衡度明顯更低一些,最高集群資源失衡度為0.19,其主要原因是本文方法在考慮總負(fù)載均衡度的基礎(chǔ)上,構(gòu)建了適應(yīng)度函數(shù),通過(guò)多次迭代找到了粒子最優(yōu)位置,實(shí)現(xiàn)了高效率的容器云平臺(tái)低能耗部署,降低了容器負(fù)載的影響。
本文利用了粒子群算法,構(gòu)建并求解容器云平臺(tái)低能耗部署模型,有效降低集群資源失衡度,提升了綜合資源利用率,同時(shí)還能夠獲取更加滿意的容器云平臺(tái)低能耗部署方案。由于容器云資源低能耗部署問(wèn)題是一個(gè)十分復(fù)雜的問(wèn)題,本文方法仍然存在一定不足,后續(xù)進(jìn)一步研究如何將不同因素的影響降至最低,確保本文方法的性能達(dá)到最佳狀態(tài)。