徐勝超 陳 剛 毛明揚
(廣州華商學院數據科學學院 廣州 511300)
隨著移動互聯網技術的迅速普及和發展,對網絡用戶和業務的需求急劇增長,使得云平臺上的數據集成服務更加復雜、更加多樣化,對云資源調度提出了更高的要求[1~2]。當前的容器云平臺部署方法在面臨開發、集成、部署、運維等情況時,在已經無法滿足集中化管理與自動化運維。為了充分發揮容器易分發、易部署的優勢,相關國內外專家針對容器云平臺的低能耗部署方面的內容展開了不同方向的研究。
文獻[3]將虛擬機放置在物理主機上,這樣可以最小化功耗,最大化資源利用率。因此該文獻在考慮優化能源消耗和資源利用的情況下,解決了CaaS 環境中容器和虛擬機的放置問題,并提出了一種基于鯨魚優化算法來進行求解。該算法在一個搜索空間中搜索虛擬機和虛擬機的最優數量,實驗結果表明,該方法在測試環境套件上優于常見的方法。但是該方法受服務器分配的影響,造成部署方案能耗較高。文獻[4]通過邊緣計算節點部署的位置選擇,采用窮舉方式選擇最佳網絡節點,最終實現需求響應邊緣云部署。文獻[5]通過馬爾科夫鏈模型描述單一容器的資源需求情況以及資源需求態勢,最終通過資源預留方法實現集群容器部署。文獻[6]采用Harmony 的搜索算法移動虛擬機,減少云平臺的能耗,通過對節點和虛擬機按優先級降序排序的方法實現定位,完成工作負載計算,以此降低能耗。文獻[4~6]方法實現了容器云或邊緣云低能耗部署,但是其部署效率有待進一步提升。文獻[7]引入霧計算理論基礎,提出了一種混合整數線性規劃公式,在考慮服務功能鏈概念、不同低功率廣域網技術和多個優化目標的基礎上,完成無線網絡需求,實現在霧計算環境中的資源配置優化,但是該方法在容器云資源部署過程中的資源綜合利用率較低。
粒子群算法是一種基于隨機求解的演化方法,通過相互傳遞各自信息,判斷是否得出最優解,即問題收斂。粒子群算法易于實現,精度高,收斂速度快,因此可以用于容器云平臺低能耗部署。為此,本文提出了基于粒子群算法的容器云平臺低能耗部署方法,并通過仿真測試驗證了該方法可以有效提升容器云平臺低能耗部署性能。
在建立容器云平臺低能耗部署模型的過程中,待部署的資源以服務的形式存在。隨機任務集合根據任務等待序列被部署到云服務資源節點執行相關操作。為了進一步達到容器云資源低能耗部署的目的,需要通過建立目標函數降低容器云平臺能耗,在約束條件下構建低能耗部署模型。下面的式(1)為目標函數,式(2)和式(3)為約束條件,式(4)為能耗模型。
2.1.1 建立目標函數
云資源調度過程中不僅需要降低網絡存儲開銷和計算開銷,還需要為內存優化、運行安全提供最大限度的保障。因此,可以利用指數函數構建容器云平臺低能耗部署模型,分析低能耗動態負載情況,達到優化負載均衡調度的目的,本文設計的具體目標函數可以表示為式(1)的形式:
上式中,Eit代表網絡節點i在時刻t的低能耗動態負載;αi代表網絡節點i的配置權值;pit代表網絡節點i在時刻t的傳輸幅值。
2.1.2 創建約束條件
以目標函數為基礎,創建約束條件,在滿足約束條件下構建低能耗部署模型。低能耗部署平衡約束(等式約束)和時間約束(不等式約束),能夠有效降低網絡節點失衡度,如式(2)、式(3)所示:
上式中,Q代表低能耗部署平衡約束;ki代表有效的負載電容;Gi代表網損;Tc代表用戶期望獲取的最長時間;Ti代表時間約束;Ta代表用戶提交的任務計算時間。忽略網損Gi,在云資源調度結構優化過程中,完成分布式網絡節點分配。
2.1.3 構建部署模型
結合以上分析,構建容器云平臺低能耗部署模型。低能部署耗模型是結合目標函數,利用約束條件分析綜合用戶提交的任務計算時間及用戶期望獲取最長時間的一種部署模型。通過低能耗模型可以有效權衡提交時間和期望時間之間的關系,以此獲取最短任務執行時間,有效解決容器云平臺低能耗部署任務執行時間最小化的問題。
在隨機任務執行過程中,需要獲取容器云平臺低能耗部署的最短時間。但是單一的時間優化模型會導致網絡負載增加,同時容器云整體服務效率也會大幅度下降,所以需要設定任務時間的具體取值范圍為tk[t,tbegin-tend],其中,tk代表容器云平臺低能耗部署時間;t代表部署時間總和;tbegin和tend分別代表任務起始時間和任務結束時間。
在容器云平臺低能耗部署過程中,還需要考慮超時忍耐函數,同時也代表任務服務的關鍵程度。當超時忍耐函數的取值越好,則說明節點利用率就越高,任務在同一時間段內可以被更多資源部署。當網絡服務壓力的取值越大,需要通過云網絡和忍耐函數均衡因子條件不同參數的取值,確保忍耐值最小。對于已經參與服務的云計算節點總數量、任務數量以及忍耐函數值而言,當任務等待隊列中有任務不僅滿足資源能力需求同時也滿足任務約束時間時,則直接執行該任務;反之,則需要引入松弛時間相關概念,使其滿足以上需求,最終完成任務請求。
通過上述分析可知,由于需要制定一個容器云平臺低能耗服務器分配方案[8],才可以得到對應的部署方案,所以在不考慮散熱的情況下,計算容器云數據中心的能耗,從計算結果中同時獲取最低能量消耗,獲取對應的容器云平臺低能耗部署模型可以表示為式(4)的形式:
上式中,minN代表容器云平臺低能耗部署模型;fmax和fmin分別代表最高和最低分工頻率;Fmax代表服務器最大占用頻率,n代表節點總數量。在執行隨機任務的過程中,由于數據傳輸會給數據中心帶來一定的負載,所以需要設定負載函數θ[9-10]。
以最低能量消耗和最短任務執行時間為目標,組建容器云平臺低能耗部署模型,同時設定對應的約束條件。根據通過負載函數和超時忍耐函數的優化求解可以獲取最佳部署方案。
粒子群算法[11~12]屬于全局優化算法的一種,粒子群的個體對應于容器云平臺低能耗部署問題的可能解,各個粒子存在位置、速度兩種變量,粒子位置坐標表示的目標函數值就是此粒子的適應度。粒子群算法里,各個粒子都存在一個可能的最優解,因此容器云低能耗部署過程中,將一個任務劃分為多個大小相同的子任務,并將其分配到對應的部署節點上。對任務編碼的方式主要使用間接編碼方式,其中編碼的長度主要根據子任務長度體現。利用圖1給出粒子編碼解碼規則。

圖1 粒子編碼解碼規則
粒子群算法的適應度函數會直接關系到算法的收斂速度以及全局最優解。在確保容器穩定性的前提下,需要兼顧多個優化目標,進而獲取更加滿意的優化結果。基于容器云平臺低能耗部署實際需求,利用粒子位置完成容器云平臺低能耗部署實數編碼,使編碼形式更加直觀、更便于解碼。假設表示粒子狀態,則推導出粒子群編碼格式為,其中,xmD代表粒子的位置,g(xm)代表粒子的適應度函數值,m代表粒子數量。
給定粒子數量m與迭代次數k后,對粒子群中各粒子位置與速度進行初始化處理,設置節點編碼與速度是1,兩者分別與容器云資源低能耗部署的任務起始時間和任務結束時間相對應,適應度函數值是+∞,其他指標的初始化值均是0。
考慮到容器云平臺低能耗部署過程中存在總負載均衡度、總任務完成時間等諸多限制信息,只有在粒子群優化算法中加入相應的約束條件,才能確保容器云平臺低能耗部署方案具有一定的有效性與實用性。因此,在考慮負載均衡的前提下[13],設定如式(5)所示的適應度函數:
上式中,L代表總負載均衡度;tmax代表總任務完成時間;Numvm-cup代表單一CPU的處理能力;λ代表限制信息。
在采用粒子群算法[14~15]求解容器云平臺低能耗部署模型的過程中,由于種群規模比較大,會導致算法出現早熟的現象。所以實行早熟判斷和處理是十分重要的環節,可以增加收斂速度的同時,避免早熟現象,該過程通過迭代方式實現。
假設迭代更新的時間間隔是Δt,慣性權重為ω,則采用式(6)和式(7)更新粒子位置與速度:
上式中,k代表迭代次數;代表更新后的粒子速度。根據式(5)計算出的解碼過程中適應度函數值,留存多個理想粒子,在每次迭代過程中,及時更新各個粒子的位置和速度信息[16],當粒子的適應度取值大于歷史適應度值,則需要展開替換操作。在整個群體中,可以通過種群中粒子適應度值的個體或者全局描述對應的位置信息[17~18],進而判定算法是否陷入早熟。
通過上述分析,在粒子群算法[19]的基礎上,充分考慮容器云平臺低能耗部署限制信息,在其中加入相應的約束條件并通過限制粒子移動區域,實現基于粒子群算法的容器云平臺低能耗部署,圖2 給出了粒子群算法求解容器云平臺低能耗部署模型的詳細操作流程。

圖2 容器云平臺低能耗部署模型求解流程圖
步驟1:參數初始化處理;
步驟2:對各個粒子解碼處理,主要由容器云平臺低能耗部署任務和計算節點之間的分配關系獲取對應的矩陣;
步驟3:計算各個粒子的適應度值;
步驟4:根據設定的適應度函數篩選最佳個體位置,依據式(5)優先篩選負載均衡度最小的粒子作為最優個體位置,假設有多個粒子,則進入二級篩選階段,將總任務完成時間加權最大的粒子設定為當前最佳粒子;
步驟5:通過適應度函數篩選全局最優粒子位置;
步驟6:判斷算法是否達到最大迭代次數,是則執行步驟9;反之,進入步驟7;
步驟7:更新慣性權重ω取值,確保算法的慣性權重在設定區間范圍內波動;
步驟8:依據式(6)和式(7)分段更新粒子的位置和速度;
步驟9:輸出最佳容器云平臺低能耗部署方案,停止計算。
為了驗證基于粒子群算法的容器云平臺低能耗部署方法,根據第二部分的計算和分析,得到如表1 所示的種群粒子數量與容器云平臺低能耗部署相關性設置。

表1 種群粒子數量與容器云平臺低能耗部署設置
根據表1 可知,粒子群算法運行時長隨粒子數量的增加而上升,只有當粒子規模是路網節點的1倍~1.5倍時,才能取得較為理想的部署效果。綜合上述分析,設定粒子群算法參數分別為:種群粒子數量是1350 個,最大允許迭代次數是220 次,慣性權重ω與迭代次數呈線性負相關,取值范圍為[0,1]。
在阿里云Serverless Kubernetes 平臺中進行容器云平臺低能耗部署測試。具體的測試環境參數設置為:隨機選擇48h 內的容器云平臺低能耗部署任務負載數據作為測試數據,設定容器的緩沖能力取值范圍,最大可至10000,最低至2000,同時最多可以分配200 個容器;最大響應時間為1s。測試流程如圖3所示。

圖3 測試流程圖
參考文獻中的文獻[3~7],這5 種方法都有一定的共通性,選擇其中哪種方法進行對比都能確保測試的準確性。由于時間和研究條件的有限性,所以選擇了兩種方法進行對比。對比本文方法和文獻[3]方法、文獻[4]方法的容器云平臺低能耗部署性能、資源綜合利用率和集群資源失衡度。
3.3.1 容器云平臺低能耗部署性能分析
測試通過最大任務執行總時間、任務最大響應時間、容器最大平均隊列長度和容器在線運行時間總長四個指標對比不同部署方案的性能展開分析和研究。利用圖4 給出本文方法與文獻[3]方法和文獻[4]方法三種不同方法各項指標的測試結果。
分析圖4 中的測試數據可知,與另外兩種方法相比,本文方法的任務平均最大等待時間、任務最大響應時間和容器在線運行時間明顯更低一些,容器最大平均隊列長度更長。這是由于本文方法利用粒子群算法根據篩選機制獲取歷史最好位置,將粒子群的最優位置與容器云平臺低能耗部署方案進行對應,以此提升容器云平臺低能耗部署性能效果。由此可見,本文方法在容器云平臺低能耗部署過程中,不僅考慮到了服務質量保證,同時還考慮了資源利用率,有效確保了容器運行過程中的服務質量。

圖4 容器云平臺低能耗部署性能測試結果分析
3.3.2 資源綜合利用率分析
各個方法的資源綜合利用率對比結果如表2所示。該測試結果通過負載均衡度指標進行衡量,容器的負載均衡度越高,代表對應方法下的服務器吞吐性能更好,其資源綜合利用率更高。
由表2 中的數據可知,本文方法的負載均衡度相較于對比方法更高,最高負載均衡度達到95%,相較于文獻[3]方法的93%和90%更高,其主要原因是本文方法在考慮資源低能耗部署的網絡重要程度以及用戶期望值的情況下,建立了容器云平臺低能耗部署模型,可以更好利用帶寬以及存儲需求,從而提升了資源綜合利用率。

表2 不同方法的資源綜合利用率測試結果對比
3.3.3 集群資源失衡度分析
選取集群資源失衡度作為測試指標,利用圖5給出詳細的測試結果。

圖5 不同方法的集群資源失衡度測試結果對比分析
由圖5 中的測試數據可知,各個方法的集群資源失衡度會隨著虛擬機內存的增加而增加。其主要原因是虛擬機內存的增加,造成容器內需調度和部署的資源增多,導致容器的負載增加,更易導致集群資源失衡。然而在三種方法中,本文方法的集群資源失衡度明顯更低一些,最高集群資源失衡度為0.19,其主要原因是本文方法在考慮總負載均衡度的基礎上,構建了適應度函數,通過多次迭代找到了粒子最優位置,實現了高效率的容器云平臺低能耗部署,降低了容器負載的影響。
本文利用了粒子群算法,構建并求解容器云平臺低能耗部署模型,有效降低集群資源失衡度,提升了綜合資源利用率,同時還能夠獲取更加滿意的容器云平臺低能耗部署方案。由于容器云資源低能耗部署問題是一個十分復雜的問題,本文方法仍然存在一定不足,后續進一步研究如何將不同因素的影響降至最低,確保本文方法的性能達到最佳狀態。