云计算仿真框架CloudSim介绍
幻灯片1云计算仿真框架CloudSim介绍jiangzw#ihep.ac.cn(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)(本文基于署名2.5 中国大陆许可协议发布,欢迎转载、演绎,但是必须保留本文的署名 John 并包含本文链接。)欢迎交流2013年04月09日
幻灯片1
云计算仿真框架CloudSim介绍
(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)
欢迎交流
=========================2022-04-20更新=============================
有人想学习文中提到的PPT,实在没有,奈何此文时间确实是太久远了,也不记得原作是不是有博客来着了。索性方便本文读者,去找了找,找到一篇博客对原PPT还原较好。
需要的可以去:云计算仿真框架CloudSim介绍(截图版)查看,若模糊,点开大图即可。
或者直接去原文查看:云计算仿真框架CloudSim介绍
保存截图的目的也是防止原文失效。
=========================2022-04-20更新=============================
2013年04月09日
幻灯片2
提纲
l 概况
l 原理与功能
l 云平台组件模拟
l 数据中心
l 服务代理
l 云信息服务
l 云平台行为模拟
l 云平台策略模拟
l 资源分配
l 任务调度
l 例子与扩展
l 相关研究文献
2
幻灯片3
1.概况
l 1.1 产生背景
l 云计算得到广泛使用(北美),需要对云环境下的资源分配与服务调度进行性能评测、优化等
l 构建实际的云平台成本高、效率低
l 公开的测试平台(Yahoo,Amazon)不易申请,规模较小,环境难以控制,结果难以重现
l 需要可重复的、可控制的、成本低廉的仿真环境
l 已经出现的分布式模拟器对虚拟化、应用管理及云计算的即用即付经济驱动的建模支持不足(GridSim,SimGrid,GangSim)
l 为简化云平台的建设与测试过程,澳大利亚墨尔本大学云计算与分布式系统实验室开发了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
l 可以设定主机的处理器数目、CPU主频、RAM、硬盘、带宽、VM间共享资源的策略、资源静态分配策略。支持同构与异构的主机配置。
l 模拟数据中心网络行为
l 以延时矩阵的模型仿真网络拓扑
l Network Datacenter模块强化了对网络拓扑的模拟
l 3.0版本支持对应用程序之间的消息传递模拟
7
幻灯片8
2.1云平台典型组件的模拟
l 云计算平台服务代理DatacenterBroker
l 与云服务的客户直接交互,充当客户与数据中心的中间人
l 对客户屏蔽了云数据中心的内部操作
l 设置VM参数:主频、处理器数目、VMM类型、带宽、镜像大小,对云任务的调度策略(时间共享、空间共享、动态负载)
l 定义Cloudlet:对处理器要求、指令长度、输入与输出文件大小,对CPU、RAM、带宽利用模式
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<Integer> resList;
private final List<Integer> arList;
@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 event的重要属性:内部类型、发生时间、等待时间、目的实体ID、源实体ID、用户定义的标签、数据
l 处理过程:
l event被创建后,被放入等待队列FutureQueue,在等待时间结束时未被处理的event会被移入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)
l 虚拟机对收到的多个cloudlet共享处理器资源的策略:空间共享(CloudletSchedulerSpaceShared),时间共享(CloudletSchedulerTimeShared)
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的元数据结构图,蓝色为用于二次开发的:
l 例子与扩展
l 云任务到虚拟机绑定策略的设计与测试
l 典型应用扩展
l 相关研究文献
14
幻灯片15
3.1实例呈现
整理、验证后的cloudsim 安装与配置:
0.安装配置Java环境,Java6即可支持CloudSim3.0了。
1.下载对应的包
2.把jar包添加到classpath中,这步可以不用。
先设置CloudSimHome
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;F:\Application\Apache Software Foundation\lib;F:\Application\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\sqljdbc4.jar;F:\Application\Microsoft SQL Server JDBC Driver 3.0\sqljdbc_3.0\enu\sqljdbc.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msbase.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\mssqlserver.jar;C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib\msutil.jar;%CloudSimHome%\jars;%CloudSimHome%\jars\cloudsim-3.0.2.jar;%CloudSimHome%\jars\cloudsim-3.0.2-sources.jar;%CloudSimHome%\jars\cloudsim-examples-3.0.2.jar;%CloudSimHome%\jars\cloudsim-examples-3.0.2-sources.jar;
3. 下载 flanagan.jar包用于运行例子
https://groups.google.com/group/cloudsim/attach/4391639148101948/flanagan.jar?part=4&authuser=0
在classpath中加入:
;%CloudSimHome%\jars\flanagan.jar
4.
运行步骤( Eclipse中执行)
(1)首先启动Eclipse主程序,在Eclipse主界面上选择File→New→Project命令,打开“New Project”窗口
新建一个工程
(2)选择“Java Project”,单击“Next”,创建一个Java工程
(3)填写Java工程的名称,取消选择复选框“Use default location”,浏览CloudSim包(含源代码)所在的目录,并选定该目录
(4)单击“Next”按钮,显示Java工程的配置界面,该界面的选项卡包括源代码、工程和库等信息
(5)单击“Finish”按钮完成创建Java工程的工作
F在Eclipse的主界面上,选中一个实例的源代码, 然后选中,右键 运行程序
l 应用场景
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的仿真引擎进行应用订制与扩展
l CloudReport:提供云计算环境的可视化模拟,能生成网页报告,支持插件式的扩展。
l CloudAnalyst:研究跨地区的大规模社交网站如facebook对用户群需求的优化调度。
l RealCloudSim:基于CloudSim,NS2的虚拟机分配模拟器,能读取BRITE格式的网络拓扑并可视化呈现。
l CloudAuction:扩展CloudSim以支持基于拍卖的服务机制
l 典型应用扩展演示
18
幻灯片19
提纲
l 概况
l 原理与功能
l 云平台组件模拟
l 云平台行为模拟
l 云平台策略模拟
l 例子与扩展
l 相关研究文献
19
幻灯片20
4.基于CloudSim的研究文献
l CloudSim发布时间不长,但得到不少认可与应用,是学术界很流行的云平台仿真框架
l 抽取云计算特点,简化平台的构建,效率高;理论模型
(截至2013-04-09):
数据库 | 数量 | 备注(检索于2013-04-09) |
EI | 60+ | 较多是专业的集群、云与网格计算会议 |
IEEE | 25+ | |
CNKI | 80+ | 学位论文,核心期刊 |
Google Scholar | 600+ | 2013年近90篇 |
20
幻灯片21
4.基于CloudSim的研究文献
l 主要应用思路:提出或改进某个模型(算法),扩展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– A Toolkit for Modeling and Simulation of Cloud Computing Environments and Evaluation of Resource Provisioning Algorithms(Citations-223)
l 3.0加入的算法说明:Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient Dynamic Consolidation of Virtual Machines in Cloud Data Centers,2012
l 刘鹏.云计算[M].北京:电子工业出版社,2011.
l Florian Fittkau. Simulating Cloud Deployment Options for Software migration support[D].Germany:University of Kiel,2012
22
幻灯片23
云计算仿真框架CloudSim介绍
谢谢!
云计算仿真软件汇总:
名称 | 平台类型或语言 | 虚拟化建模 | 网络建模 | 物理环境建模 | 应用建模 | 通信建模 | 图形界面 | 代码许可 | 开发人员 | 备注 |
CloudSim | Java lib/API | 支持 | 支持 | 简单:耗能 | 计算,数据传输 | 简单 | 无 | 开源 | 墨尔本大学 | 扩展性较好;发布较早较成熟;常用作其它模拟器的参照 |
CReST | Java App | 支持 | 支持 | 简单:温度,耗能 | 简单 | 简单 | 有 | 开源 | Bristol大学 | |
FLE | App | 不支持 | 不支持 | 支持:基于流体力学的温度、空调模拟 | 简单 | 简单 | 有 | 公司所有 | 富士实验室 | |
CoolSim | SaaS | 不支持 | 不支持 | 支持:基于流体力学的温度、空调模拟 | 简单 | 不支持 | 有 | 商业 | Applied Math Modelling Inc. | |
SimGrid | C lib/API | 支持 | 支持 | 不支持 | 简单 | 不支持 | 无 | 开源 | INRIA, Sci. & Tech. Institute | |
VirtualCloud | Java App | 支持 | 不支持 | 不支持 | 简单 | 无 | 学院所有 | Indian Institute of Technology, Bombay | ||
Greencloud | NS2,C++ | 简单 | 全面 | 支持耗能建模 | 简单计算,数据传输 | 复杂 | 有限 | 开源 | University of Luxembourg | |
iCanCloud | C++,基于OMNET++与INET框架 | 支持 | 简单 | 不支持 | 简单 | 完善 | 有 | 开源 | Universidad Complutense de Madrid |
更多推荐
所有评论(0)