邵海軍
摘 要: 傳統基于Hypervisor 模型的云計算資源調度方法存在長時間得不到調度,調度性能低的問題。針對該問題,設計基于容器技術的云計算資源合理調度方法,設計了調度系統的架構以及調度流程。詳細說明了虛擬機遷移時間判斷流程以及被遷移虛擬機選擇流程。采用Migrate方法完成虛擬機的遷移,資源統計過程通過調用Libvirt的接口實現通信,并通過近似的方式運算虛擬機CPU使用率,降低了云計算資源調度時的數據中心能耗。經過測試表明,所提方法穩定性高,總體性能優,達到了預期目標。
關鍵詞: 容器技術; 云計算; 資源調度; CPU使用率
中圖分類號: TN911?34; TP302 文獻標識碼: A 文章編號: 1004?373X(2017)22?0033?03
Abstract: As the traditional cloud computing resource scheduling method based on the Hypervisor model has long scheduling delay and low scheduling performance, a cloud computing resource scheduling method based on the container technology is proposed, and the architecture and dispatch process of the scheduling system are designed. The judging process of virtual machine migration time and the selection process of the migrated virtual machine are elaborated. The Migrate method is adopted to accomplish the virtual machine migration. The Libvirt interface is invoked to realize communication during the resource statistical process. The CPU utilization rate of the virtual machine is obtained by means of approximate computations, which reduces energy consumption of the data center during cloud computing resource scheduling. The test results show that the proposed method has high stability and excellent total performance, and has achieved the anticipated goal.
Keywords: container technology; cloud computing; resource scheduling; CPU utilization rate
0 引 言
在信息化迅速發展的今天,云計算的發展給人們帶來前所未有的便利。作為云計算中主要支撐技術之一的虛擬化技術也隨之得到了廣泛的應用[1]。 傳統基于Hypervisor 模型的云計算資源調度方法,通過控制節點完成虛擬機遷移的判斷,基于節點的資源使用情況分析從節點是否需要實施虛擬機遷移,導致末位節點長時間得不到調度,調度性能低。容器是一種基于操作系統的虛擬化技術,其可解決云計算資源調度過程中的程序獨立性和資源共享性問題。提出了基于容器技術的云計算資源合理調度方法,提升云計算機資源調度的總體性能。
1 基于容器技術的云計算資源合理調度系統設計
1.1 調度系統架構設計
如圖1所示,設計的基于容器技術的云計算資源調度系統構架分為軟件分層和模塊化兩方面內容,實現基于應用容器的模擬機調度框架[2]。由圖1可以看出,云計算資源數據中心節點包括控制節點以及從節點,控制節點在調度系統中起到控制作用。各節點間工作流程為:
(1) 從節點在Host上控制Libvirt啟動Libvirtd與主節點之間進行數據請求和命令,在基于容器的虛擬化技術軟件OpenVZ上控制資源域Domain。
(2) 主節點通過主機Host來控制Libvirt[3],在OpenVZ上控制Domain,通過Libvirt來實現基于應用容器的云資源調度系統。由此可見,通過Libvirt來完成各節點間的請求和命令,可以使系統的通信設計變得更加高效。
1.2 調度系統流程設計
設計的調度系統架構應具備較高的通用性能,才能確保系統實現負載的平衡、能耗的最低化以及高質量的用戶服務。因此本文從增強系統可配置性以及最小化問題復雜度兩方面著手[4],完成一個調度系統框架設計,幫助用戶更加精確地進行配置系統調度。此設計云計算資源調度系統中的虛擬機遷移流程主要包括四步:
(1) 分析遷移規范;
(2) 采集合理的被遷移虛擬機;
(3) 刪除目標主機;
(4) 合理規劃目標主機的權重分布狀態。
2 云計算資源合理調度系統實現
2.1 虛擬機遷移時間判斷
采用循環首次適應算法完成虛擬機遷移時間的判斷。該算法基于首次適應算法,將操作系統中內存分區的分配算法進行改良而實現[5]。當檢索到表尾時,則又循環到表頭重新開始。算法流程為:endprint
(1) Mig Jud Factory和Mig Jud Register 用于該模塊實現反射功能,將Mig Jud Register和Mig Jud Factory實例化;
(2) 將Mig Jud Base和Concrete Mig Jud注冊到Mig Jud Factory中;
(3) System調取get Host List 獲取主機列表;
(4) 調用get Value采集具體判斷模塊并傳入主機判斷;
(5) 遷移條件判斷模塊核心方法是 Is System Need Migrate 用于返回是否需要觸發遷移;
(6) 由于在低負載時,只需遷移物理節點上所有虛擬機,若處于低負載,則需要設置一個flag,以供后面虛擬機在遷移時進行選擇。
2.2 被遷移虛擬機選擇
本文采用最低潛在提升方案選擇被遷移虛擬機,分析虛擬機CPU占用率情況,通過最低潛在提升且內存使用率最低虛擬機滿足CPU使用率和遷移代價兩方面需求。被遷移虛擬機選擇流程的詳細過程為:
(1) 得到節點上所有虛擬機列表。
(2) 對遷移過程反饋的flag進行檢測,當結果為true時,虛擬機運行結束,返回列表頂端;反之進入下一步。
(3) 根據CPU使用率對虛擬機列表進行降序排列[6],保證最低潛在增長虛擬機排在首位。
(4) 對mem_flag進行檢測,若是false,則說明在物理節點上僅有CPU使用率處于高負載,并不包括內存使用率。這時在模擬機列表里應選取CPU使用率最高且內存使用率較低的模擬機返回結束[7],反之進入下一步。
(5) 在這一過程中flag為false,mem_flag為true,說明物理節點CPU使用率和內存使用率均處于高負載。
2.3 遷移執行和資源統計
Migrate是遷移執行的一個重要方法,該方法通過Domain和Host兩個參數對被遷移虛擬機以及目標主機實施標定,通過底層調用Libvirt的vir Migrate To Uri 實現遷移。對虛擬機或Host進行任何操作時,都需要先與Hypervisor建立連接[8],才能進行管理操作。Hypervisor函數是以vir Connect開頭的系列函數,由于Libvirt中不包含虛擬CPU使用率接口,所以本文對兩次時間間隔中vir Domain Get Info 所得的 CPU 運行時間以及get time of day 所得的實際時間進行比例運算,再將比例運算結果除以 CPU 個數得到的近似值作為CPU的使用率。該過程的代碼為:
3 實驗分析
3.1 穩定性測試
實驗通過運行腳本Monitor.sh,獲得本文設計的CPU與內存使用率。實驗時間間隔為1 min,經過250 min后,本文系統CPU和內存情況如圖2所示。從圖中可知,本文調度系統CPU使用率變化約為200%,系統內存使用率始終保持0.1,說明系統運行穩定。
3.2 性能測試
為了檢測系統數據中心在本文方法調度前和調度后的能耗波動,實驗在如下場景中進行檢測:在節點1上安排3個初始狀態為空閑的虛擬機,并在15 min以后同時進入死循環程序;在節點2上安排3個初始狀態為空閑的虛擬機,并在20 min以后同時進入死循環程序;在節點3上安排3個初始狀態為空閑的虛擬機,并在25 min以后同時進入死循環程序;3個節點獲得CPU使用率的時間間隔為6 min,運算出3個節點CPU平均使用率。同上述場景一樣,將本文調度系統部署在控制節點中進行同樣的測試。實驗假設睡眠狀態下的CPU使用率是1%。系統運行前后對比情況如圖3所示。
從圖3中可以看出,運行本文調度系統24 min以內,CPU綜合使用率明顯更優;基于CPU資源使用率和服務器能耗間關系得系統運行后數據中心總體能耗顯著低于系統運行前能耗。
4 結 論
本文設計了基于容器技術的云計算資源合理調度方法。經過測試表明,所提方法穩定性高,總體性能優,達到了預期目標。
參考文獻
[1] 張品,張海明,黎建輝,等.一種基于Linux容器技術的大規模遙感數據云服務平臺[J].科研信息化技術與應用,2015,6(2):47?55.
[2] 陸鋼,楊新章,何震葦,等.電信運營商對容器技術的探索和思考[J].電信科學,2016,32(8):159?163.
[3] 王焱.基于K?means和蝙蝠算法的云計算虛擬機智能調度[J].現代電子技術,2016,39(21):21?23.
[4] 嵇可可.基于動態趨勢預測蟻群算法的云計算資源調度優化研究[J].科技通報,2016,32(1):187?190.
[5] 寧彬,谷瓊,吳釗,等.基于膜計算的蝙蝠算法在云計算資源調度的研究[J].計算機應用研究,2015(3):830?833.
[6] 丁璽潤,陳梅,李暉.面向容器的云平臺數據重分布策略研究[J].微型機與應用,2016,35(5):26?29.
[7] 趙保華.基于混合算法的云計算任務調度方法研究[J].現代電子技術,2016,39(12):70?72.
[8] 王曉冉,王偉,陳鐵南,等.基于容器技術的性能測試服務資源管理[J].計算機應用與軟件,2016,33(7):5?9.
[9] 趙宏偉.基于改進粒子群算法的云計算資源調度模型的研究[J].沈陽大學學報(自然科學版),2015,27(6):507?511.endprint