Cloudism3.0.3学习与使用(一)

Cloudism3.0.3学习与使用(一)

Posted by sunlianglong on June 27, 2018

一、Cloudsim

  现在的云计算领域,一直在追求一种安全可靠、容错率高、可持续和可扩展的计算服务的领先技术。而在实际开发云产品之前,及时的利用可重复、可控的方法来评估算法、应用和策略显得尤为重要。CloudSim的主要目标就是提供一个通用的,可扩展的仿真框架,可以对新兴的云计算基础设施和应用服务进行无缝建模,仿真和实验。

  CloudSim是一款云计算仿真软件,其由澳大利亚墨尔本大学网格实验室和Gridbus项目于2009年推出,它是一个函数库,可在Windows和Linux系统上跨平台运行。

  Cloudsim可通过扩展的方式来提供GUI界面(CloudReports),当然也有很多其他的扩展,具体信息详见官网,在本博客中,我们着重分析Cloudsim的源码,和实现虚拟机的的算法调度分配,不会涉及太多任务分配的内容。

  CloudSim的体系结构主要分为四个层次,如下图所示。

  • Cloudsim仿真层为云计算的虚拟数据中心环境的配置和仿真提供支持,包括虚拟机、内存、容量及带宽的接口,该层用于主机分配到虚拟机的策略研究,并通过扩展核心的虚拟机调度函数实现。
  • Cloudsim最上层是用户代码层,该层提供一些基本的实体,如主机、应用、虚拟机,用户数和应用类型,以及代理调度策略等。通过扩展这些实体,云应用开发人员可以在该层开发各种用户需求分布、应用配置、云可用性场景等应用调度技术,并执行Cloudsim支持的云配置的Robust测试。

  通过扩展Cloudsim提供的基本功能,研究者能基于特定环境和配置进行测试,完成云计算关键技术的开发研究。CloudSim继承了GridSim并支持云计算的研究和开发,CloudSim的组件工具均为开源的。其中CloudSim具有两个独特功能(具体详尽的功能可以见官网):

  • 第一,提供虚拟化的引擎,使用户可在数据中心的节点上建立和管理独立的、协同的虚拟化服务;
  • 第二,在对虚拟化服务分配处理核心时,可在时间共享和空间共享之间灵活切换。

  在CloudSim函数库中有几个主要核心类

  • (1)Cloudlet类:构建云环境下的任务。
  • (2)DataCenter类:数据中心,提供虚拟化的网格资源,处理虚拟机信息的查询,包含虚拟机对资源的分配策略,云计算采用VMProvisioner处理虚拟机。
  • (3)DataCenterBroker类:隐藏了虚拟机的管理,如创建、任务提交、虚拟机的销毁等。
  • (4)Host类:扩展了机器对虚拟机除处理单元(PE)之外的参数分配策略,如带宽、存储空间、内存等,一台Host可对应多台虚拟机。
  • (5)VirtualMachine类:虚拟机类,运行在Host上,与其它虚拟机共享资源,每台虚拟机由一个拥有者所有,可提交任务,并由VMScheduler类定制该虚拟机的调度策略。
  • (6)VMScheduler类:虚拟机的调度策略,用来管理执行任务,实现了任务接口。
  • (7)VMCharacteristics类:提供虚拟机描述。
  • (8)VMMAllocationPolicy类:虚拟机监视器策略类,描述同一Host上的多台虚拟机共享资源的策略。
  • (9)VMProvisioner类:实现数据中心的主机到虚拟机的映射。

  但是我一直没找到VMProvisioner类在哪里,翻遍了Cloudsim 3.0 的API文档…

二、Cloudism配置与样例运行

Cloudism配置

  安装jdk 1.8 ,下载cloudsim,其实下载这种东西,国内的博客和资料都太误导人了,比如:必须要用csdn C币,pudn 下载积分等等。其实国外的这些开源代码必定有官网支持下载,或者开源在github上,我们只需掌握搜索技巧就可以很简单的找到。国内的这种付费下载很多时候都不是自己的知识产权,都是copy别人的东西,还天天嚷嚷着付费下载,在博客里到处宣传,实在是不妥。

  比如Cloudism,官网网不用翻墙:CloudSim:云计算基础架构和服务的建模和仿真框架。,CloudSim上提供了多个教程和博客文章,github上也有[历史版本和最新版本]。另外,还有一个在线课程介绍了CloudSim Simulation Framework,涵盖了安装,体系结构和执行描述以及示例仿真。(https://github.com/Cloudslab/cloudsim/releases “历史版本和最新版本”)。还有:cloudsim API文档

  接着,配置环境变量,将cloudsim3.0.3/jar 下面的相关包导入环境变量。同时下载flanaga.jar包,下载好了之后将这个jar包放在cloudsim的jars文件夹里。

  打开eclipse,File->New->Java Project,取消Use Default Location,选择Location为自己下载的cloudsim的位置,,Project Name 使用自动出现的cloudsim-3.0.3,选择默认的其他设置,点击Finish。在开发伊始使用IDEA也是可以的,操作基本一样。

  导入进去之后,工程应该如下图:

  可以看到source目录下有报错,其实那是apache的相关包没有导入,刚开始不知道要不要用到,所以起初先没管。在访问Cloudsim官网时,看到了报错的原因以及所需的架包。“要成功配置CloudSim Simulation工具包,我们必须下载一个名为’commons-math3-3.6.1-bin.zip’的文件,这里是下载地址,完成后提取'commons-math3-3.6.1.jar',导入eclipse依赖。”

样例运行

  Cloudsim 3.0 给出的样例具有简单的功能,最新的4.0版本的样例功能详见官网说明,下面给出3.0版本的每个样例模拟的环境:

  • (1)CloudSimExample1.Java:创建一个一台主机、一个任务的数据中心
  • (2)CloudSimExample2.java:创建一个一台主机、两个任务的数据中心。两个任务具有一样的处理能力和执行时间
  • (3)CloudSimExample3.java:创建一个两台主机、两个任务的数据中心。两个任务对处理能力的需求不同,同时根据申请虚拟机的性能不同,所需执行时间也不相同
  • (4)CloudSimExample4.java:创建两个数据中心,每个数据中心一台主机,并在其上运行两个云任务
  • (5)CloudSimExample5.java:创建两个数据中心,每个数据中心一台主机,并在其上运行两个用户的云任务
  • (6)CloudSimExample6.java:创建可扩展的仿真环境
  • (7)CloudSimExample7.java:演示如何停止仿真
  • (8)CloudSimExample8.java:演示如何在运行时添加实体
  • (9)network:包含网络仿真的例子
  • (10)power:包含演示CloudSim power-aware特点的例子

  运行示例二,查看结果: