一、实验名称
云平台仿真框架CloudSim应用
二、云平台仿真框架CloudSim介绍
CloudSim是在离散事件模拟包SimJava上开发的函数库
1.功能及组件
CloudSim 独特功能有:一是提供虚拟化引擎,旨在数据中心节点上帮助建立和管理多重的、独立的、协同的的虚拟化服务;二是在对虚拟化服务分配处理核心时能够在时间共享和空间共享之间灵活切换。
CloudSim平台有助于加快云计算的算法、方法和规范的发展。CloudSim的组件工具均为开源的。CloudSim的软件结构框架和体系结构组件包括SimJava、GridSim、CloudSim、UserCode四个层次。
云计算与网格计算的一个显著区别是云计算采用了成熟的虚拟化技术,将数据中心的资源虚拟化为资源池,打包对外向用户提供服务,Cloudsim体现了此特点,扩展部分实现了一系列接口,提供基于数据中心的虚拟化技术、虚拟化云的建模和仿真功能。通常,数据中心的一台主机的资源可以根据用户的需求映射到多台虚拟机上,因此,虚拟机之间存在对主机资源的竞争关系。Cloudsim提供了资源的监测、主机到虚拟机的映射功能。
2.CloudSim特点
(1)实体的停用(保持)。
(2)不同状态下实体上下文切换(如等待激活)。模拟过程的停用和恢复。
(3)在运行时创建新的实体。
(4)在运行时终止和重新启动模拟运行。可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型,支持云计算的研究和开发,并提供了以下新的特点: a:支持大型云计算的基础设施的建模与仿真;b:一个自足的支持数据中心、服务代理人、调度和分配策略的平台。
三、CloudSim配置
1.JDK环境搭建
安装JDK 1.8(CloudSim-4.0平台要求JDK版本1.8及以上),设置环境变量Path和ClassPath
JAVA_HOME
E:\jdk1.8\jdk
JRE_HOME
E:\jdk1.8\jre
CLASSPATH
.;%JAVA_HOME%\lib;%JRE_HOME%;D:\Project\CloudSim;
Path
%JAVA_HOME%\bin;
2.CloudSim配置
下载CloudSim-4.0JAR包,设置ClassPath,将所下载JAR包的路径添加至ClassPath
3.在Eclipse中创建工程
点击finish按钮,创建工程。
4.使用CloudSim仿真的一般步骤
(1) 初始化GridSim 库
CloudSim.init(num_user, calendar, trace_flag);
(2) 创建数据中心,在CloudSim仿真平台中,一个数据中心由一个或多个Machine组成,一个Machine是由一个或多个PEs或CPUs组成。
Datacenter datacenter0 =createDatacenter("Datacenter_0");
(3) 创建代理Broker
DatacenterBroker broker = createBroker();
int brokerId = broker.getId();
(4) 创建虚拟机
//创建虚拟机列表
vmlist = new ArrayList
//创建时为虚拟机指定Broker
Vm vm = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size, vmm,
newCloudletSchedulerTimeShared());
//将虚拟机加入虚拟机列表
vmlist.add(vm);
//向相应代理Broker提交虚拟机列表
broker.submitVMList(vmlist);
(5) 创建云任务
cloudletList = newArrayList
//创建时指定任务的用户ID,BrokerID
Cloudlet cloudlet = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel, utilizationModel,utilizationModel);
cloudlet.setUserId(brokerId);
cloudlet.setVmId(vmid);
//将任务加入任务列表
cloudletList.add(cloudlet );
//向代理Broker提交任务列表
broker.submitCloudletList(cloudletList);
(6) 启动仿真
CloudSim.startSimulation();
(7) 结束仿真
CloudSim.stopSimulation()
(8) 在仿真结束后统计结果
List
printCloudletList(newList);
5.在Eclipse中使用CloudSim进行仿真