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