CloudSim云计算仿真工具研究及应用

2013-09-18 10:30王霞俊
微型电脑应用 2013年8期
关键词:任务调度虚拟化数据中心

王霞俊

0 引言

作为一种新兴的商业计算模型,云计算技术将计算机基础设施和应用作为服务(基础设施Infrastructure as a Service,简称IaaS、应用平台Platform as a Service,简称PaaS和应用软件Software as a Service,简称Saas),以按需付费的方式提供给终端用户,目的是希望实现异构资源的有效、动态、灵活应用[3]。云计算模式下的应用服务(例如社交网络、web租用、实时数据处理,等等)都有不同的、复杂的组件、配置和部署条件和要求,根据现有条件在异构真实的云计算环境(比如EC2,Azure)下,对云端基础设施的负荷、节能、系统规模、资源调度分配策略和性能等指标进行重复、可伸缩的试验来对不同应用模式进行量化、评价是非常困难的。为此,需要一个云计算环境的分布式系统模拟器来实现云计算试验的模拟,降低研究测试门槛和成本。

文章介绍了云计算的仿真工具CloudSim,描述了其架构、工作原理、核心类库。对CloudSim模拟云环境进行了测试实验,为了说明CloudSim的扩展仿真方法和过程,实现了一个自定义的云任务调度算法的扩展,并在扩展平台下对算法性能进行了测试和分析。结果证明CloudSim的效率是比较优异的。

1 CloudSim

1.1 CloudSim概述

CloudSim[1,3]云计算仿真工具是澳大利亚墨尔本大学Rajkumar Buyya教授领导的网格实验室和Gridbus项目推出的云计算仿真软件。

CloudSim是在GridSim模型基础上发展而来,提供了云计算的特性,支持云计算的资源管理和调度模拟。云计算最大的特点是:采用了成熟的虚拟化技术,将数据中心的资源虚拟化为资源池,打包对外向用户提供服务。CloudSim恰好体现了此特点,扩展部分实现了一系列接口,提供基于数据中心的虚拟化技术、虚拟化云的建模和仿真功能。

CloudSim是开源的,可以在windows 和linux上运行,用户可以根据自己的研究内容自行扩展 CloudSim,加入自己的代码,重新编译并发布平台即可。

1.2 CloudSim体系结构

CloudSim软件框架的多层设计特征以及其体系结构,如图1所示:

图1 CloudSim层次体系结构

Cloudsim 初始版本(1.0 beta)使用离散事件模拟包SimJava作为仿真引擎,可支持一些核心函数(如事件队列和处理,云系统实体的创建(服务、主机、数据中心、代理器、虚拟机),组件间消息传递、仿真时钟的管理)。然而在CloudSim 2.0以后版本中,由于不支持更高级的操作以及版权问题,SimJava层已经被去除。1)CloudSim核心模拟的引擎:

为了使仿真过程中能够包括多个实体的复杂场景,CloudSim采用了一种新的事件管理框架。类图的核心部分,如图2(a)所示:

图2 (a)CloudSim核心模拟引擎类图

CloudSim:这是主类,主要负责管理事件队列和控制仿真事件的按步骤执行。

DeferredQueue:该类实现了供CloudSim使用的延时事件队列。

FutureQueue:该类实现了供 CloudSim 使用的未来事件队列。

CloudInformationService(CIS):CIS是一个提供了注册、索引、发现资源能力的实体。

SimEntity:这是一个抽象类,负责发送消息给其他实体以及处理接收到的消息,如放弃或处理事件。

CloudSimTags:这个类包含了多个静态事件/命令标签,用来指出当接收或发送事件时需由CloudSim实体采取的动作类型。

SimEvent:该实体类描绘了两个或多个实体之间传送仿真事件的过程。

CloudSimShutdown:该实体类主要是等待所有终端用户和代理实体的结束,然后发送仿真结束信号给CIS。

Predicate:该类是用于从延时队列中选择事件。是一个抽象类,必须创建一个新类来扩展它。一些标准的predicates类,如图2(b)所示:

图2 (b)CloudSim核心模拟引擎类图

2)Cloudsim仿真层:

该层提供了对基于云的虚拟数据中心环境的建模与仿真的支持,包括对虚拟机、内存、容量、带宽的专用管理接口管理。这层要处理的基本问题包括:虚拟机分配到主机的调度,管理应用程序的执行和监测系统的动态状态。一个云提供商如果想要研究在分配其主机到虚拟机上的不同策略的有效性,就必须在这层来实现他们的策略。这些实现策略可以通过扩展编写核心VM分配函数(VM provisioning)来实现。

3)用户代码层:

在Cloudsim结构中最上层是用户代码层:该层提供了一些基本的实体,如主机实体(机器数量、特性等)、应用(任务数和条件)、VMs、用户数和应用类型、代理调度策略。在此处通过扩展给定的基本实体,一个云应用开发商可以执行以下功能:(1)生成一个混合的工作任务负责分配请求和应用配置请求;(2)建立基于云的可用场景和根据自定义配置进行鲁棒性测试;(3)为云和联合云实现自定义应用分配技术。

1.3 CloudSim类的设计图

Cloudsim相关的基础类共同组成了仿真器。Cloudsim整体类的设计图,如图3所示:

图3 Cloudsim整体类设计图

依据CloudSim源代码,有几个核心类:

(1)Cloudlet类:构建云环境下的任务。

(2)DataCenter类:数据中心,提供虚拟化的网格资源,处理虚拟机信息的查询,包含虚拟机对资源的分配策略,云计算采用VM Provisioner处理虚拟机。

(3)DataCenterBroker类:隐藏了虚拟机的管理,如创建、任务提交、虚拟机的销毁等。

(4)Host类:扩展了机器对虚拟机除处理单元(PE)之外的参数分配策略,如带宽、存储空间、内存等,一台Host可对应多台虚拟机。

(5)VirtualMachine类:虚拟机类,运行在Host上,与其它虚拟机共享资源,每台虚拟机由一个拥有者所有,可提交任务,并由VMScheduler类定制该虚拟机的调度策略。

(6)VMScheduler类:虚拟机的调度策略(分配核的策略,时间的,空间的),用来管理执行任务,实现了任务接口。

(7)VMCharacteristics类:提供虚拟机描述。

(8)VMMAllocationPolicy类:虚拟机监视器策略类,描述同一Host上的多台虚拟机共享资源的策略。

(9)VMProvisioner类:实现数据中心的主机到虚拟机的映射。

2 仿真实验与分析

2.1 任务的描述

云计算任务调度,就是如何对用户提交的工作任务进行计算资源分配和管理,即将相互独立的 N项任务分配到M种异构可用的资源上,使得任务的最大完成总时间最小,同时使得资源利用率最高。

在CloudSim中,最简单的一种任务调度就是:根据一定的调度策略,将云任务分配到相应的虚拟机级别上的调度技术。

2.2 具体的实现过程

本文使用云计算仿真平台CloudSim2.1.1进行模拟,并对其进行了扩展,重写了 DataCenterBroker类中提供的的bindCloudletToVm(int cloudletId, int vmId)进行测试模拟,分别采用 First-Come-First-Serve (FCFS)调度算法,贪心(Greedy)调度算法,分别编写新方法bindCloudletsToVmsFCFS()和 bindCloudletsToVmsGreedy()。编程工具为 Eclipse-SDK-4.2.1。

评价指标采用 makespan,即 Maximum Completion Time(MCT),虚拟机上的所有任务的最大完成时间。期望makespan 最小。

设计了两个场景:一个是虚拟机个数固定(5个),PE运算速度在 100-300 MIPS(Million of Instructions Per Second)之间随机产生,云任务长度在 10000-50000 MI(Million of Instructions)之间随机产生,任务个数分别从10,30,50,80到100,在两种调度算法下运行,每次试验运行20次,最后统计每次的makespan平均值。测试结果,如图4所示:

图4 虚拟机=5,云任务个数增加

第二个场景是:云任务数固定(200个),长度在10000-50000 MI之间随机产生,PE运算速度在 100-300 MIPS之间随机产生,虚拟机个数分别从5,10,20,30到50,在两种调度算法下运行,每次试验运行20次,最后统计每次的makespan平均值。测试结果,如图5所示:

图5 云任务个数=200,虚拟机增加

通过自定义的云任务调度算法的扩展实验测试和分析研究,可以看出,不管是在哪种场景下,通过适当的调度策略,可以很好地优化计算资源的分配和管理。同时也很好地说明了CloudSim的扩展仿真是很方便的,效率是比较优异的。

3 总结

虽然云计算得到了全世界知名计算机公司和软件供应商的大力支持,但是作为一个新兴的分布式计算模式,在有效处理基础设施和应用水平复杂性上还是缺乏给定的标准、工具和方法。而CloudSim是云计算环境下的优秀的模拟与仿真工具,通过扩展已有的基本函数,无论是学术界还是企业界,都能够基于特殊场景和配置环境下进行核心算法、政策和应用标准的研究、测试,这对于科研工作者以及企业在云基础设施建设、商业产品的测试和部署等都有着不可估量的作用。

[1]刘鹏.云计算(第二版)[M].北京: 电子工业出版社,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.

猜你喜欢
任务调度虚拟化数据中心
酒泉云计算大数据中心
浅析数据中心空调节能发展趋势
关于建立“格萨尔文献数据中心”的初步构想
基于OpenStack虚拟化网络管理平台的设计与实现
基于改进NSGA-Ⅱ算法的协同制造任务调度研究
对基于Docker的虚拟化技术的几点探讨
H3C CAS 云计算管理平台上虚拟化安全防护的实现
基于小生境遗传算法的相控阵雷达任务调度
云计算环境中任务调度策略
云计算中基于进化算法的任务调度策略