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