王霞俊
作為一種新興的商業(yè)計算模型,云計算技術(shù)將計算機基礎(chǔ)設(shè)施和應(yīng)用作為服務(wù)(基礎(chǔ)設(shè)施Infrastructure as a Service,簡稱IaaS、應(yīng)用平臺Platform as a Service,簡稱PaaS和應(yīng)用軟件Software as a Service,簡稱Saas),以按需付費的方式提供給終端用戶,目的是希望實現(xiàn)異構(gòu)資源的有效、動態(tài)、靈活應(yīng)用[3]。云計算模式下的應(yīng)用服務(wù)(例如社交網(wǎng)絡(luò)、web租用、實時數(shù)據(jù)處理,等等)都有不同的、復(fù)雜的組件、配置和部署條件和要求,根據(jù)現(xiàn)有條件在異構(gòu)真實的云計算環(huán)境(比如EC2,Azure)下,對云端基礎(chǔ)設(shè)施的負(fù)荷、節(jié)能、系統(tǒng)規(guī)模、資源調(diào)度分配策略和性能等指標(biāo)進行重復(fù)、可伸縮的試驗來對不同應(yīng)用模式進行量化、評價是非常困難的。為此,需要一個云計算環(huán)境的分布式系統(tǒng)模擬器來實現(xiàn)云計算試驗的模擬,降低研究測試門檻和成本。
文章介紹了云計算的仿真工具CloudSim,描述了其架構(gòu)、工作原理、核心類庫。對CloudSim模擬云環(huán)境進行了測試實驗,為了說明CloudSim的擴展仿真方法和過程,實現(xiàn)了一個自定義的云任務(wù)調(diào)度算法的擴展,并在擴展平臺下對算法性能進行了測試和分析。結(jié)果證明CloudSim的效率是比較優(yōu)異的。
CloudSim[1,3]云計算仿真工具是澳大利亞墨爾本大學(xué)Rajkumar Buyya教授領(lǐng)導(dǎo)的網(wǎng)格實驗室和Gridbus項目推出的云計算仿真軟件。
CloudSim是在GridSim模型基礎(chǔ)上發(fā)展而來,提供了云計算的特性,支持云計算的資源管理和調(diào)度模擬。云計算最大的特點是:采用了成熟的虛擬化技術(shù),將數(shù)據(jù)中心的資源虛擬化為資源池,打包對外向用戶提供服務(wù)。CloudSim恰好體現(xiàn)了此特點,擴展部分實現(xiàn)了一系列接口,提供基于數(shù)據(jù)中心的虛擬化技術(shù)、虛擬化云的建模和仿真功能。
CloudSim是開源的,可以在windows 和linux上運行,用戶可以根據(jù)自己的研究內(nèi)容自行擴展 CloudSim,加入自己的代碼,重新編譯并發(fā)布平臺即可。
CloudSim軟件框架的多層設(shè)計特征以及其體系結(jié)構(gòu),如圖1所示:
圖1 CloudSim層次體系結(jié)構(gòu)
Cloudsim 初始版本(1.0 beta)使用離散事件模擬包SimJava作為仿真引擎,可支持一些核心函數(shù)(如事件隊列和處理,云系統(tǒng)實體的創(chuàng)建(服務(wù)、主機、數(shù)據(jù)中心、代理器、虛擬機),組件間消息傳遞、仿真時鐘的管理)。然而在CloudSim 2.0以后版本中,由于不支持更高級的操作以及版權(quán)問題,SimJava層已經(jīng)被去除。1)CloudSim核心模擬的引擎:
為了使仿真過程中能夠包括多個實體的復(fù)雜場景,CloudSim采用了一種新的事件管理框架。類圖的核心部分,如圖2(a)所示:
圖2 (a)CloudSim核心模擬引擎類圖
CloudSim:這是主類,主要負(fù)責(zé)管理事件隊列和控制仿真事件的按步驟執(zhí)行。
DeferredQueue:該類實現(xiàn)了供CloudSim使用的延時事件隊列。
FutureQueue:該類實現(xiàn)了供 CloudSim 使用的未來事件隊列。
CloudInformationService(CIS):CIS是一個提供了注冊、索引、發(fā)現(xiàn)資源能力的實體。
SimEntity:這是一個抽象類,負(fù)責(zé)發(fā)送消息給其他實體以及處理接收到的消息,如放棄或處理事件。
CloudSimTags:這個類包含了多個靜態(tài)事件/命令標(biāo)簽,用來指出當(dāng)接收或發(fā)送事件時需由CloudSim實體采取的動作類型。
SimEvent:該實體類描繪了兩個或多個實體之間傳送仿真事件的過程。
CloudSimShutdown:該實體類主要是等待所有終端用戶和代理實體的結(jié)束,然后發(fā)送仿真結(jié)束信號給CIS。
Predicate:該類是用于從延時隊列中選擇事件。是一個抽象類,必須創(chuàng)建一個新類來擴展它。一些標(biāo)準(zhǔn)的predicates類,如圖2(b)所示:
圖2 (b)CloudSim核心模擬引擎類圖
2)Cloudsim仿真層:
該層提供了對基于云的虛擬數(shù)據(jù)中心環(huán)境的建模與仿真的支持,包括對虛擬機、內(nèi)存、容量、帶寬的專用管理接口管理。這層要處理的基本問題包括:虛擬機分配到主機的調(diào)度,管理應(yīng)用程序的執(zhí)行和監(jiān)測系統(tǒng)的動態(tài)狀態(tài)。一個云提供商如果想要研究在分配其主機到虛擬機上的不同策略的有效性,就必須在這層來實現(xiàn)他們的策略。這些實現(xiàn)策略可以通過擴展編寫核心VM分配函數(shù)(VM provisioning)來實現(xiàn)。
3)用戶代碼層:
在Cloudsim結(jié)構(gòu)中最上層是用戶代碼層:該層提供了一些基本的實體,如主機實體(機器數(shù)量、特性等)、應(yīng)用(任務(wù)數(shù)和條件)、VMs、用戶數(shù)和應(yīng)用類型、代理調(diào)度策略。在此處通過擴展給定的基本實體,一個云應(yīng)用開發(fā)商可以執(zhí)行以下功能:(1)生成一個混合的工作任務(wù)負(fù)責(zé)分配請求和應(yīng)用配置請求;(2)建立基于云的可用場景和根據(jù)自定義配置進行魯棒性測試;(3)為云和聯(lián)合云實現(xiàn)自定義應(yīng)用分配技術(shù)。
Cloudsim相關(guān)的基礎(chǔ)類共同組成了仿真器。Cloudsim整體類的設(shè)計圖,如圖3所示:
圖3 Cloudsim整體類設(shè)計圖
依據(jù)CloudSim源代碼,有幾個核心類:
(1)Cloudlet類:構(gòu)建云環(huán)境下的任務(wù)。
(2)DataCenter類:數(shù)據(jù)中心,提供虛擬化的網(wǎng)格資源,處理虛擬機信息的查詢,包含虛擬機對資源的分配策略,云計算采用VM Provisioner處理虛擬機。
(3)DataCenterBroker類:隱藏了虛擬機的管理,如創(chuàng)建、任務(wù)提交、虛擬機的銷毀等。
(4)Host類:擴展了機器對虛擬機除處理單元(PE)之外的參數(shù)分配策略,如帶寬、存儲空間、內(nèi)存等,一臺Host可對應(yīng)多臺虛擬機。
(5)VirtualMachine類:虛擬機類,運行在Host上,與其它虛擬機共享資源,每臺虛擬機由一個擁有者所有,可提交任務(wù),并由VMScheduler類定制該虛擬機的調(diào)度策略。
(6)VMScheduler類:虛擬機的調(diào)度策略(分配核的策略,時間的,空間的),用來管理執(zhí)行任務(wù),實現(xiàn)了任務(wù)接口。
(7)VMCharacteristics類:提供虛擬機描述。
(8)VMMAllocationPolicy類:虛擬機監(jiān)視器策略類,描述同一Host上的多臺虛擬機共享資源的策略。
(9)VMProvisioner類:實現(xiàn)數(shù)據(jù)中心的主機到虛擬機的映射。
云計算任務(wù)調(diào)度,就是如何對用戶提交的工作任務(wù)進行計算資源分配和管理,即將相互獨立的 N項任務(wù)分配到M種異構(gòu)可用的資源上,使得任務(wù)的最大完成總時間最小,同時使得資源利用率最高。
在CloudSim中,最簡單的一種任務(wù)調(diào)度就是:根據(jù)一定的調(diào)度策略,將云任務(wù)分配到相應(yīng)的虛擬機級別上的調(diào)度技術(shù)。
本文使用云計算仿真平臺CloudSim2.1.1進行模擬,并對其進行了擴展,重寫了 DataCenterBroker類中提供的的bindCloudletToVm(int cloudletId, int vmId)進行測試模擬,分別采用 First-Come-First-Serve (FCFS)調(diào)度算法,貪心(Greedy)調(diào)度算法,分別編寫新方法bindCloudletsToVmsFCFS()和 bindCloudletsToVmsGreedy()。編程工具為 Eclipse-SDK-4.2.1。
評價指標(biāo)采用 makespan,即 Maximum Completion Time(MCT),虛擬機上的所有任務(wù)的最大完成時間。期望makespan 最小。
設(shè)計了兩個場景:一個是虛擬機個數(shù)固定(5個),PE運算速度在 100-300 MIPS(Million of Instructions Per Second)之間隨機產(chǎn)生,云任務(wù)長度在 10000-50000 MI(Million of Instructions)之間隨機產(chǎn)生,任務(wù)個數(shù)分別從10,30,50,80到100,在兩種調(diào)度算法下運行,每次試驗運行20次,最后統(tǒng)計每次的makespan平均值。測試結(jié)果,如圖4所示:
圖4 虛擬機=5,云任務(wù)個數(shù)增加
第二個場景是:云任務(wù)數(shù)固定(200個),長度在10000-50000 MI之間隨機產(chǎn)生,PE運算速度在 100-300 MIPS之間隨機產(chǎn)生,虛擬機個數(shù)分別從5,10,20,30到50,在兩種調(diào)度算法下運行,每次試驗運行20次,最后統(tǒng)計每次的makespan平均值。測試結(jié)果,如圖5所示:
圖5 云任務(wù)個數(shù)=200,虛擬機增加
通過自定義的云任務(wù)調(diào)度算法的擴展實驗測試和分析研究,可以看出,不管是在哪種場景下,通過適當(dāng)?shù)恼{(diào)度策略,可以很好地優(yōu)化計算資源的分配和管理。同時也很好地說明了CloudSim的擴展仿真是很方便的,效率是比較優(yōu)異的。
雖然云計算得到了全世界知名計算機公司和軟件供應(yīng)商的大力支持,但是作為一個新興的分布式計算模式,在有效處理基礎(chǔ)設(shè)施和應(yīng)用水平復(fù)雜性上還是缺乏給定的標(biāo)準(zhǔn)、工具和方法。而CloudSim是云計算環(huán)境下的優(yōu)秀的模擬與仿真工具,通過擴展已有的基本函數(shù),無論是學(xué)術(shù)界還是企業(yè)界,都能夠基于特殊場景和配置環(huán)境下進行核心算法、政策和應(yīng)用標(biāo)準(zhǔn)的研究、測試,這對于科研工作者以及企業(yè)在云基礎(chǔ)設(shè)施建設(shè)、商業(yè)產(chǎn)品的測試和部署等都有著不可估量的作用。
[1]劉鵬.云計算(第二版)[M].北京: 電子工業(yè)出版社,2011.05
[2]M. Armbrust, A. Fox, R. Griffith, et. al. Above the Clouds:A Berkeley View of Cloud Computing. Technical Report No. UCB/EECS-2009-28, University of California at Berkley, USA, Feb. 10, 2009. [OL]http://www.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-28.pdf
[3]Rodrigo N. Calheiros, Rajiv Ranjan, Anton Beloglazov, et.al. CloudSim: A Toolkit for Modeling and Simulation of Cloud Computing Environments and Evaluation of Resource Provisioning Algorithms, Software: Practice and Experience (SPE), [J]Volume 41, Number 1, Pages: 23-50,ISSN: 0038-0644, Wiley Press, New York, USA, January,2011.
[4]Ghosh, T.K. ,Goswami, R. ; Bera, S. ,Barman, S.. Load balanced static grid scheduling using Max-Min heuristic.[j]2nd IEEE International Conference on Parallel Distributed and Grid Computing (PDGC2012), pp.419–423,2012.