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