徐勝超,葉朝武
(廣州華商學院 數(shù)據(jù)科學學院,廣州 511300)
如何讓云計算變得更加節(jié)能高效,是當今政府和企業(yè)都在關注的重點問題。容器云資源的管理和部署都是以容器為基礎的,不需要涉及硬件,因此它的重量更輕,啟動速度也更快。但是由于容器云資源較大,數(shù)據(jù)中心能耗較高,致使容器云資源利用率較低,因此,需要對容器云資源完成低能耗部署,有效降低數(shù)據(jù)中心的能耗,提高容器云資源利用率[1]。
當前文獻[2]提出基于資源預留的容器云部署方法。文獻[3]在云平臺用戶個性化資源需求與虛擬機動態(tài)遷移技術有效集成的基礎上,設計了一種可根據(jù)用戶實際資源需求動態(tài)調(diào)整的節(jié)能虛擬機部署方法,將虛擬機部署框架與基于雙光標控制機制的虛擬機部署選擇算法相結合,有效地控制云數(shù)據(jù)中心中必要的活動物理節(jié)點數(shù)量,并且減少虛擬機遷移同步的頻率。文獻[4]提出了一種基于剪枝算法和深度強化學習的資源管理和任務部署方法。文獻[5]提出面向大數(shù)據(jù)復雜應用的虛擬集群動態(tài)部署模型方法,該方法在容器技術支持情況下建立了一個部署模型,依據(jù)資源的動態(tài)變動,利用該模型對虛擬群體實行調(diào)整和計算,其中包含節(jié)點類型的計算和節(jié)點規(guī)模的調(diào)整,并利用該模型完成對用戶作業(yè)的部署,實現(xiàn)資源部署的目的,該方法建立的模型不夠全面,存在請求接收率差的問題。
文獻[6]提出基于多維資源空閑率權重的容器云多維資源利用率均衡調(diào)度方法。文獻[7]提出基于遺傳算法的容器云資源配置優(yōu)化方法,該方法將容器云平臺數(shù)據(jù)中心整體能耗最低作為目標函數(shù),設置物理主機與虛擬機對應、虛擬機與容器對應等約束條件,利用遺傳算法通過染色體表達、初始化、交叉操作、變異操作以及設置適應度函數(shù)5個步驟求解目標函數(shù),獲取最優(yōu)容器云環(huán)境資源配置結果。通過對比分析認為,上述方法雖然均完成了容器云資源部署,但是容器云資源的利用率和負載均衡度仍然比較低。
本文將貪心算法應用到容器云資源低能耗部署方法的優(yōu)化設計工作中,在約束條件下,構建容器云資源能耗模型,對云資源進行虛擬化處理,整合容器云資源后,對物理機負載狀態(tài)檢測,利用貪心算法均衡調(diào)度容器云資源負載,然后通過容器云資源編排重組,達到資源部署低能耗的目的。最后通過構造系統(tǒng)仿真平臺,驗證了貪心算法優(yōu)化容器云資源低能耗部署策略的正確性和優(yōu)秀性能。
容器是提供程序運行的獨立空間,Docker容器平臺負責容器的生命周期管理以及相關資源信息的管理。Docker容器技術的出現(xiàn),為容器平臺的誕生打下了堅實的基礎[8]。容器云平臺開展資源低功耗部署時,平臺基本單位為容器,封裝軟件為平臺運行環(huán)境。容器云平臺主要側重于容器的編排以及資源的部署、共享,具體的資源組織結構如圖1所示。容器云平臺包括應用、開發(fā)、資源共享、設備、集群服務等層級。資源配置模塊與項目開發(fā)模塊位于集群服務層中,本文將研究的云資源低能耗部署方法應用于該資源配置模塊中,實現(xiàn)云資源的低能耗部署配置。
圖1 容器云平臺資源組織結構圖
容器運行時,可以通過Hypervisor采集容器的虛擬資源運行狀態(tài)參數(shù),但是由于采樣參數(shù)過多,會對物理機的運算帶來額外能耗負擔,所以本文在建立數(shù)據(jù)中心能耗模型時,通過灰色關聯(lián)分析方法[9],完成容器運行狀態(tài)參數(shù)的提取。設定容器虛擬能耗為P,容器運行參數(shù)比較序列設定(p1,p2,…,pn),通過關聯(lián)系數(shù)計算方法,完成參數(shù)比較序列的采樣,過程如下式所示:
(1)
式中,容器比較序列與P之間的灰色關聯(lián)值標記β(P,pi)形式,容器序列的兩級最小值分別用P(l)、pi(l)表述,常數(shù)標記i、n形式。設定βi≥0.6為參數(shù)選取閾值,完成容器運行狀態(tài)的選取。
云資源部署效果的測試指標為云資源利用率和物理機負載均衡系數(shù),則云資源利用率的數(shù)值結果為:
(2)
物理機負載均衡系數(shù)的數(shù)值結果為:
(3)
Ptotal=PPhysics+Pcloud+Ptransfer
(4)
式中,PPhysics、Pcloud和Ptransfer分別為物理機能耗、云服務器能耗和虛擬機遷移能耗,計算得出能耗量越低,說明對應部署方法的性能越優(yōu)。值得說明的是,在容器云資源的部署與運行過程中,能量消耗可以分為靜態(tài)能耗和動態(tài)能耗兩個部分,其中靜態(tài)能耗包括物理機能耗PPhysics與云服務器能耗Pcloud,而動態(tài)能耗則是容器遷移能耗Ptransfer(t)。
其中物理機能耗的計算公式如下:
PPhysics=Pidle+(Pmax-Pidle)*ηCPU
(5)
式中,參量Pidle和Pmax分別為物理機在空閑和滿負載狀態(tài)下的能量消耗值,該參數(shù)的具體取值由物理機的硬件條件決定,ηCPU表示的是物理機的CPU利用率,該值與物理機狀態(tài)、虛擬機CPU利用率以及CPU資源部署量有關[10]。云服務器能耗Pcloud計算方法為公式(6):
Pcloud=r*Cmax+(1-r)*Cmin
(6)
式中,r表示云服務器的CPU利用率,Cmax表示云服務器忙時的最大能量消耗,Cmin云服務器閑置時產(chǎn)生能耗。將CPU利用率的計算結果代入到公式(5)中,便可得出物理機能耗的求解結果PPhysics。同理計算云服務器不同狀態(tài)下的能耗總和Pcloud,即可得出服務器能耗的計算結果[11]。
根據(jù)容器云平臺中資源的實時變化,虛擬機及其內(nèi)部容器的實時位置會發(fā)生改變,因此在能耗計算之前首先需要判定虛擬機或容器是否發(fā)生遷移??紤]虛擬機和容器在遷移過程中內(nèi)存鏡像傳遞的次數(shù),得出虛擬機遷移能耗,也就是動態(tài)能耗。虛擬機遷移能耗計算方法為公式(7):
Ptransfer=k*E+(1-k)E*u
(7)
式中,k表示虛擬機完全閑置時產(chǎn)生能耗所占百分比,E表示虛擬機忙時的最大能量消耗,u表示虛擬機的CPU利用率。
最終通過累加求和的方式,得出得出容器云資源部署與運行過程中的總能耗值[12]。在實際的容器云資源部署過程中,由于靜態(tài)能耗不會因為虛擬機與容器的改變而產(chǎn)生影響,因此本文的算法主要保證遷移能耗最低即可。
Docker或者Cloudsim5.0這種容器云管理平臺都自帶這方面的功能,本文的貪心算法的部署過程都是以這些容器云平臺為基礎進行改進。物理機負載狀態(tài)檢測的目的是判斷當前物理機是否需要將虛擬機以及容器遷移到其他物理機中,同時也需要判斷該物理機是否能夠支持外部容器資源進入[13]。將物理機的負載狀態(tài)分為絕對過載Overload、絕對低載UnderLoad和正常Normal三種狀態(tài)。
在實際的檢測過程中,利用物理機的后臺運行程序,可以直接得出當前負載值,而下一時刻負載預測值可以根據(jù)物理機歷史負載數(shù)據(jù)變化規(guī)律以及容器云資源遷移任務得出[14]。經(jīng)過判斷,若當前物理機處于正常運行狀態(tài),則可以將其作為容器云資源調(diào)度的目標主機,但該設備的優(yōu)先級較低,且無須從中調(diào)取容器云資源[15]。若物理機處于絕對低負載,則在容器云資源部署過程中,可以直接將未分配的資源調(diào)度到該物理機中,并賦予該設備較高的選擇優(yōu)先級。如果當前物理機處于絕對過載狀態(tài),則該設備無法作為資源遷移的目標主機,且必要時需要從中調(diào)取部分資源分配給其他物理機。
由于云計算環(huán)境中的任務呈現(xiàn)多樣性,導致任務在處理時不僅有實時的在線處理任務,還有若干異步任務。所以云數(shù)據(jù)中心運行時,容器、虛擬機[16-17]以及物理機都會隨著任務的進行增加負載情況。其中,由于物理機任務完成時間較早,所以當物理機完成任務,而容器未完成任務時,會出現(xiàn)短暫的資源浪費。
在容器云環(huán)境中,虛擬機遷移是保障物理服務器負載均衡的關鍵。遷移過程中,通常分為觸發(fā)遷移時間、遷移目標服務器以及遷移位置3個階段。遷移觸發(fā)時間主要依據(jù)數(shù)據(jù)中心的資源部署策略來實現(xiàn)。遷移過程如下:
1)統(tǒng)計物理主機資源利用率,通過統(tǒng)計將物理主機中過載的利用率信息保存在相關列表中。
2)基于列表信息,對其展開降序排列,選取對應的容器遷移目標。
3)依據(jù)排列的順序從列表中選取對應物理主機,并將其作為遷移過程中的源物理主機,依據(jù)順序完成遷移后,保證源物理主機利用率不超載,若超載則遷移不成功,需要依據(jù)上述流程繼續(xù)尋找遷移目標。
4)統(tǒng)計物理主機中資源利用率潛在信息,并將其存儲在相應列表中。
5)選取一臺不在列表當中的物理主機作為容器遷移目標,將部署于源物理主機上的容器全部遷移至目標物理主機中,完成容器的遷移。
依據(jù)上述容器云虛擬資源的遷移流程可知,容器在云資源部署以及遷移過程中,容器云都需要面對物理主機的選取問題,物理主機是整個數(shù)據(jù)中心的最大能源消耗部件,所以,找出物理主機與容器、虛擬機之間的能耗計算關系,是完成容器云資源低能耗部署的關鍵。
貪心算法是一種簡單、快速的設計某些問題求最優(yōu)解的技術,它的特點是不從全局的最佳狀態(tài)出發(fā),而僅以局部最優(yōu)的形式來解決問題,從而節(jié)約了在尋求最佳方案的過程中所耗費的時間。在作出貪心的抉擇時,采用反復的方法,每次作出一個抉擇,問題的大小就會縮小,從而使每個步驟都能獲得最優(yōu)的結果。
在容器云中,在負載狀態(tài)檢測完畢后,要將部分過載主機中的虛擬機轉移出來。它不僅可以保證容器云平臺的高性能,還可以降低系統(tǒng)的能量消耗[18]。對所有的主機都采用過載檢測法,以判斷主機是否超載,如果超載,則采用虛擬機選擇策略,選擇虛擬機進行遷移,直至主機不過載為止。容器云資源的負載均衡調(diào)度原理如圖2所示。
圖2 容器云資源負載均衡調(diào)度原理
根據(jù)構建容器云資源能耗模型可以看出,容器云資源部署與運行的能耗與遷移時間以及CPU利用率有關,因此利用貪心算法選擇需要部署的容器云資源,并按照圖3表示流程,實現(xiàn)容器云資源的遷移與調(diào)度。
圖3 利用貪心算法的容器云資源調(diào)度流程圖
按照上述流程分別選擇被遷移的虛擬機和目的遷移節(jié)點,在過載物理機環(huán)境中選擇CPU資源的利用率最高的虛擬機作為待遷移虛擬機,選擇距離該物理機最近的處于絕對低載狀態(tài)的物理機作為目的遷移節(jié)點。將選擇的虛擬機保存到列表OverLoadList,并根據(jù)CPU利用率利用貪心算法進行降序排列,按照順序?qū)⒈贿w移物理機中的虛擬機遷移到目標物理機中,并保證目標物理機不過載,直到遷移源物理機不再過載[19-21]。
若目標物理機容納所有的待遷移虛擬機,則需要選擇其他絕對低載物理機作為新的目標物理機,按照上述方式進行目標遷移,直到OverLoadList列表中的過載虛擬機被處理完成。容器云資源遷移調(diào)度完成后,更新其位置信息,并在部署容器中運行相應的云任務[22]。
根據(jù)云計算平臺的初始化部署策略,可以獲得容器云資源的初始化部署方案,綜合考慮用戶的需要和資源利用的動態(tài),采用能耗均衡加權部署方法實現(xiàn)資源初始化部署[23]。
以測試基于貪心算法的容器云資源低能耗部署方法的應用性能為目的,分別從容器云資源的部署效果和能量消耗兩個方面進行性能測試,并通過與傳統(tǒng)云資源部署方法的對比,體現(xiàn)出貪心算法在云資源部署工作中的應用優(yōu)勢。
本文在NS2.0(Network Simulator網(wǎng)絡仿真器)仿真軟件、Windows XP操作系統(tǒng)、Intel(R)Celeron(R)2.6 GHz處理器下進行實驗測試。以 Docker swarm kit為核心,建立了一個容器云平臺。在此基礎上,采用服務器組成了節(jié)點集群。各服務器的可用度指數(shù)是相同的,都是0.95,所以容器集群中的每一個節(jié)點都是相同的。這表示對于相同的服務,在容器集群中的任何一個節(jié)點上,對于服務的總體可用性都有相同的影響。平臺環(huán)境詳情如表1所示。
表1 容器云平臺實驗環(huán)境
為降低測試時延及網(wǎng)絡穩(wěn)定性,采用Docker鏡像的本機二進制檔案安裝方法,以設定相關的環(huán)境[24]。所有的服務要求都被打包成一個云任務,一個虛擬機可以在同一時間執(zhí)行多個云任務。根據(jù)需要的物理資源,這些初始化的虛擬機依次分配到已打開的主機部件[25]。
實驗采用的樣本數(shù)據(jù)為AuverGrid資源分配數(shù)據(jù)集,該數(shù)據(jù)集記錄了一個容器集群15天的運營狀況,包括364 547項服務,每隔2分鐘對容器資源使用數(shù)據(jù)進行記錄與采集。實驗設置容器云平臺中虛擬機的數(shù)量為1 000個,不能虛擬機的類型與粒度的基本運行參數(shù)如表2所示,這樣可以覆蓋大部分任務的情況,不失一般性。
表2 容器云平臺中虛擬機類型參數(shù)設置表
將上述虛擬機資源存儲到容器云平臺中。在不考慮物理機負載均衡的前提下,將準備的容器虛擬機資源隨機分配到各個物理機中,記錄各個物理機的資源量,以此作為容器云資源的初始部署數(shù)據(jù)。
根據(jù)實驗目的,從云資源部署效果和能量損耗兩個方面設置性能量化測試指標。為了體現(xiàn)出基于貪心算法的容器云資源低能耗部署方法的性能優(yōu)勢,實驗中采用了文獻[1]方法、文獻[2]方法作為實驗的對比方法,在性能測試過程中,3個部署方法處理的云資源以及部署任務數(shù)量均相同。
3.4.1 容器云資源部署結果
圖4(a)和圖4(b)表示的是文獻[1]方法和基于貪心算法的容器云資源低能耗部署方法的容器云資源部署結果。
圖4 容器云資源部署結果
根據(jù)圖4(a)可知,文獻[1]方法在物理機1和物理機2下的容器云資源低能耗部署后的云資源量相差較大。根據(jù)圖4(b)可知,無論是物理機1還是物理機2,基于貪心算法的容器云資源低能耗部署方法進行的容器云資源低能耗部署后的云資源量均一致。
3.4.2 利用率和負載均衡度測試結果
通過理論分析部分的公式(2)我們可以得出文獻[2]方法和基于貪心算法的容器云資源低能耗部署方法的資源利用率的部署結果。統(tǒng)計相關數(shù)據(jù)得出部署效果的測試對比結果,如圖5所示。
圖5 兩種方法的容器云資源利用率對比結果
通過理論分析部分的公式(2)也可以得到負載均衡度的實驗結果。從圖6中可以直觀的看出基于貪心算法的容器云資源低能耗部署方法的負載均衡度始終高于文獻[2]方法的部署資源,且貪心算法的負載均衡度更接近1,由此證明貪心算法的資源部署方法的部署效果更佳。是因為本文采用負載平衡策略,在兩個結點間找到一對滿足交換條件的容器,從而減少結點的碎片率,并實現(xiàn)負載均衡。
圖6 兩種方法的容器云資源負載均衡對比結果
3.4.3 容器云資源能耗測試結果
為了進一步驗證貪心算法的有效性,在一天24小時內(nèi)文獻[1]方法、文獻[2]方法和本文方法的容器云資源能量損耗的測試數(shù)據(jù)如表3所示。
表3 文獻[1-2]方法和貪心算法能量損耗測試數(shù)據(jù)表
由于3種資源部署方法使用的物理機與云平臺型號與結構均相同,且物理機能耗PPhysics和云服務器能耗Pcloud屬于靜態(tài)能耗,因此數(shù)據(jù)相同且不會發(fā)生變化。我們這里主要計算的是動態(tài)能耗Ptransfer,根據(jù)公式(7)即可得出文獻[1]方法、文獻[2]方法和基于貪心算法的容器云資源低能耗部署方法的總體能耗值Ptotal。
從表3可以看出,統(tǒng)計了8次實驗結果,貪心算法法的總能耗值Ptotal最高值為25 873 kJ,最低值只有20 221 kJ,比文獻[1]和文獻[2]的方法節(jié)省一半以上的能耗,本文方法的容器云資源部署能耗更低。
針對容器云資源存在部署能耗高和云資源利用率低、負載不均衡的問題,提出基于貪心算法的容器云資源低能耗部署方法。綜合考慮了物理機的利用率和單位時間的消耗,在保證物理機的使用效率的基礎上,選取低功耗的物理機作為虛擬機、容器的目標遷移物理機,從而有效地減少了以容器為基礎的數(shù)據(jù)中心的總能量消耗,對于云平臺的管理運行以及云資源的有效利用均具有較好的參考價值。但是本文在研究的過程中,沒有考慮容器云資源低能耗部署時間,使云資源低能耗部署效率降低,為此,在接下來的研究中,需要對算法進行改進,提升容器云資源低能耗部署效率。