馬 倩 王 菁 王 崗
(北方工業(yè)大學(xué)大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 100144)
?
面向校園云平臺的虛擬機(jī)調(diào)度機(jī)制
馬倩王菁王崗
(北方工業(yè)大學(xué)大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室北京 100144)
隨著教學(xué)信息化的不斷深化,校園云平臺越來越普及,但是實(shí)際應(yīng)用中資源利用率仍然較低,核心問題在于當(dāng)前的虛擬機(jī)調(diào)度機(jī)制未考慮校園應(yīng)用的特征,從而導(dǎo)致負(fù)載不均和資源浪費(fèi)。為了解決這一問題,提出面向校園云平臺的虛擬機(jī)調(diào)度機(jī)制,定義課程需求模型、物理機(jī)負(fù)載模型,并在此基礎(chǔ)上提出虛擬機(jī)部署方法。該機(jī)制可適應(yīng)教學(xué)應(yīng)用周期性、可預(yù)測性、批量性等特點(diǎn),并實(shí)現(xiàn)節(jié)能及負(fù)載均衡的目標(biāo)。實(shí)際平臺驗(yàn)證表明,該機(jī)制可有效降低能耗并實(shí)現(xiàn)負(fù)載均衡。
校園云調(diào)度機(jī)制虛擬機(jī)放置降低能耗負(fù)載均衡
隨著教育改革不斷深化,信息化技術(shù)迅速發(fā)展,高校的信息化建設(shè)已成為國內(nèi)外高?,F(xiàn)代化建設(shè)的重要內(nèi)容。而當(dāng)前高校信息化現(xiàn)狀是數(shù)據(jù)中心大多數(shù)是以服務(wù)器和SAN存儲連接方式為基礎(chǔ),一個應(yīng)用系統(tǒng)部署在一個服務(wù)器上,比如應(yīng)用服務(wù)器、數(shù)據(jù)庫服務(wù)器等。這樣出現(xiàn)了以下情況:第一,高校二級單位信息化建設(shè)規(guī)模不斷擴(kuò)大,計(jì)算機(jī)應(yīng)用服務(wù)也隨之增加,具體應(yīng)用依賴獨(dú)立的實(shí)驗(yàn)室設(shè)施,投入了大量資金,形成一個個實(shí)驗(yàn)室設(shè)備孤島;第二,實(shí)驗(yàn)室項(xiàng)目的擴(kuò)大以及數(shù)字化教學(xué)的需求導(dǎo)致投入大量資金購買服務(wù)器等設(shè)備,但這些設(shè)備利用率較低,造成了嚴(yán)重的資源浪費(fèi)。
將云計(jì)算技術(shù)應(yīng)用在校園,即校園云的興起旨在利用云計(jì)算的資源池化、按需分配等技術(shù)來求解上述問題。例如文獻(xiàn)[1]為滿足大學(xué)校園日益增長的計(jì)算需求和用戶需求,設(shè)計(jì)了一套基于OpenStack的開發(fā)云平臺,達(dá)到了彈性計(jì)算的要求;文獻(xiàn)[2]提出了校園云平臺成本效用函數(shù),建立了馬爾科夫鏈模型來分析負(fù)載均衡策略和貪心策略。各高校也相繼建起了校園云平臺,如東南大學(xué)[3]、清華大學(xué)[4]等。校園云平臺主要是利用虛擬化技術(shù)整合、虛擬物理資源,實(shí)現(xiàn)對計(jì)算資源的動態(tài)調(diào)配和按需使用。校園云平臺包含教學(xué)、科研兩類應(yīng)用??蒲袘?yīng)用呈現(xiàn)不可預(yù)知性、非周期性等特點(diǎn),與傳統(tǒng)應(yīng)用類似;而教學(xué)應(yīng)用具有周期性、可預(yù)測性、批量性等特點(diǎn),例如Linux上機(jī)實(shí)驗(yàn)課需要為每個學(xué)生分配一臺虛擬機(jī),并且在第1~10周,每周二的5、6節(jié)課上課時間內(nèi)使用。但是實(shí)踐表明,實(shí)際應(yīng)用中資源利用率仍然較低。分析原因可知,當(dāng)前虛擬機(jī)調(diào)度機(jī)制為傳統(tǒng)調(diào)度方法,主要分為基于實(shí)時的調(diào)度與基于負(fù)載預(yù)測的調(diào)度兩類。若采用基于實(shí)時的調(diào)度方法,當(dāng)上課期間出現(xiàn)過載情況時才會進(jìn)行調(diào)度遷移,而遷移需要消耗較大的帶寬資源并且時間較長,勢必會影響上課質(zhì)量;若采用基于負(fù)載預(yù)測的調(diào)度方法,對于新申請的課程虛擬機(jī)資源,沒有歷史運(yùn)行數(shù)據(jù),無法進(jìn)行正確預(yù)測。所以核心問題在于當(dāng)前的虛擬機(jī)調(diào)度機(jī)制未考慮校園教學(xué)應(yīng)用的特征,不能量體裁衣,從而導(dǎo)致負(fù)載不均和資源浪費(fèi)。本文重點(diǎn)分析這種比較特殊的教學(xué)型應(yīng)用。
由于教學(xué)型應(yīng)用的特性,面向教學(xué)需求的計(jì)算資源即虛擬機(jī)的調(diào)配是個關(guān)鍵問題。這一問題又可進(jìn)一步分解為以下兩個子問題:第一,虛擬機(jī)創(chuàng)建時的部署問題,即決定新創(chuàng)建的虛擬機(jī)部署在哪臺物理機(jī)上;第二,虛擬機(jī)使用時的動態(tài)調(diào)度問題,即根據(jù)物理機(jī)實(shí)際資源使用情況進(jìn)行虛擬機(jī)的動態(tài)遷移。本文重點(diǎn)研究面向校園云平臺的虛擬機(jī)創(chuàng)建時的部署問題,提出面向校園云平臺的虛擬機(jī)調(diào)度機(jī)制,以期實(shí)現(xiàn)節(jié)能及負(fù)載均衡目的。
虛擬機(jī)優(yōu)化調(diào)度是虛擬機(jī)管理的核心問題,針對這一問題,學(xué)術(shù)界和工業(yè)界都提出了相關(guān)解決方案,下面將從面向節(jié)能、面向負(fù)載均衡、面向負(fù)載均衡以及節(jié)能三方面討論進(jìn)行討論。
面向節(jié)能方面,Mylavarapu[5]等人將虛擬機(jī)的容量規(guī)劃問題建模為隨機(jī)優(yōu)化問題,采用遺傳算法與蒙特卡羅模擬相結(jié)合的方式加以解決。他們首先根據(jù)平均工作負(fù)載來分配虛擬機(jī)資源,部署虛擬機(jī)。此外,根據(jù)應(yīng)用的SLA在每臺服務(wù)器上預(yù)留了空閑的資源池。這就避免了服務(wù)器過載、應(yīng)用不能滿足SLA而帶來的虛擬機(jī)遷移。該算法與傳統(tǒng)的基于峰值工作負(fù)載的算法相比,所需服務(wù)器的數(shù)量較少,實(shí)現(xiàn)了節(jié)能。Goudarzi[6]等人研究了云計(jì)算環(huán)境中以節(jié)能為目的的虛擬機(jī)放置問題。他們提出了一種生成虛擬機(jī)備份的方法:基于動態(tài)優(yōu)化、局部搜索的算法。該算法決定了每臺服務(wù)器部署的虛擬機(jī)的數(shù)量。此外,他們重點(diǎn)研究了虛擬機(jī)控制器VMC(VM controller),VMC采用半靜態(tài)優(yōu)化方法以及動態(tài)最優(yōu)法來決定虛擬機(jī)的資源需求、部署虛擬機(jī)以及對虛擬機(jī)進(jìn)行遷移操作;提出了節(jié)能虛擬機(jī)放置算法(Energy Efficient VM Placement Algotirhm),該算法主要用來決定放置在不同物理機(jī)上的虛擬機(jī)副本數(shù)量。
面向負(fù)載均衡方面,Chandakanna[7]等人提出了一個適用于負(fù)載均衡集群的基于模型視圖控制器的自適應(yīng)調(diào)整集群框架SACF(Self-Adjusting Cluster Framework)。該框架可自動部署新的虛擬機(jī),自動升級現(xiàn)有應(yīng)用,并且保證集群的一致性。Choi[8]等人提出了一種根據(jù)最小化CPU利用率標(biāo)準(zhǔn)差的貪心策略進(jìn)行負(fù)載遷移的算法。該算法基于一個學(xué)習(xí)框架來動態(tài)調(diào)整不同計(jì)算資源的閾值。該學(xué)習(xí)框架用記事本方法記錄了遷移前的CPU利用率的標(biāo)準(zhǔn)差,主機(jī)CPU利用率,遷移后的CPU利用率標(biāo)準(zhǔn)差、源機(jī)器、目標(biāo)機(jī)器的信息以供學(xué)習(xí)。當(dāng)記錄信息不存在的時候,模擬所有可能的遷移情況,選擇標(biāo)準(zhǔn)差最小的情況進(jìn)行遷移。該算法利用了記事本來學(xué)習(xí)歷史調(diào)度決策從而實(shí)現(xiàn)集群內(nèi)物理機(jī)的負(fù)載均衡。Hu[9]等人提出了一種根據(jù)所采集的歷史數(shù)據(jù)和系統(tǒng)當(dāng)前狀態(tài)利用遺傳算法計(jì)算分配虛擬機(jī)資源后對系統(tǒng)的影響,從而找到最優(yōu)分配方式的以負(fù)載均衡為目的的調(diào)度算法。
兼顧節(jié)能以及負(fù)載均衡方面,Chang[10]等人提出了一個基于學(xué)習(xí)算法的神經(jīng)網(wǎng)絡(luò)模型。集群內(nèi)的每臺服務(wù)器上部署了資源管理器用以預(yù)測云服務(wù)器的工作負(fù)載,從而高效地對資源進(jìn)行分配,在提高服務(wù)器性能的同時降低能耗。Li[11]等人提出了一種面向感知數(shù)據(jù)托管的虛擬機(jī)調(diào)度策略,并采用貪婪思想設(shè)計(jì)實(shí)現(xiàn)了相應(yīng)的調(diào)度系統(tǒng)及其算法。文中定義了冷熱點(diǎn)、熱度以及遷移優(yōu)先值等概念,通過對物理機(jī)進(jìn)行冷熱點(diǎn)判斷,從而選擇調(diào)度模式:負(fù)載均衡模式下的調(diào)度、優(yōu)化節(jié)能模式下的調(diào)度以及正常模式下的不調(diào)度,及時消除冷熱點(diǎn)。此外,調(diào)度系統(tǒng)在遷移調(diào)度時,考慮到了不同業(yè)務(wù)類型虛擬機(jī)對各類資源的不同需求,實(shí)現(xiàn)了業(yè)務(wù)類型敏感的虛擬機(jī)調(diào)度。
總而言之,虛擬機(jī)調(diào)度針對不同目的,如上述的面向節(jié)能、面向負(fù)載均衡、面向負(fù)載均衡以及節(jié)能,采用優(yōu)化搜索算法、遺傳算法以及貪心策略、啟發(fā)式策略等在可能的解空間進(jìn)行解的選擇,而后確定如何遷移調(diào)度。此外,工業(yè)界也提出了一些相關(guān)產(chǎn)品,如VMware推出的DRS(Distributed Resource Scheduler),該動態(tài)優(yōu)化技術(shù)產(chǎn)品可對虛擬機(jī)集群的性能進(jìn)行監(jiān)控、管理以及控制,從而對資源進(jìn)行優(yōu)化調(diào)度。
但是目前的研究一般針對傳統(tǒng)的云數(shù)據(jù)中心,當(dāng)然也有少數(shù)面向特定應(yīng)用領(lǐng)域的,比如面向感知數(shù)據(jù)托管平臺[11]、電子政務(wù)基礎(chǔ)架構(gòu)云[12]、可對云資源進(jìn)行綜合管理的清華云平臺[4],但是尚沒有針對校園云平臺的教學(xué)應(yīng)用的虛擬機(jī)調(diào)度機(jī)制,沒有考慮到校園云負(fù)載的特征。
2.1問題定義
本文重點(diǎn)解決面向教學(xué)需求的計(jì)算資源調(diào)配的第一個子問題——靜態(tài)部署問題,下面是對該問題的具體闡述。
設(shè)校園云平臺的數(shù)據(jù)中心有n臺物理服務(wù)器,已部署了m個虛擬機(jī)供教學(xué)應(yīng)用,待部署g個虛擬機(jī)。通過虛擬機(jī)部署使:
(1) 活躍的物理機(jī)數(shù)量盡可能少;
(2) 各活躍物理機(jī)的資源利用率盡可能均衡。
該目標(biāo)可用下述公式表達(dá):
其中:
(1) n為活躍的機(jī)器數(shù);
(2) r={cpu,…,memory},wr反映了虛擬機(jī)r資源維度上的利用率對整體資源利用率的貢獻(xiàn)權(quán)重,文獻(xiàn)[13]提出了一種設(shè)定權(quán)重具體值的方法,我們也可根據(jù)自己的經(jīng)驗(yàn)及需求加以設(shè)定;
(3) uir為r資源維度上物理機(jī)i的利用率;
(4) averager為r資源維度上n個物理機(jī)的平均利用率。
2.2部署原理
當(dāng)有一個新的課程需求時,首先按照各物理機(jī)負(fù)載與課程需求的相似程度從高到低對物理機(jī)負(fù)載進(jìn)行分組;然后對相似程度最高的一組物理機(jī)負(fù)載進(jìn)行以負(fù)載均衡為目的的虛擬機(jī)部署。若課程需求分配完成,則按照分配情況部署虛擬機(jī);虛擬機(jī)部署完成之后更新物理機(jī)負(fù)載。若課程需求未分配完成,則對相似程度次高的一組物理機(jī)負(fù)載進(jìn)行以負(fù)載均衡為目的虛擬機(jī)部署,重復(fù)上面的步驟,直到課程需求全部分配完成。
部署原理如圖1所示,它采用了“先集中、再分散”的策略:按照相似程度對物理機(jī)進(jìn)行優(yōu)先選擇,可將虛擬機(jī)集中部署在相同時間段處于開機(jī)狀態(tài)的物理機(jī)上,用盡量少的物理機(jī)數(shù)來部署虛擬機(jī)從而實(shí)現(xiàn)節(jié)能;在相似程度一樣的物理機(jī)組內(nèi)進(jìn)行負(fù)載均衡的部署,這樣既可實(shí)現(xiàn)節(jié)能,又可實(shí)現(xiàn)負(fù)載均衡。
圖1 虛擬機(jī)部署原理圖
2.3部署算法
2.3.1相關(guān)定義
定義1課程需求模型租戶提交申請的課程需求模型可以定義為一個六元組:
CRequest=(CName,CTime,CCpu,CMemory,
CNumber,LSet)
(3)
其中:
1) CName表示課程名稱類,是課程唯一性的標(biāo)識。
2) CTime表示課程時間段類,由于學(xué)校上課時間一般用周數(shù)來計(jì)算,所以可用該門課程的起始和結(jié)束周數(shù)來表示時間段類,可定義為一個二元組:CTime=(IWeek,FWeek),其中:IWeek表示課程的起始周數(shù),F(xiàn)Week表示課程的結(jié)束周數(shù)。
3) CCpu表示課程申請的虛擬機(jī)所需CPU大小。
4) CMemory表示課程申請的虛擬機(jī)所需的內(nèi)存大小。
5) CNumber表示虛擬機(jī)個數(shù)。
6) LSet表示課程具體的課時集,每個元素可以表示為一個三元組,LSet=(LSection,LDay,LWeek),其中:
(1) LSection表示課程在某一天具體上課的節(jié)數(shù),根據(jù)學(xué)校實(shí)際情況,用一節(jié)大課來表示兩節(jié)課程。例如第2節(jié)大課表示第3、4節(jié)課。
(2) LDay表示一周具體上課時間,即課程所在的星期幾。
(3) LWeek表示課程所在的單雙周類,由學(xué)校課程安排的實(shí)際情況考慮,并不是所有課程每周都有,可定義為一個二元組:LWeek=(SWeek,DWeek),其中:DWeek為1表示雙周有課,SWeek為1表示單周有課,否則為0。
例如,一租戶提交了軟件工程課程的需求申請,上課時間為1~8周,單周授課,具體時間為星期一的第2節(jié)大課以及星期五的第3節(jié)大課,每個虛擬機(jī)內(nèi)存為4 GB,VCPUs為2,虛擬機(jī)個數(shù)為20臺。對于此課程需求實(shí)例化為:
crequest=(SoftwareEngineering,(1,8),2,4,20,((2,1,
(1,0)),(3,5,(1,0)))
定義2物理機(jī)負(fù)載模型物理機(jī)上所部署的虛擬機(jī)的課程詳情,該模型可定義為一個5×5×16的三維矩陣C=[Cijk]5×5×16,其中1≤i≤5,1≤j≤5,1≤k≤5。如圖2所示。
圖3 物理機(jī)負(fù)載模型
k周,星期j,i節(jié)課的虛擬機(jī)使用情況Cijk可定義為一個三元組:Cijk=(PName,PCpu,PMemory),其中:
1) PName={LName1,LName2,…,LNamew},其中w為第k周,星期j,i節(jié)課時間段所要同時進(jìn)行的課程的數(shù)目,LNamew為第w種課程的名稱;
2) PCpu為物理機(jī)上所占用的CPU資源大??;
3) PMemory為物理機(jī)上所占用的內(nèi)存資源大小。
定義3吻合度新申請的課程需求與物理機(jī)負(fù)載相對應(yīng)元之間的重合度高低,公式定義如下:
(4)
其中Numoverlap為新申請的課程需求與物理機(jī)負(fù)載重合的課程數(shù),Numall為新申請的課程需求的課程總數(shù)。例如,一課程申請為crequest=(Java,(1,16),2,4,20,(2,1,(1,0))),即課程在第1、3、5、7、9、11、13、15周的周一第2節(jié)大課進(jìn)行,共有8次課。若對于一物理機(jī)負(fù)載存在元C211、C213、C215、C217、C219、C2111,即存在課程在第1、3、5、7、9、11周進(jìn)行,GOFitjava=Numoverlap/Numall=6/8=0.75,則該物理機(jī)與新申請課程需求的吻合度為0.75;若沒有相對應(yīng)的元存在,則吻合度定為0,即若吻合度為0表示該物理機(jī)上沒有與新申請的課程需求相同時間段的其他課程的虛擬機(jī)。
定義4部署優(yōu)先值該值用來對吻合度相同的物理機(jī)做可部署虛擬機(jī)的順序排序,即對物理機(jī)所剩資源的綜合評價(jià)。文獻(xiàn)[14]只考慮了CPU維度,但通常情況下,還要考慮內(nèi)存、存儲等維度的資源。本文綜合考慮CPU、內(nèi)存兩個維度,公式定義如下:
(5)
其中,vCpu為物理機(jī)虛擬出的Cpu的數(shù)目;Cijk.PCpu為與申請需求相同時間段的物理機(jī)已分配vCpu的數(shù)目,其中ijk可按物理機(jī)上已有課程與課程需求第一次重合的時間計(jì)算,若無重合時間,則ijk為課程需求第一次上課時間;內(nèi)存公式同上。
2.3.2算法描述
為將新申請的課程需求部署到物理機(jī)上,實(shí)現(xiàn)以節(jié)能及負(fù)載均衡為目的的基于時間的虛擬機(jī)的部署,首先需要了解每個物理機(jī)上資源使用情況。本文采用定義的物理機(jī)負(fù)載模型來刻畫物理機(jī)上資源使用情況。
由于分配到每個物理機(jī)上單個課程的虛擬機(jī)資源是已知的,該算法主要是根據(jù)這些已知的虛擬機(jī)資源來推導(dǎo)出物理機(jī)負(fù)載,具體如下:
算法1物理機(jī)負(fù)載計(jì)算算法。
輸入:物理機(jī)上分配的課程需求實(shí)例crequest,物理機(jī)負(fù)載Cold=[Cijk]5*5*16。
輸出:物理機(jī)負(fù)載Cnew=[Cijk]5*5*16。
算法描述:
1. While crequest is not empty do
2. i←crequest.LSection ,
3. j←crequest.LDay
4.for k←crequest.IWeek to k←crequest.FWeek do
5. If (crequest.LWeek=(1,1)‖ (crequest.LWeek=(1,0)&&(k%2=1))‖(crequest.LWeek=(0,1)&&(k%2)=0))
6. do Cijk.PName=Cijk.PName∪{crequest.CName};
7. Cijk.PCpu=Cijk.PCpu+crequest.CCpu*crequest.CNumber;
8. Cijk.PMemory=Cijk.PCMemory+crequest.CMemory*crequest.CNumber;
9. End if
10. k=k+1;
11.Endfor
12.Return Cnew=[Cijk]5*5*16
13.End while
對于一個課程需求,需經(jīng)過部署算法,拆分為幾個課程需求,然后部署到幾個物理機(jī)上面;每次部署新的虛擬機(jī)以及虛擬機(jī)動態(tài)調(diào)度完成之后要調(diào)用該算法重新計(jì)算物理機(jī)負(fù)載,以保證信息的準(zhǔn)確性。
對于新申請的虛擬機(jī)資源,合理的部署有利于避免虛擬機(jī)使用時出現(xiàn)的高負(fù)載、低負(fù)載導(dǎo)致的虛擬機(jī)的動態(tài)遷移以及由此帶來的大量物力資源的消耗、時間的浪費(fèi)。所以如何部署虛擬機(jī)到現(xiàn)有物理機(jī)上是至關(guān)重要的一步。本算法基于每個物理機(jī)的負(fù)載模型來進(jìn)行基于時間、預(yù)測負(fù)載的調(diào)度,以節(jié)能及負(fù)載均衡為目標(biāo),具體算法如下:
算法2課程需求部署算法(CRD算法)。
輸入:crequest′,物理機(jī)負(fù)載C1,C2,…,Cl, 其中l(wèi)為物理機(jī)個數(shù)。
輸出:虛擬機(jī)與物理機(jī)遷移映射關(guān)系。
算法描述:
1.按照物理機(jī)負(fù)載C1,C2,…,Cl與crequest′的吻合度從高到低將物理機(jī)進(jìn)行排列,得到有序的吻合度相同的物理機(jī)負(fù)載組D1, D2,…,Dm,其中m為小組個數(shù);
2. foreach 有序的物理機(jī)負(fù)載組 do
3.按照物理機(jī)的部署優(yōu)先值的高低對組內(nèi)n個物理機(jī)排序,得到{P1,P2,…,Pn};
4. foreach物理機(jī)Pi do
6. If NUMi*crequest′.Cpu NUMi*crequest′.Memory 7. 在物理機(jī)Pi上部署NUMi臺虛擬機(jī); 8. Else do 部署min{Pi.LCpu/crequest′.Cpu,Pi.LMemo ry/crequest′.Memory}臺虛擬機(jī); 9. End if; 10. End foreach; 11. If 課程需求完全分配 do exit 12. Else do 按照更新的物理機(jī)的部署優(yōu)先值的高低對物理機(jī)排序;將所剩課程需求部署在有序的物理機(jī)上; 13. If 課程需求完全分配 do exit 14. End if; 15. End if; 16. End foreach 17. 如果循環(huán)了所有物理機(jī)也未部署完成,則發(fā)出物理機(jī)不足,找不到目標(biāo)機(jī)的警報(bào); 3.1系統(tǒng)架構(gòu) 本文在以開源IaaS平臺OpenStack[15]為基礎(chǔ)的校園云平臺上實(shí)現(xiàn)了基于上述面向教學(xué)需求的虛擬機(jī)調(diào)度方法的系統(tǒng)。為實(shí)現(xiàn)上述目標(biāo),提出了調(diào)度系統(tǒng)架構(gòu),架構(gòu)如圖3所示。 圖3 系統(tǒng)架構(gòu)圖 該系統(tǒng)主要由數(shù)據(jù)存儲模塊、用戶請求模塊、虛擬機(jī)調(diào)度模塊、虛擬機(jī)控制模塊組成。數(shù)據(jù)存儲模塊包括物理機(jī)預(yù)測負(fù)載模塊、課程需求模塊、監(jiān)控?cái)?shù)據(jù)模塊以及映射關(guān)系表模塊。物理機(jī)預(yù)測負(fù)載模塊用以存儲根據(jù)虛擬機(jī)的課程詳情而預(yù)測的物理機(jī)負(fù)載。課程需求模塊用以存儲用戶新提交的課程申請?jiān)斍?。監(jiān)控?cái)?shù)據(jù)模塊用以存儲物理機(jī)、虛擬機(jī)的實(shí)時資源使用情況。映射關(guān)系表用以存儲服務(wù)器與虛擬機(jī)的放置映射關(guān)系。 用戶請求模塊即人機(jī)交互界面,用戶通過校園云平臺提交申請以及課程所需虛擬機(jī)的詳情。 虛擬機(jī)調(diào)度模塊包括吻合度判斷模塊、部署優(yōu)先值判斷模塊、調(diào)度決策模塊。 虛擬機(jī)控制模塊包括創(chuàng)建、刪除、啟動、停止、遷移、配額調(diào)整模塊,從而實(shí)現(xiàn)對虛擬機(jī)實(shí)例的創(chuàng)建、刪除、開啟、關(guān)閉、遷移以及虛擬機(jī)配額調(diào)整等操作。 首先,普通用戶通過用戶界面提交用戶請求。管理員對用戶請求進(jìn)行人工審核,對于審核通過的請求,將該請求信息一方面存儲到課程需求模塊。另一方面發(fā)送到虛擬機(jī)調(diào)度模塊,該模塊接收到請求,會啟動靜態(tài)部署算法,對該虛擬機(jī)創(chuàng)建請求進(jìn)行處理,最后生成物理機(jī)、虛擬機(jī)部署映射關(guān)系表,并存儲到映射關(guān)系表模塊。虛擬機(jī)控制模塊根據(jù)該部署映射關(guān)系表,進(jìn)行虛擬機(jī)的創(chuàng)建。虛擬機(jī)創(chuàng)建完成之后,部署在服務(wù)器上的監(jiān)控設(shè)備會對該服務(wù)器進(jìn)行實(shí)時監(jiān)控。當(dāng)發(fā)現(xiàn)監(jiān)控?cái)?shù)據(jù)超過資源的高低閾值,即服務(wù)器出現(xiàn)過載或過閑的情況時,虛擬機(jī)調(diào)度模塊的動態(tài)調(diào)度部分會根據(jù)實(shí)時的歷史數(shù)據(jù)對虛擬機(jī)進(jìn)行動態(tài)調(diào)度,生成遷移指令,并且發(fā)送到虛擬機(jī)控制模塊。虛擬機(jī)控制模塊根據(jù)該遷移指令對虛擬機(jī)進(jìn)行遷移操作,進(jìn)而實(shí)現(xiàn)集群的負(fù)載均衡以及節(jié)能。此外,虛擬機(jī)控制模塊還可對虛擬機(jī)進(jìn)行配額調(diào)整。 3.2實(shí)例驗(yàn)證 為驗(yàn)證調(diào)度效果,在該云平臺環(huán)境下,5臺HP服務(wù)器構(gòu)建的集群上搭建了OpenStack平臺,具體服務(wù)器配置如表1所示。該平臺主要是為租戶(如教師、科研人員)提供所需的虛擬機(jī)資源,從而滿足教學(xué)與實(shí)驗(yàn)需求。 表1 服務(wù)器配置 如表1所示,server1.org作為控制節(jié)點(diǎn)[16],server2.org、server3.org、server4.org、server5.org作為計(jì)算節(jié)點(diǎn)。在這一環(huán)境下,將本文提出的算法以Python語言加以實(shí)現(xiàn),并擴(kuò)展到OpenStack中。 各計(jì)算節(jié)點(diǎn)已部署課程虛擬機(jī)情況如表2所示。 表2 已部署課程情況 如表2所示,服務(wù)器server2.org上部署了Java課程所需的2臺虛擬機(jī),C語言課程所需的7臺虛擬機(jī)以及C++課程所需的2臺虛擬機(jī); server3.org、server4.org、server5.org所示意義同上。 課程需求為:crequest=(Software Engineering,(1,8),2,4,15,( 2,1,(1,0))) 分別采用CRD算法,OpenStack開源軟件提供的SimpleSchedule(SS)以及貪心算法First Fit(FF)對課程虛擬機(jī)資源進(jìn)行調(diào)度分配。 圖4、圖5所示為虛擬機(jī)資源被調(diào)度分配、部署完成,第一次運(yùn)行該課程時集群達(dá)到穩(wěn)定狀態(tài)的CPU利用率和內(nèi)存利用率。從圖4、圖5可看出,經(jīng)本算法調(diào)度部署之后,服務(wù)器CPU利用率差距很小,小于5%,內(nèi)存利用率差距小于10%,基本實(shí)現(xiàn)負(fù)載均衡。并且有一臺服務(wù)器在此課程上課期間處于閑置狀態(tài),可對其進(jìn)行關(guān)機(jī)操作以節(jié)能。而由SS算法、FF算法調(diào)度部署之后服務(wù)器的CPU利用率差距很大,大于20%,內(nèi)存利用率差距大于60%,存在嚴(yán)重的負(fù)載不均衡,且沒有服務(wù)器此時處于閑置狀態(tài),與CRD算法相比,能耗更大。 圖4 集群CPU利用率 圖5 集群內(nèi)存利用率 綜上所述,CRD算法既可達(dá)到節(jié)能的目的,又可實(shí)現(xiàn)負(fù)載均衡。 本文以校園云平臺中教學(xué)應(yīng)用的資源調(diào)配為背景,提出了一種適應(yīng)教學(xué)應(yīng)用周期性、可預(yù)測性、批量性等特點(diǎn),以減少物理服務(wù)器使用數(shù)量、負(fù)載均衡為目的的虛擬機(jī)調(diào)度機(jī)制。并在開源IaaS平臺OpenStack為基礎(chǔ)的教學(xué)科研云平臺上對該調(diào)度算法進(jìn)行了驗(yàn)證,結(jié)果表明,該算法有效地節(jié)約了能耗并實(shí)現(xiàn)了負(fù)載均衡。 下一步將從面向教學(xué)需求的計(jì)算資源調(diào)配問題的第二個子問題入手,研究虛擬機(jī)使用時的動態(tài)調(diào)度問題,根據(jù)物理機(jī)實(shí)際資源使用情況進(jìn)行虛擬機(jī)的動態(tài)遷移,并提出相應(yīng)的調(diào)度策略。 [1] 李英壯,汪楠,李先毅.基于OpenStack開發(fā)云平臺的設(shè)計(jì)與實(shí)現(xiàn)[J].武漢大學(xué)學(xué)報(bào):理學(xué)版,2012,58(S1):58-60. [2] 戢瑤,胥光輝,毛東方,等.基于馬爾可夫鏈的校園云平臺效用分析[J].計(jì)算機(jī)科學(xué),2013,40(7):49-53. [3] 伍之昂,羅軍舟,宋愛波,等.跨數(shù)據(jù)中心的動態(tài)資源聯(lián)合預(yù)留研究[J].計(jì)算機(jī)學(xué)報(bào),2014,37(11):2317-2325. [4] 趙少卡,李立耀,凌曉,等.基于OpenStack的清華云平臺構(gòu)建與調(diào)度方案設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013,33(12):3335-3338. [5] Mylayarapu S,Sukthankar V,Banerjee P.An optimized capacity planning approach for virtual infrastructure exhibiting stochastic workload[C]//ACMSymposium on Applied Computing (SAC),New York,USA,2010:386-390. [6] Goudarzi H,Pedram M.Energy-efficient virtual machine replication and placement in a cloud computing system[C]//Cloud Computing (CLOUD),2012 IEEE 5th International Conference on.IEEE,2012:750-757. [7] Chandakanna V R,Vatsavayi V K.A model view controller based Self-Adjusting Clustering Framework[J].Journal of Systems and Software,2013,29(4):581-589. [8] Choi H W,Kwak H,Sohn A,et al.Autonomous learning for efficient resource utilization of dynamic vm migration[C]//Proceedings of the 22nd annual international conference on Supercomputing.ACM,2008:185-194. [9] Hu J,Gu J,Sun G,et al.A scheduling strategy on load balancing of virtual machine resources in cloud computing environment[C]//Parallel Architectures,Algorithms and Programming (PAAP),2010 Third International Symposium on.IEEE,2010:89-96. [10] Chang Y C,Chang R S,Chuang F W.A predictive method for workload forecasting in the cloud environment[M]//Advanced Technologies,Embedded and Multimedia for Human-centric Computing.Springer Netherlands,2014:577-585. [11] Li X,Jiang Y.A sensory-data-hosting oriented scheduling strategy on virtual machine[C]//Green Computing and Communications (GreenCom),2013 IEEE and Internet of Things (iThings/CPSCom),IEEE International Conference on and IEEE Cybe,Physical and Social Computing.IEEE,2013:2029-2036. [12] 趙宏衛(wèi),施伯樂.電子政務(wù)基礎(chǔ)架構(gòu)云的容量規(guī)劃方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(11):118-121,150. [13] Zhuang W,Gui X,Lin J,et al.Deployment and Scheduling of Virtual Machines in cloud computing:An″AHP″ Approach[J].Journal Of Xi’an Jiaotong University,2013,47(2):28-32. [14] Beloglazoy A,Buyya R.Managing overloaded hosts for dynamic consolidation of virtual machines in cloud data centers under quality of service constraints[J].Parallel and Distributed Systems,IEEE Transactions on,2013,24(7):1366-1379. [15] Sefraoui O,Aissaoui M,Eleuldj M.OpenStack:toward an open-source solution for cloud computing[J].International Journal of Computer Application,2012,55(3):38-42. [16] Kumar R,Gupta N,Charu S,et al.Open Source Solution for Cloud Computing Platform Using OpenStack[J].International Journal of Computer Science and Mobile Computing,2014,3(5):89-98. A SCHEDULING MECHANISM OF VIRTUAL MACHINES FOR CAMPUS CLOUD PLATFORM Ma QianWang JingWang Gang (BeijingKeyLaboratoryonIntegrationandAnalysisofLarge-ScaleStreamData,NorthChinaUniversityofTechnology,Beijing100144,China) With the continuous deepening of teaching informatisation, campus cloud platform is becoming increasingly popular, but the resource utilisation is still low in practical applications, and the key problem is that current scheduling mechanism of virtual machines doesn’t take into account the characteristic of campus applications, which results in a waste of resources and load imbalancing. To tackle this problem, this paper puts forward a scheduling mechanism of virtual machines for campus cloud platform, defines the course requirement model and the physical machine load model, and proposes on this basis a virtual machine deployment algorithm. This mechanism can adapt to the characteristics of teaching applications such as periodicity, predictability and batching, etc., and achieves the goals of energy saving and load balancing. Actual platform verification shows that the mechanism can effectively reduce power consumption and realise load balancing. Campus cloudScheduling mechanismVirtual machine deploymentEnergy savingLoad balancing 2015-01-15。國家自然科學(xué)基金項(xiàng)目(610330 06);北京市自然科學(xué)基金項(xiàng)目(4131001);北京市屬高等學(xué)校創(chuàng)新團(tuán)隊(duì)建設(shè)與教師職業(yè)發(fā)展計(jì)劃項(xiàng)目(IDHT20130502)。馬倩,碩士生,主研領(lǐng)域:虛擬機(jī)調(diào)度。王菁,副研究員。王崗,碩士生。 TP311 A 10.3969/j.issn.1000-386x.2016.08.0223 系統(tǒng)實(shí)現(xiàn)
4 結(jié) 語