云平台仿真框架cloudsim介绍
云计算仿真框架CloudSim是一款基于Java的开源工具,主要用于模拟和分析云计算环境。它通过虚拟化引擎、数据中心组件、资源分配策略和任务调度算法,支持多种资源分配和调度策略,如虚拟机到主机的分配、虚拟机间共享资源策略等。CloudSim提供可视化扩展模块,如CloudReport和CloudAnalyst,支持跨平台研究。其研究文献涵盖资源分配、任务调度、虚拟机部署等多个领域,具有较高的引用率和影响力。CloudSim因其扩展性、支持复杂场景和丰富的研究应用,成为云计算仿真领域的常用框架。
http://1.johnhome.sinaapp.com/?p=257
幻灯片1
云计算仿真框架CloudSim介绍
令人惊讶地超越了性能的优势,我认为这得益于其简洁的设计和高效的代码结构。
本文遵循署名 3.0 中国大陆 授权协议发布。未经授权禁止转载,违者将承担法律责任。
欢迎交流
2013年04月09日**
**
幻灯片2
提纲
l****概况
l****原理与功能
l****云平台组件模拟
l****数据中心
l****服务代理
l****云信息服务
l****云平台行为模拟
l****云平台策略模拟
l****资源分配
l****任务调度
l****例子与扩展
l****相关研究文献
2
幻灯片3
1.概况
l****1.1 产生背景
云计算在北美得到了广泛应用,必须对资源分配问题和服务调度优化进行相应的性能评估和优化工作,以提升整体云服务的性能水平。
l****构建实际的云平台成本高、效率低
公开获取的测试平台如Yahoo和Amazon等均较为困难,且其规模有限,难以控制运行环境,实验结果难以在不同环境下重复验证。
l****需要可重复的、可控制的、成本低廉的仿真环境
现有的分布式模拟器在虚拟化、应用管理和云计算的即用即付经济驱动方面存在建模支持方面的不足(GridSim、SimGrid、GangSim)
澳大利亚墨尔本大学云计算与分布式系统实验室开发的CloudSim(2009)旨在简化云平台的建设与测试流程。
3
幻灯片4
1.概况
l****1.2 主要特点
l****支持在单一物理节点仿真和大规模云计算数据中心的实例化
l****提供虚拟化引擎以完成虚拟机服务的创建与管理
l****支持对数据中心网络拓扑与应用间消息传递的建模
l****实现了多个层面的资源分配与任务调度的策略,并支持用户自定义
l****支持虚拟机到主机的分配、虚拟机间资源共享策略的定义
l****支持节能的数据中心电力供应建模
l****支持仿真实体的动态加入、暂停与重启
l****通过数据中心代理组件实现了云计算的经济驱动模型
l****研究人员只需关注抽象层的算法、策略、协议的开发
l****可扩展的、开源的、随社区需求进化的框架:1.0- >2.0->2.1->3.0->3.0.2(201211)
4
幻灯片5
提纲
l****概况
l****原理与功能
l****云平台组件模拟
l****数据中心
l****服务代理
l****云信息服务
l****云平台行为模拟
l****云平台策略模拟
l****资源分配
l****任务调度
l****例子与扩展
l****相关研究文献
5
幻灯片6
2.1云平台典型组件模拟
l****实体概念
l****CloudSim模拟云系统中的主要实体Entity
l****Datacenter:提供云平台的硬件资源
l****DatacenterBroker:服务代理商
l****CIS:提供信息资源的注册与查询
l****实体之间可以互相传递、处理事件event
l****CloudSim将实体抽象为SimEntity,包含基本属性与操作:
l****实体初始化
l****事件处理
l****实体销毁
public abstract class SimEntity {
private String name;
private int id;
private SimEvent evbuf;
private int state;
…
public abstract void startEntity();
public abstract void processEvent(SimEvent ev);
public abstract void shutdownEntity();
…
}
[

]()
6
幻灯片7
2.1云平台典型组件的模拟
l****云计算平台数据中心Datacenter
l****模拟云供应商的核心基础设施服务(硬件)
l****可设定指令架构、操作系统、VMM、调度间隔、成本、VM到主机的分配策略
l****管理一组物理主机Host
支持主机的处理器数量、CPU频率、内存容量、存储容量、带宽、VM间共享策略以及静态资源分配策略。提供同构型和异构型的主机配置方案。
l****模拟数据中心网络行为
l****以延时矩阵的模型仿真网络拓扑
l****Network Datacenter模块强化了对网络拓扑的模拟
l****3.0版本支持对应用程序之间的消息传递模拟

7
幻灯片8
2.1云平台典型组件的模拟
l****云计算平台服务代理DatacenterBroker
l****与云服务的客户直接交互,充当客户与数据中心的中间人
l****对客户屏蔽了云数据中心的内部操作
在云服务器上进行参数配置时,需要设置频率、处理器数量、虚拟内存管理技术、网络带宽、存储规模,以及任务资源分配策略,包括时分多占、时分空闲、负载均衡方式。
该方案在处理器需求、指令长度限制以及文件大小管理方面均展现出显著优势,具体体现在对CPU、内存和带宽的使用模式优化上。
l****用户只需向broker提交自己的上述服务请求即可
l****定义一系列属性与函数,用于客户与数据中心的协调
l****VM创建请求
l****任务到VM的绑定策略
public void submitVmList(List <? extends Vm> list) {
getVmList().addAll(list);
}
public void submitCloudletList(List <? extends Cloudlet> list){
getCloudletList().addAll(list);
}
public void bindCloudletToVm(int cloudletId, int vmId){
CloudletList.getById(getCloudletList(), cloudletId).setVmId(vmId);
}
8
幻灯片9
2.1云平台典型组件的模拟

l****云计算平台信息服务中心CloudInformationService
l****扮演平台的黄页服务角色
l****对新资源进行注册、加入索引
l****对实体的服务请求进行查询
l****在CloudSim初始化时自动创建
public class CloudInformationService extends SimEntity {
private final List
private final List
@Override
…
public void processEvent(SimEvent ev) {
int id = -1;
switch ( ev.getTag() ) {
case CloudSimTags.REGISTER_RESOURCE:
resList.add( (Integer) );break;
case CloudSimTags.REGISTER_RESOURCE_AR:
resList.add( (Integer) ev.getData() );
arList.add( (Integer) ev.getData() ); break;
case CloudSimTags.RESOURCE_LIST:
id = ( (Integer) ev.getData() ).intValue();
super.send(id, 0L, ev.getTag(), resList); break;
}
public boolean resourceExist(int id) {}
…
}
9
幻灯片10
2.2云平台典型行为的模拟

l****行为Event
l****模拟了云平台中典型行为:虚拟机事件、任务事件、其它事件
该事件的关键属性包括:内部类型信息、事件发生的时间戳、事件等待的时间长度、目的实体标识符、源实体标识符、用户自定义的标签信息以及事件数据。
l****处理过程:
生成的事件会被加入到等待队列FutureQueue中,在等待时间结束后未被处理的事件会被转移至DefferedQueue。
l****优点:任务被创建后可以随时被取消。
10
幻灯片11
2.2云平台典型行为的模拟
l****虚拟机事件、任务事件、资源事件
l****创建VM(VM_CREATE)
l****添加VM数据(VM_DATA_ADD)
l****删除VM数据(VM_DATA_DEL)
l****迁移VM(VM_MIGRATE)
l****销毁VM(VM_DESTROY)
l****任务提交(CLOUDLET_SUBMIT)
l****任务暂停(CLOUDLET_PAUSE)
l****任务恢复(CLOUDLET_RESUME)
l****全局资源注册(REGISTER_REGIONAL_GIS)
l**……**
11
幻灯片12
2.3云平台典型策略的模拟
l****资源分配、任务调度策略
l****虚拟机到主机的分配(VmAllocationPolicy):合适的主机资源等
l****处理器能力分配(PeProvisioner)
l****带宽分配(BwProvisioner)
l****内存分配(RamProvisioner)
l****资源利用模式(UtilizationModel)
l****虚拟机间共享资源的实时调度(VmScheduler)
虚拟化管理模块(l****VMM)在处理器资源跨虚拟机共享方面的策略设计为:基于空间的分片调度(VmSchedulerSpaceShared)和基于时间的片断调度(VmSchedulerTimeShared)两种实现方案。
l****虚拟机内对任务的调度(CloudletScheduler)
The virtual machine adopts a mechanism for sharing processor resources among multiple Cloudlet schedulers, namely Space-Based Sharing and Time-Based Sharing.
12
幻灯片13
2.3云平台典型策略的模拟
l****资源分配、任务调度策略
l****继承相应的类,可进行扩展,实现自己的策略
l****CloudSim元数据架构图
l****以虚拟机的主机分配策略为例
l****寻求能满足VM需求的Host,然后把VM创建到该Host上
l****核心函数:public abstract boolean allocateHostForVm(Vm vm);
l****CloudSim已实现的一种分配策略VmAllocationSimple
**[

]()**
13
幻灯片14
提纲
l****概况
l****原理与功能
l****云平台组件模拟
l****云平台行为模拟
l****云平台策略模拟
Cloudsim的元数据结构图,蓝色为用于二次开发的:
[

]()
层次结构图(cloudsim 2版本的):
[

]()
[

]()
l****例子与扩展
l****云任务到虚拟机绑定策略的设计与测试
l****典型应用扩展
l****相关研究文献
14
幻灯片15
3.1实例呈现
0.编程环境准备:首先,配置JRE环境;其次,下载clodsim包并解压;然后,设置Java类路径环境变量;最后,将Eclipse作为开发工具导入。
整理、验证后的cloudsim 安装与配置:
0.安装配置Java环境,Java6即可支持CloudSim3.0了。
1.下载对应的包
2.把jar包添加到classpath中,这步可以不用。
先设置CloudSimHome
Starts with the root directory%JAVA_HOME%\lib,and includes the dt and tools JAR files from%JAVA_HOME%\lib. Additionally, the following JAR files are located in the Apache Software Foundation application directory\lib: F:\Application\Apache Software Foundation\lib; the Microsoft SQL Server JDBC Driver JAR files located in C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib; and the CloudSim home directory\jars, including cloudsim-3.0.2, cloudsim-3.0.2-sources, cloudsim-examples-3.0.2, and cloudsim-examples-3.0.2-sources.
3.下载****flanagan.jar包用于运行例子
https://groups.google.com/group/cloudsim/attach/4391639148101948/flanagan.jar?part=4&authuser=0
在classpath中加入:
;%CloudSimHome%\jars\flanagan.jar
4.
运行步骤( Eclipse中执行)
请在Eclipse主程序中创建一个新的项目,然后依次选择“File”→“New”→“Project”命令,以打开“New Project”窗口。
新建一个工程
(2)选择“Java Project”,单击“Next”,创建一个Java工程

请为Java工程命名,取消选中"Use default location",进入CloudSim包目录,并指定该目录。

Next
单击"Next"按钮,即可显示Java工程的配置界面,该界面的选项卡包含源代码、工程和库等信息。

[

]()
(5)单击“Finish”按钮完成创建Java工程的工作
F在Eclipse的主界面上,选中一个实例的源代码,然后选中,右键运行程序
仿真步骤
1. 初始化CloudSim库
2.创建数据中心:
2.1.创建处理单元Pe并设置供应策略
2.2.创建物理主机:配置主机ID、内存、带宽及其供应策略,硬盘存储配置,PE列表,以及对主机内虚拟机间的CPU共享调度策略。随后创建包含多个主机的列表。
2.3.创建数据中心特征对象:
架构配置设置,系统类型设置,虚拟化类型设置,主机配置设置,时间区设置,预算参数设置:处理器预算,内存预算,存储预算,带宽预算。
2.4.创建数据中心:
请设置配置名称,确保相关特性,包括主机列表和虚拟机至物理机的分配策略,SAN网络存储配置,以及调度周期。
3.创建数据中心代理
设置名称
4.创建虚拟机:
设置虚拟机ID,MIPS(处理能力),镜像大小,内存,带宽,CPU核数,VMM类型
创建虚拟机列表,提交给数据中心代理。
5.创建云任务:
任务ID设置、任务长度参数、输入文件大小设置、输出文件大小参数、CPU核数需求以及资源利用模式(涉及CPU、内存和带宽)
可创建云任务列表,也要提交给数据中心代理。
6.指定任务到虚拟机的分配策略
7.启动仿真
8.结束仿真,统计、输出结果
这个例子的虚拟机部署与任务分配示意图:
对模型,策略进行对比的几个参数:耗时,CPU、内存、带宽占用率及变化率
l****应用场景
在CloudSim框架中,优化DataCenterBroker类的任务绑定到虚拟机的机制,采用两种绑定策略:基于简单原则和基于贪心原则。在云平台配置和任务参数一致的条件下,对比所设计的两种绑定策略在完成任务所需时间上的差异。
l****相对简化的任务绑定策略实现


15
幻灯片16
3.1实例呈现







l****主要步骤
l****0.编程环境准备:JDK6,CloudSim3.0,flanagan.jar(运行例子),eclipse
l****1.初始化CloudSim库
l****2.创建数据中心:创建处理单元,创建物理主机,创建数据中心特征对象
l****3.创建数据中心代理
l****4.创建虚拟机
l****5.创建云任务
l****6.指定任务到虚拟机的分配策略
l****7.启动仿真
l****8.结束仿真,统计、输出结果
16
幻灯片17
3.1实例呈现

l****分析
l****对模型、策略的性能评估参数:耗时,CPU、RAM、带宽占用率及变化率
l****简单绑定策略VS贪心绑定策略
| 数据中心 | 物理机配置 | 虚拟机配置 | 任务配置 |
|---|---|---|---|
| 3台物理机, 9台虚拟机 | CPU:2400*4MIPS | CPU:1000*1MIPS | CPU:单核 |
| 内存:10000MB | 内存:2048MB | 长度:17000-82000MI | |
| 带宽:1000000Mbps | 带宽:1000Mbps | 输入大小:350 bytes | |
| 硬盘:1000000MB | 镜像:10000MB | 输出大小:300 bytes | |
| VM调度策略:TimeShared | 任务调度策略:SpaceShared | 绑定策略:简单绑定或贪心绑定 | |
| VMM类型:Xen | 数量:15 |
**
**

17
幻灯片18
3.2典型应用扩展
l****利用CloudSim的仿真引擎进行应用订制与扩展
lCloudReport:为云计算环境提供虚拟化模拟,支持生成网页式报告文档,并具备插件化扩展能力。
CloudAnalyst专注于跨地区的大型社交网站,如Facebook,对用户需求的优化调度。
RealCloudSim:基于CloudSim和NS2构建的虚拟机分配模拟器,支持读取BRITE格式的网络拓扑,并通过可视化界面进行呈现。
l****CloudAuction:扩展CloudSim以支持基于拍卖的服务机制
l****典型应用扩展演示
扩展工具的展示:
云报告依托云sim仿真引擎,支持云计算环境的动态展示,能够生成交互式网页报告,支持通过插件扩展功能定制化部署,具备灵活的插件化扩展机制,便于用户根据需求进行功能定制。
该系统基于cloudsim平台,用于分析跨区域的社会网络,如Facebook这样的平台对其云平台调度机制的影响。
REALcloudSim-9.0:基于CloudSim平台,采用NS2进行虚拟机分配模拟,支持读取BRITE拓扑格式,并通过可视化界面展示网络架构。
cloudauction:扩展cloudsim以支持对拍卖机制的测试,
CReST, Cloud Research and Simulation Toolkit(今年国际云计算与服务科学大会将展示)
是什么,能做什么,怎么用。
18
幻灯片19
提纲
l****概况
l****原理与功能
l****云平台组件模拟
l****云平台行为模拟
l****云平台策略模拟
l****例子与扩展
l****相关研究文献
19
幻灯片20
4.基于CloudSim的研究文献
CloudSim自初发布以来,便获得了广泛认可与应用,成为学术界广受欢迎的云平台仿真框架。
l****抽取云计算特点,简化平台的构建,效率高;理论模型
(截至2013-04-09):
这部分进一步说明了cloudsim可以做什么,也提供了一些研究思路
IEEE:26篇与cloudsim相关的论文
EI索引的有62篇, 有些是专业的集群、云与网络计算的会议
CNKI收录的82篇:硕士论文(25),博士论文(1),都是近期一两年毕业的,核心期刊论文
在谷歌学术数据库中,相关研究总数达936篇。其中,引用次数最多的论文是来自cloudsim开发团队的研究者所著。其次,还有几篇论文聚焦于如何利用cloudsim进行云计算资源分配与调度策略设计以及优化问题的研究。此外,近年来关于云计算数据中心节能优化的文章也逐渐增多。
资源分配策略,
任务调度算法
虚拟机部署模型
资源负载均衡
虚拟机迁移策略
将mapreduce思想应用于cloudsim
| 数据库 | 数量 | 备注(检索于2013-04-09) |
|---|---|---|
| EI | 60+ | 较多是专业的集群、云与网格计算会议 |
| IEEE | 25+ | |
| CNKI | 80+ | 学位论文,核心期刊 |
| Google Scholar | 600+ | 2013年近90篇 |
20
幻灯片21
4.基于CloudSim的研究文献
主要思路:提出或优化某个算法模型,增强CloudSim接口功能,进行性能验证和对比分析,重点关注耗时、资源占用率以及变化率等指标。
l****资源分配策略
l****任务调度算法
l****虚拟机部署、迁移策略
l****资源负载均衡
l****节能模型
l****动态信任模型
l****数据加密模型

21
幻灯片22
相关资源
l** CloudSim主页:www.cloudbus.org/cloudsim**
l** CloudSim代码托管:code.google.com/p/cloudsim(源码分析)**
l** CloudSim讨论组:groups.google.com/forum/?fromgroups#!forum/cloudsim**
l**** _详细解析:CloudSim– 基于建模和仿真的云计算环境建模与资源 provisioning算法评估(Citations-223)**
在L3.0版本中新增的算法说明部分:最优在线确定性算法和自适应启发式算法用于实现高效虚拟机动态合并,2012年发布。
l** 刘鹏.云计算[M].北京:电子工业出版社,2011.**
Florian Fittkau博士在德国的凯尔大学完成了软件迁移支持云部署模拟方面的博士学位论文,2012年完成。
22
幻灯片23
云计算仿真框架CloudSim介绍
谢谢!
云计算仿真软件的性能令人意外地超越了现有的软件,这得益于其简单的设计和代码的简洁性。
| 名称 | 平台类型或语言 | 虚拟化建模 | 网络建模 | 物理环境建模 | 应用建模 | 通信建模 | 图形界面 | 代码许可 | 开发人员 | 备注 |
|---|---|---|---|---|---|---|---|---|---|---|
| CloudSim | Java lib/API | 支持 | 支持 | 简单:耗能 | 计算,数据传输 | 简单 | 无 | 开源 | 墨尔本大学 | 扩展性较好;发布较早较成熟;常用作其它模拟器的参照 |
| CReST | Java App | 支持 | 支持 | 简单:温度,耗能 |
简单 | 简单 | 有 | 开源 | Bristol大学 | |
| FLE | App | 不支持 | 不支持 | 支持:基于流体力学的温度、空调模拟 | 简单 | 简单 | 有 | 公司所有 | 富士实验室 |
|---|
简单 | 不支持 | 有 | 商业 | Applied Math Modelling Inc. | |
| SimGrid | C lib/API | 支持 | 支持 | 不支持 | 简单 | 不支持 | 无 | 开源 | INRIA, Sci. & Tech. Institute |
|---|
简单 | | 无 | 学院所有 | Indian Institute of Technology, Bombay | |
| Greencloud | NS2,C++ | 简单 | 全面 | 支持耗能建模 | 简单计算,数据传输 | 复杂 | 有限 | 开源 | University of Luxembourg |
|---|
CloudSim
http://www.cloudbus.org/cloudsim/
Split***
CloudReports
https://github.com/thiagotts/CloudReports
cloudsim的可视化扩展
Split***
CloudAnalyst
采用云sim技术,对大型社交平台的各地区的用户需求进行优化调度机制的研究。
在大型社交网络中,采用云sim技术,对各地区的用户需求进行调度优化的研究。
针对大型社交网站的不同地区用户群体的需求,研究云sim技术的优化调度方案。
大型社交平台各地区的用户需求优化调度研究,采用云sim技术进行。
Split***
VirtualCloud – A Cloud Environment Simulator
源代码未开源,但设计的一些思路值得借鉴。
发布于2010年秋季,灵感主要来源于cloudsim,仅实现了基础功能。结构较为简单,目前尚未发现后续版本。支持模拟资源分配策略,并突出了应用程序间的相互依赖关系。
在应用程序(任务)建模过程中,我们考虑了三种方案:最大利用率方案、分布式执行方案以及基于时间的方案。云sim目前仅实现了最大利用率方案,这使其成为最简单的任务建模方案。
在资源分配方面,该系统实现了对硬件和软件的动态分配,而cloudsim仅在虚拟机初始化阶段实现静态分配。
不同虚拟机之间的通信,包括同一物理主机内不同虚拟机间的通信以及不同物理主机之间的虚拟机通信。虚拟云开发了数据包以模拟通信过程,而不同物理主机上的虚拟机通信则由虚拟机管理器(VMM)进行控制。目前,cloudsim对虚拟机之间的通信仅在应用实例化之前进行处理。
在迁移策略方面,cloudsim实现了特定物理主机的迁移策略,但未考虑目标主机的影响,而virtualcloud将实现这一方案。
云sim基于datacenterbroker存储物理机和虚拟机列表,负责管理模块。而virtualcloud则管理了所有相关信息,包括虚拟机列表、物理主机,以及部署与迁移策略的处理。
可扩展性方面,cloudsim依赖于源代码层面的物理机和虚拟机配置参数,而virtualcloud则通过XML文件进行配置设置。
在资源影响方面,cloudsim未能充分考虑一种资源利用对另一种资源的影响。例如,对硬盘的操作会产生CPU负载,而virtualcloud则对此有所考虑。
[

]()
Split***
CReST
the Cloud Research Simulation Toolkit
采用多层次抽象模拟策略,该方案从物理硬件、能量使用到数据中心的热能流动,涵盖至网络化基础设施,并延伸至满足用户动态需求的虚拟化应用服务。
Split***
GreeCloud
基于NS2,强调节能调度
Split***
iCanCloud:
What is iCanCloud?
iCanCloud is a simulation platform designed to model and simulate cloud computing systems, targeting users who closely interact with such systems. Its primary objective is to predict the cost-performance trade-offs for a given set of applications running on specific hardware and subsequently offer valuable insights into these costs. However, iCanCloud is applicable to a broad spectrum of users, ranging from basic active users to developers of large-scale distributed applications.
Features
The standout features of the iCanCloud simulation platform are as follows:
Existing and nonexisting cloud computing architectures are capable of being modeled and simulated.
A versatile cloud virtualization module offers a straightforward approach for integrating and evaluating both new and existing cloud brokerage policies.
可配置的虚拟机能够快速模拟单核/多核系统。
iCanCloud提供了存储系统的一系列配置选项,包括本地存储系统模型、远程存储系统模型(如NFS)以及并行存储系统模型(如并行文件系统和RAID系统)。
iCanCloud offers an intuitive graphical user interface (GUI) designed to streamline the creation and personalization of large-scale distributed models. This GUI is particularly advantageous for managing a repository of pre-configured virtual machines (VMs), handling cloud computing infrastructure design, facilitating experimental prototyping, launching experiments from the GUI, and generating graphical reports. The software is designed to support a wide range of use cases, including enterprise-scale distributed model development, cloud computing infrastructure design, experimental prototyping, and performance analysis. The platform also provides essential features such as model versioning, dependency management, and scalability optimization.
iCanCloud offers a POSIX-based API and a customized MPI library for application modeling and simulation. Additionally, multiple methods are available within iCanCloud: utilizing real application traces, constructing state graphs, and directly programming new applications within the simulation platform.
The platform's functionality can be enhanced by incorporating additional components into the iCanCloud component repository.
