羅肖輝 徐美霞
(1.廣州商學院網絡中心 廣州 511363)(2.廣州商學院信息技術與工程學院 廣州 511363)
作為新興的計算模式,云計算一直是目前最為熱點的研究領域,它被視為以科學研究為主的網格計算的商業化實現[1]。目前,對于云計算的定義業界仍未達成共識,具有代表性的一種觀點是:可以提供 IaaS[2]、SaaS[3]和 PaaS[4]等類型服務的資源池,資源池中的資源可以根據負載變化動態進行配置,同時,資源的使用方式是采取即付即用方式。該定義強調了云計算環境的超大規模、虛擬化、可擴展性、通用性及按需服務等特點。目前,各大廠商都相繼推出了云平臺,如谷歌的App Engine[5]、亞馬遜的 Amazon EC2[6]、IBM 的藍云[7]以及微軟 件的Azure OS[8]等?;谀M的方法允許用戶反復測試用戶的服務,而不需要大量的資金耗費,并能夠在部署之前調節性能瓶頸。而作為新興的互聯網計算模式,目前的云仿真工具并不多,比較典型的有CloudSim[9]、SimCloud[10]及 云計 算平 臺[11]三 種。CloudSim云平臺[12]是墨爾本大學開發的開源仿真工具包,旨在量化針對不同應用類型和不同服務模型的調度性能。
SimCloud是面向企業級的云平臺,它可以整合工程數值仿真軟件等資源,并配置動態的資源調度策略,為企業用戶提供統一、便捷、強大的云計算服務[13]。“云計算平臺”是李伯虎院士等提出的一種新型網絡化仿真平臺[14]。該平臺基于云計算理念,可以應用于工程與非工程領域,實現線上資源的多用戶按需協同互操作與調度。“云仿真平臺”旨在改善仿真網格對多用戶在多粒度資源按需共享、協同、容錯遷移等方面的能力,進而建立新的建模仿真模式“云仿真”。
鑒于CloudSim云平臺的開源性和使用的廣泛性,且提供虛擬引擎,有助于在一個數據中心節點上創建和管理多個獨立和協同的虛擬機服務,本文在CloudSim云平臺環境中研究了云計算的任務調度算法和基于節能的虛擬機部署算法,提出了五種任務調度算法和兩種節能算法,并通過平臺擴展在CloudSim中實現了這七種算法,并配置了具體的云計算場景進行了仿真實驗與性能分析。
CloudSim云平臺是一種開源模擬引擎,基于GridSim和離散事件驅動,可以模擬創建多種云計算環境中的實體,包括云數據中心、物理主機與虛擬機、各組件間的消息傳輸及時鐘管理等。并且,CloudSim作為通用的可擴展的模擬框架,支持模擬新興的云計算基礎設施和管理服務。圖1是Cloud?Sim體系結構。
用戶代碼層負責提供基本云實體,包括與主機(多臺機器、多規格)、應用(任務及其需求)、虛擬機、大量用戶及其應用類型和代理的調度策略的配置相關功能的用戶代碼。云應用開發人員可在本層開發各種用戶需求分布、應用的配置請求和云可用場景,進行可靠性測試,從而實現自定義的云應用調度算法。
該層負責物理資源建模。云中的硬件可以通過擴展數據中心實體實現,數據中心作為云系統的核心部分,負載管理物理主機,并對主機處理能力和存儲進行分配,以及管理內核的調度。在Cloud?Sim云平臺中,一個實體就是一個實例化組件,一個CloudSim組件可定義為一個類或者一個Cloud?Sim模型的類集。

圖1 CloudSim體系結構
盡管VM上下文是相互獨立的(通常指主存和輔存空間),但仍會共享CPU內核和系統總線。因此,VM的可用資源仍受主機處理能力限制。為了實現不同環境下對不同調度策略的模擬,目前的CloudSim支持兩層VM調度[15]:主機層和VM層。主機層中的VM調度直接指定VM可獲取的處理能力,而VM層中,VM為在其內運行的獨立任務單元分配固定的處理能力。
兩層VM調度均實現了時間共享和空間共享。以下分析兩者在應用任務調度性能上的區別。如圖2,某主機可運行兩個VM,該主機擁有兩個CPU內核,每個VM請求兩個內核并執行四個任務,T1、T2、T3、T4占用VM1,而T5、T6、T7、T8占用VM2。
圖2(a)中,VM主機層和任務單元均采用空間共享。空間共享中,VM請求兩個CPU內核,對應時間內只能運行一個VM。同樣的原因,對于VM1,其任務單元分配模式也是一樣的,由于一個任務單元只需一個CPU內核,因此可以同時運行任務單元T1和T2。此時,T3和T4在隊列中等候。則VM完成任務集T的完成時間是:


圖2 四種VM調度場景
其中,StartTime(T)表示云任務集的開始時間,MI(T)表示任務集T執行的總指令數。這種策略下,一個有N個CPU內核的主機總容量可表示為

其中,Cap(i)為內核處理能力。
圖2(b)中,VM采用空間共享,任務單元采用時間共享。通過使用時間共享策略,VM完成任務集T的估計完成時間是:

其中,FinishTime(T)表示任務完成時間,NowTime(T)表示仿真時間,Cores(T)表示任務集的內核需求量。時間共享下,單個VM可同時運行多個任務。此時,主機總能力為

圖2(c)中,VM采用時間共享,任務單元采用空間共享。此時,內核通過時間片原理將其處理能力在VM中進行分配,而時間片本身以空間共享方式分配至任務。由于內核共享,VM的可用處理能力是變化的。而任務單元是空間共享,表明內核只執行一個任務單元。
圖2(d)中,VM和任務單元均采用時間共享。此時,VM共享處理能力,并且同時將共享內核分配至所有任務單元。
實現云計算實體的復雜網絡拓撲結構等仿真實體進行建模。CloudSim云平臺中的云實體(數據中心,主機,SaaS提供商及終端用戶)的內部網絡是抽象的網絡概念。CloudSim實體間的網絡通信延時是通過延時矩陣模擬的,延時單位以毫秒表示。由延時矩陣的含義可知,通過事件管理引擎實現實體i到實體 j的消息傳遞的總時間為t+d,t是仿真開始時間,d是傳輸延時。
虛擬機服務層主要用來管理任務單元的操作和虛擬機的生命周期。
該層實現任務單元和虛擬機間的接口創建。根據以上的層次結構,將CloudSim的類劃分為如圖3所示的基礎類設計圖和如圖4所示的內核模擬引擎類。
對 CloudSim的 DatacenterBroker類的 bind?cloudlet ToVm()進行擴展,實現任務與VM的綁定,圖5是任務調度流程及實現類。通過重載bind?cloudlet ToVm(int cloudletId,int VmId),設計五種任務調度算法。

圖3 CloudSim的基礎類設計圖

圖4 CloudSim內核模擬引擎類圖

圖5 CloudSim云平臺下的任務調度方式
1)SSA(Sequenced Scheduling Algorithm,順序調度算法):順序將任務分配至所有VM,然后,重新分配新到來的任務時以第一個VM作為目標,直至完成所有任務。SSA算法可以保證每個VM執行的任務數量大致相同,實現負載均衡。
2)FCFSA(First Come First Service Algorithm,先來先服務調度算法):按照先來先分配的方式,將任務分配至VM后,新到任務直接分配至最先完成任務的VM上,直至完成所有任務。FCFSA算法可以降低VM空閑時間,但處理能力較強的VM可能會負載過重,無法實現負載的均衡分配。
3)STFA(Shortest Task First Algorithm,短任務先調度算法):將任務按大?。∕illion Instructor)升序排列之后,順序調度至VM。
4)BSA(Balance Scheduling Algorithm,均衡調度算法):將任務按大?。∕illion Instructor)對其進行降序排列,然后將VM按處理能力(MIPS)對其進行降序排列,任務集和VM集重新排序后,再調用SSA算法對任務進行調度。BSA算法的主要目標是將長任務盡量調度到處理能力更強的VM上,而處理能力較弱的VM則執行短任務,以便實現任務與VM之間的均衡調度,但這樣會降低部分VM的資源利用率。
5)GSA(reed Scheduling Algorithm,貪婪調度算法):首先,將任務按大小(Million Instructor)對其進行降序排列,將VM按MIPS進行升序排列。定義矩陣E(i,j),計算任務大小與VM處理能力的比值,并將值存入矩陣,然后在矩陣中作貪婪選擇:從E(0,j)中的任務開始,將其分配至最后一列VM,如果該調度結果最優,完成分配;否則,將該任務調度至使當前結果最優的VM。
虛擬化技術(Virtulization Technology)可以通過在一個物理主機上實例化多個虛擬機的方式來解決數據中心的高能耗問題,從而改善資源利用率,增加投資回報率。在云計算環境中,向用戶提供確保以服務等級協議SLA定義的可靠QoS服務也是必不可少的,因此,對于云資源供應商而言,高能效與高性能間必須達到平衡,以解決能耗問題的同時提供高可靠QoS保障。
通常情況下,CPU是云系統能耗中能耗最高的部件,作者將主要關注CPU在能耗管理方面的問題。而且,對于計算機密集型應用,CPU的利用率與云系統負載是成正比的。本文實驗部分,筆者將使用基于DVFS技術的線性額定關系功耗模型計算CPU的功能。
通常,對于CPU而言,空閑時服務器的功耗仍然是滿載時的70%,表明設置空閑服務器成休眠模式可以降低系統的總體能耗,本文的功耗模型為

其中,Pmax為系統滿載時的最大功耗,k為空閑時系統功耗比例,u為CPU的利用率。
通常,云系統中的負載執行是動態變化的,因此,u通常表示為u(t),那么,總能耗E可定義為

云環境中的服務質量QoS是以服務等級協議SLA進行表示,基于些特征屬性時行定義(最大化吞吐量,最小化響應時間或延遲)。
SLA違例表示為:所有VM請求的MIPS(Uj,r(t))與實際分配的 MIPS(Uj,a(t))之差與虛擬機在其生命周期內請求的MIPS總數之比:

其中,M表示VM數量。
在CloudSim云平臺中實現三種節能算法:DVFS、NPA以及STH算法。
1)DVFS(動態電壓頻率調整),算法思想是:考慮到執行任務時CPU利用率的不充分,降低CPU供電電壓和時鐘頻率的方式達到降低CPU性能的目的,該方法不僅可以極大降低CPU的功耗,還可以保證服務性能。
2)STH算法。通過設置一個CPU利用率的閾值,在調度過程中始終保持其利用率不高于該閾值。其目的是為CPU預留部分處理能力,以滿足對資源的動態增加需求,避免VM合并帶來的SLA違例。若調度過程中CPU利用率高于閾值,則調用VM遷移算法降低利用率至閾值以內。
3)主機滿載算法MPA:保持主機的最大功耗狀態進行任務執行。MPA算法作為性能分析的比較算法。
圖6顯示了CloudSim進行任務調度時實體間的通信流程。仿真初始化時,DataCenter實體通過CIS實體進行注冊,DataCenterBroker在CIS中查詢信息以獲取云提供商列表,DataCenterBroker會選擇CIS建議的云來部署應用。任務被分配到各自的VM之后,會持續更新任務處理過程。此時,DataCenter會調用 updateVMsProcessing()管理主機。主機層上,updateVMsProcessing()會觸發up?dateCloulets-Processing(),以指示VM更新任務單元狀態。該方法與updateVMsProcessing()有類似的作用,不同之處在于updateClouletsProcessing()方法在VM層上。調用updateClouletsProcessing()方法后,VMs將返回任務單元的下一個期望完成時間,并傳送所有完成時間中的最小值至DateCenter實體。

圖6 CloudSim實體通信流程
通過擴展CloudSim,實現所提算法,并對擴展后的仿真工具包進行了重編譯,并對算法性能進行了分析。
創建一個云數據中心,主機數量、虛擬機和云任務的數量分別為1、4和8。具體參數如表1~表4所示,表1為用戶任務單元參數,表2為虛擬機VM相關參數,表3為數據中心相關參數,表4為主機相關參數。

表1 云用戶任務單元(Cloudlet)參數列表

表2 虛擬機(VM)列表

表3 數據中心(Datacenter)列表

表4 主機(Host)列表
圖7和圖8分別是單個任務的完成時間和任務完成總時間。綜合兩個圖可以看出,GSA算法的完成時間是最短的,主要原因是由于GSA在所有VM上對任務做貪心選擇策略,而STFA沒有考慮VM處理能力間的差異,其任務完成時間最長。同時,SSA與FCFSA的完成時間是大致相等的,這主要是由于兩種算法在開始階段的任務分配方式是順序的,但隨著任務量的增加,尤其任務量遠大于VM數量時,FCFSA將具有更大的優勢??傮w看來,BSA算法是次優算法。

圖7 單個任務的完成時間

圖8 任務完成總時間
創建以下云場景,包括一個數據中心,主機數量變化范圍為[10,50],部署虛擬機變化范圍為[20,60],云任務的變化范圍為[20,60]。虛擬機請求的MIPS分別為{250,500,750,1000},虛擬機其他 參 數 如 下 :pesNumber=1,ram=128,bw=2500,size=2500。主機處理能MIPS={1000,2000,3000},主機其他參數如下:raw=10000,storage=10000,bw=10000,云任務大小為150000MI。

圖9 算法性能比較
圖9從能耗、虛擬機遷移次數及SLA違例三個方面比較了STH算法、DVFS算法及MPA算法的性能。可以看出,STH算法的能耗是最少的,因為STH算法通過虛擬機的動態遷移與合并,基于當前的動態資源需求減少物理節點的使用數量,從而達到節省能耗的目的。MPA算法中主機功耗一直維持最大,因此能耗也最大,DVFS算法可以根據任務需求自適應調整CPU的頻率,這極大降低了CPU能耗。DVFS算法和MPA算法均屬于靜態算法,不存在虛擬機的遷移操作,且均得到了任務請求的資源,故不存在SLA違例。

圖10 STH固定閾值對于算法性能
圖10考察了閾值算法STH中固定閾值對于算法性能的影響。總體看來,當增加固定閾值時,能耗會降低,但會增加SLA的違例次數,原因在于隨著閾值的增大,虛擬機合并的機會也會增多,這樣虛擬機遷移也會更加頻繁??梢钥闯觯撝档倪x擇需要折衷,并非越大越好,因為能耗與性能是需要均衡考慮的。
本文詳細分析與研究了CloudSim云平臺的工作原理,主要剖析了CloudSim在仿真機制中提供的層次模型,在以上工作的基礎上,研究了云環境中的任務調度問題,提出了五種任務調度算法,算法均只考慮了任務的執行時間,忽略了主機能耗。進一步針對這一問題,在CloudSim云平臺中實現了兩種節能算法。通過擴展CloudSim的相關類,對以上七種算法進行了仿真實驗分析,仿真結果證明了算法的有效性。而進一步的研究在于:1)改進文中的固定閾值算法,利用負載預測機制,根據任務屬性,動態地進行任務及虛擬機的部署,以便最大限度地實現能耗與性能的均衡;2)資源分配的負載均衡問題。負載均衡機制可以通過虛擬機遷移盡量減輕物理節點的負載,避免產生熱點問題,提高云資源利用效率,滿足用戶對資源的需求,為云環境下高效的資源利用提供良好的基礎。