徐勝超,楊 波
(廣州華商學院 數據科學學院,廣東 廣州 511300)
如何讓云計算變得更加節能高效,是當今政府和企業都在關注的重點問題[1-2]。容器技術[3]是近年來云計算行業發展中重要的一部分,容器虛擬化技術及其平臺更是憑借自身部署快、性能高、啟動迅速等優勢,被廣泛應用于各大云服務項目中。但是容器云資源長期運行時,會增加不必要的能耗消耗,為提升容器的使用性能,降低容器云資源能耗,提出高效的容器云資源低功耗部署方法[4],就變得尤為迫切。
文獻[5]提出基于多維資源空閑率權重的容器云多維資源利用率均衡調度方法,該方法綜合考慮物理節點CPU、內存、磁盤、網絡帶寬空閑率和已部署的容器應用個數等因素,利用模糊層次分析法自動建模求解容器應用多維資源權重參數。文獻[6]提出基于遺傳算法的容器云資源配置優化方法,該方法將容器云平臺數據中心整體能耗最低作為目標函數,設置物理主機與虛擬機對應、虛擬機與容器對應等約束條件,利用遺傳算法通過染色體表達、初始化、交叉操作、變異操作以及設置適應度函數5個步驟求解目標函數,獲取最優容器云環境資源配置結果。文獻[7]提出容器云環境虛擬資源配置策略的優化方法,首先,提出容器云虛擬資源的配置和遷移方案,發現物理機選擇策略對數據中心能耗有重要影響;其次,通過研究主機利用率與容器利用率,主機利用率與虛擬機利用率,主機利用率與數據中心能耗之間的數學關系,建立容器云數據中心能耗的數學模型,定義出優化目標函數;最后,通過對物理機的能耗函數使用線性插值進行模擬,依據鄰近事物相類似的特性,提出改進的最佳能耗優先物理機選擇算法。上述三種方法在提高容器云資源利用效率方面都有很好的改善,但是應用到云資源部署的過程中還是存在能耗較高的問題,影響了容器資源部署效果。
人工魚群算法是通過模仿魚類行為方式,從而提出來的一種基于動物自治體的優化方法,它能夠很好地解決非線性函數優化等問題。人工魚群算法的收斂速度較快,可以用來解決有實時性要求的問題,針對一些精度要求不高的情況,可以用來快速得到一個可行解。由于容器在云資源低能耗部署過程中,需要通過用戶需求調整容器低能耗部署方案,是動態優化問題,對于模型的求解效率要求較高。因此,該文通過人工魚群算法快速確定云資源能耗極值變化時間,尋找出滿意的解域,制定最佳的云資源低能耗部署方案。
容器[8-9]是提供程序運行的獨立空間,Docker容器平臺負責容器的生命周期管理以及相關資源信息的管理。Docker容器技術[10]的出現,為容器平臺的誕生打下了堅實的基礎。
容器云平臺開展資源低功耗部署時,平臺基本單位為容器,封裝軟件為平臺運行環境。容器云平臺主要側重于容器的編排以及資源的部署、共享,具體的資源組織結構如圖1所示。

圖1 容器云平臺資源組織結構
容器云平臺[11-12]包括應用、開發、資源共享、設備、集群服務等層級。資源配置模塊與項目開發模塊位于集群服務層中,該文將研究的云資源低能耗部署方法應用于該資源配置模塊中,實現云資源的低能耗部署配置。
設在有m個物理主機和n個容器的云平臺中,云資源部署的能量消耗主要來自固定和遷移兩部分,經實驗發現,云資源能耗與物理主機的資源利用率有較大關聯,因此t時刻物理主機的能耗見公式(1):
Ehost(t)=E(Ucpu(t))+E(Umem(t))+E(Udisk(t))+E(Ubw(t))
(1)
其中,E(Ucpu(t))表示物理主機CPU的能耗,E(Umem(t))表示物理主機的內存能耗,E(Udisk(t))表示物理主機的磁盤能耗,E(Ubw(t))表示物理主機的網絡帶寬能耗。這樣第i個物理主機在[ta,tb]時間段的總體能量消耗Ei可以按照公式(2)來計算:

(2)
考慮到容器云資源調度過程中的能耗除了硬件資源利用率實時變化產生的能耗外,還包括容器遷移能耗。基于系統各部位的資源利用率以及能耗公式得出容器遷移開銷,其計算見公式(3):

(3)
其中,j代表容器,vj(t)代表t時刻的第j個容器處理器利用率,t1代表容器開始遷移的時間,tkj代表容器完成全部遷移所需的時間,Vj代表容器遷移開銷。
由于容器遷移開銷是影響容器云資源調度能耗的重要影響因素,因此容器云資源能耗分析過程中重點計算容器遷移開銷。整個容器云平臺的能量消耗見公式(4):
(4)
由于云計算環境中的任務呈現多樣性,導致任務在處理時不僅有實時的在線處理任務,還有若干異步任務。所以云數據中心運行時,容器、虛擬機[13-14]以及物理機都會隨著任務的進行增加負載情況。其中,由于物理機任務完成時間較早,所以當物理機完成任務,而容器未完成任務時,會出現短暫的資源浪費。
在容器云環境中,虛擬機遷移是保障物理服務器負載均衡的關鍵。遷移過程中,通常分為觸發遷移時間、遷移目標服務器以及遷移位置3個階段。遷移觸發時間主要依據數據中心的資源部署策略來實現。遷移過程如下:
(1)統計物理主機資源利用率,通過統計將物理主機[15]中過載的利用率信息保存在相關列表中。
(2)基于列表信息,對其展開降序排列,選取對應的容器遷移目標。
(3)依據排列的順序從列表中選取對應物理主機,并將其作為遷移過程中的源物理主機,依據順序完成遷移后,保證源物理主機利用率不超載,若超載則遷移不成功,需要依據上述流程繼續尋找遷移目標。
(4)統計物理主機中資源利用率潛在信息,并將其存儲在相應列表中。
(5)選取一臺不在列表當中的物理主機作為容器遷移目標,將部署于源物理主機上的容器全部遷移至目標物理主機中,完成容器的遷移。
依據上述容器云虛擬資源的遷移流程可知,容器在云資源部署以及遷移過程中,容器云都需要面對物理主機的選取問題,物理主機是整個數據中心[16]的最大能源消耗部件,所以,找出物理主機與容器、虛擬機之間的能耗計算關系,是完成容器云資源低能耗部署的關鍵。
容器運行時,可以通過Hypervisor采集容器的虛擬資源運行狀態參數,但是由于采樣參數過多,會對物理機的運算帶來額外能耗負擔,所以該文在建立數據中心能耗模型時,通過灰色關聯分析方法[17],完成容器運行狀態參數的提取。設定容器虛擬能耗為P,容器運行參數比較序列設定為(p1,p2,…,pn),通過關聯系數計算方法,完成參數比較序列的采樣,過程如下式所示:
(5)
式中,容器比較序列與P之間的灰色關聯值標記β(P,pi)形式,容器序列的兩級最小值分別用P(l)、pi(l)表述,常數標記i、n形式。設定βi≥0.6為參數選取閾值,完成容器運行狀態的選取[18-19]。
設定人工魚群個體狀態值為Qi,食物濃度標記Pi,魚群視野范圍標記σ,最大移動步長標記u,通過人工魚群的行為分析,總結魚群覓食行為,獲取容器云資源能耗部署模型全局最佳值,完成最佳部署方案的制定。流程如下:
步驟1:初始化人工魚群參數,建立人工魚群,并通過容器云資源部署模型對魚群實施編碼處理,預測任務執行時間。
步驟2:開展魚群個體覓食、聚群追尾等行為,估計當前狀態下,任務搜索所需時間。
步驟3:基于評價函數完成魚群行為評價,剔除個別個體,更新魚群行為。過程中,若迭代次數大于設定的閾值,則需要選取相應種群個體完成跳躍行為。
步驟4:若魚群多次跳躍后公告板差值不變,魚群結束搜索,將搜索結果中的最佳全局值,算法結束。
魚群編碼[20-21]就是將容器云資源低能耗部署問題的解空間與算法搜索空間互相映射的過程。根據容器云虛擬資源的遷移過程,使用人工魚群算法對容器云資源的低能耗部署模型進行求解。設定容器數量為x,物理主機數量為y,二進制的編碼搜索空間設定2x×y,多值編碼搜索空間為yx,從而完成魚群編碼b=(c1,c2,…,cx)。
建立評價函數:
人工魚群搜索過程中,需要建立相應的評價函數確定魚群個體的優劣,容器云資源能耗部署模型具備相關約束條件,所以若魚群尋找的最佳值不能滿足約束條件,需要建立相關的目標函數,輔助魚群完成全局最佳值的搜索,建立的容器云資源低能耗部署模型的目標函數如下式所示:
f(x)=
(6)
式中,建立的容器云資源低能耗部署模型目標函數標記f(x)形式,懲罰系數標記δ形式,目標向量用η表述,容器云資源低能耗部署模型相關參數標記D、E、F、G形式。
基于上述建立的容器云資源低能耗部署模型目標函數,結合容器資源部署時的負載均衡問題,建立評價函數,過程如下式所示:
g(x)=1/f(x)
(7)
式中,建立的魚群個體評價函數用g(x)表述。
人工魚群中的個體數量越多,收斂速度越快,搜索精度越高。依據弱肉強食原則,在人工魚群算法運行時,剔除搜索性能較差的個體,這樣不僅能夠滿足算法初期對收斂速度的要求,還能夠降低算法的復雜程度。搜索性能較差的個體離部署模型的最優解較遠,對魚群的影響較為負面,剔除該人工魚有利于算法的收斂。
跳躍行為有利于提升人工魚群算法的全局搜索能力。魚群出現跳躍行為,說明云資源集群中節點差異較小,魚群容易進入局部最優。跳躍行為能夠強行改變魚群的參數,使魚群跳出局部區域,保障魚群的全局搜索能力。
通過上述人工魚群算法[22-23],調整容器云資源低能耗部署策略,建立容器云資源低能耗最佳部署方案,就實現了容器云資源的低能耗部署。
為了驗證上述容器云資源低能耗部署方法的整體有效性,需要對此方法展開測試。實驗環境配置如表1所示。

表1 實驗環境配置
3.2.1 參數設置
設置實驗初始條件如表2所示。

表2 實驗初始參數設置
3.2.2 比較對象
實驗選取云資源部署平均最大等待時間、最大響應時間、容器最大平均任務隊列長度以及容器云資源能量損耗4個指標對容器資源部署方法進行測試。分別采用基于人工魚群算法的容器云資源低能耗部署方法(方法1)、文獻[5]方法(方法2)、文獻[6]方法(方法3)、文獻[7]方法(方法4)檢測4種方法的資源部署效果。
(1)云資源部署平均最大等待時間測試。
云資源部署平均最大等待時間是容器云資源低能耗部署時的最長平均延遲時間,數值越高部署效果越差。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時,測試上述4種方法的平均最大等待時間,測試結果如圖2所示。

圖2 不同方法的平均最大等待時間測試結果
分析圖2實驗數據可知,方法2、3、4測試出的平均最大等待時間在第10次時均超過40 ms,最高為60 ms,而方法1平均最大等待時間僅33 ms;隨著檢測次數的增加,4種方法測試出的平均最大等待時間都呈現出不同程度的上升趨勢。但同次數測試結果對比,方法1測試出的容器云資源部署平均最大等待時間是4種方法中最低的,檢測次數為50時平均最大等待時間不超過70 ms,由此可見應用方法1可縮短平均最大等待時間。這主要是因為方法1在容器云資源低能耗部署前對容器云資源配置開展了詳細的分析,并且通過人工魚群算法,調整容器云資源低能耗部署策略,建立容器云資源低能耗最佳部署方案,所以該方法在云資源低能耗部署時的平均最大等待時間短。
(2)最大響應時間測試。
最大響應時間是容器云資源部署過程中的最長延遲時間。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時,測試上述4種方法的最大響應時間,測試結果如圖3所示。

圖3 不同方法的最大響應時間測試結果
測試過程中,部署最大響應時間越長,說明部署過程的部署效果越差,反之則越好。分析圖3可知,方法1、2、3、4在檢測次數為10次時,最大響應時間相差不大,均低于30 ms,方法1最大響應時間最短;隨著檢測次數的增加,4種方法測試出的最大響應時間都出現了不同程度的上升,方法3上升效果最明顯。方法1的最大響應時間均未超過45 ms,其他方法最大響應時間最長超過100 ms;對比同次數測試結果,方法1測試出的容器云資源低能耗部署響應時間是4種方法中最低的,說明方法1在開展容器資源低能耗部署時的部署效果最優。是因為該文通過制定的模型約束條件建立容器云資源的低能耗部署模型,再使用人工魚群算法對模型求解,搜索出部署模型的全局最佳值,制定最佳部署方案,從而提升了部署效率。
(3)容器最大平均任務隊列長度測試。
容器最大平均任務隊列長度能直觀地體現容器資源部署時的容器負載情況。采用方法1、方法2、方法3以及方法4開展容器資源低能耗部署時,測試上述4種方法的容器最大平均任務隊列長度,查看4種方法的容器負載情況。測試結果如圖4所示。
最大平均隊列長度是容器運行時間內,容器部署任務隊列的平均長度最大值,實驗過程中,任務隊列長度越長,說明部署方法的排隊時間越長,容器負載就越大,反之則越小。分析圖4可知,方法1在初始部署任務時,與方法2、3、4對比隊列長度最短。隨部署時間增大,4種方法的任務隊列長度均有所增長;但比較4種方法,方法1在相同的部署時間內測試出的任務隊列長度是4種方法中最短的,說明方法1在云資源部署時的容器負載小。是因為該文基于建立的容器云資源低能耗部署模型的目標函數,結合容器資源部署時的負載均衡問題,建立評價函數,并利用全局搜索能力較強的人工魚群算法對模型求解,搜索出部署模型的全局最佳值,從而降低了云資源部署時的容器負載。
(4)容器云資源平均能量損耗測試。
采用方法1、方法2、方法3以及方法4,對24小時內的容器云資源平均能量損耗進行測試,測試結果如表3所示。

表3 不同部署方法的容器云資源平均能量損耗測試結果
根據表3中的數據可知,經過多次實驗,方法1的容器云資源平均能量損耗在25 672 kJ以內;方法2、3、4的容器云資源平均能量損耗均高于30 000 kJ,高于方法1,方法1的容器云資源平均能量損耗最低,說明利用該文提出的基于人工魚群算法的容器云資源低能耗部署方法進行容器云資源低能耗部署的效果最好。
綜上所述,方法1在開展容器資源部署方法測試過程中,測試出的部署效果高于其他方法,證明方法1在資源部署時,具備有效性。
隨著國家節能減排的要求增多,使容器云資源低能耗部署方法變得尤為重要。針對傳統資源部署方法中存在的問題,提出基于人工魚群算法的容器云資源低能耗部署方法。該方法通過容器云資源配置分析結果,建立云資源的低能耗部署模型;然后使用人工魚群算法獲取模型最佳值,建立最佳部署策略,完成容器云資源的低能耗部署。由于該方法在選取容器運行參數時存在誤差,今后會針對該項缺陷,繼續對該部署方法實施優化處理。