幻灯片1
云计算仿真框架CloudSim介绍
jiangzw#ihep.ac.cn
(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)
( 本文基于 署名 2.5 中国大陆 许可协议发布,欢迎转载、演绎,但是必须保留本文的署名 John 并包含本文链接。 )
欢迎交流
=========================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的元数据结构图,蓝色为用于二次开发的:
层次结构图(cloudsim 2版本的):
l 例子与扩展
l 云任务到虚拟机绑定策略的设计与测试
l 典型应用扩展
l 相关研究文献
14
幻灯片15
3.1实例呈现
0.编程环境准备:安装JRE环境,下载、解压clodsim包,配置classpath,导入eclipse开发
整理、验证后的cloudsim 安装与配置:
0.安装配置Java环境,Java6即可支持CloudSim3.0了。
1.下载对应的包
2.把jar包添加到classpath中,这步可以不用。
先设置CloudSimHome
.;%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;F:ApplicationApache Software Foundationlib;F:ApplicationMicrosoft SQL Server JDBC Driver 3.0sqljdbc_3.0enusqljdbc4.jar;F:ApplicationMicrosoft SQL Server JDBC Driver 3.0sqljdbc_3.0enusqljdbc.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsbase.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmssqlserver.jar;C:Program FilesMicrosoft SQL Server 2000 Driver for JDBClibmsutil.jar;%CloudSimHome%jars;%CloudSimHome%jarscloudsim-3.0.2.jar;%CloudSimHome%jarscloudsim-3.0.2-sources.jar;%CloudSimHome%jarscloudsim-examples-3.0.2.jar;%CloudSimHome%jarscloudsim-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%jarsflanagan.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的主界面上,选中一个实例的源代码, 然后选中,右键 运行程序
仿真步骤
1. 初始化CloudSim库
2.创建数据中心:
2.1.创建处理单元Pe并设置供应策略
2.2.创建物理主机:设置主机ID,内存、带宽及其供应策略,硬盘存储,Pe列表,对主机内虚拟机间共享CPU的调度策略.之后创建含多个主机的列表
2.3.创建数据中心特征对象:
设置指令架构,操作系统类型,VMM类型,主机列表,时区,单位成本参数:处理器成本,内存成本,存储成本,带宽成本。
2.4.创建数据中心:
设置名称,上述特征,主机列表及虚拟机到物理机的分配策略,SAN网络存储列表,调度间隔
3.创建数据中心代理
设置名称
4.创建虚拟机:
设置虚拟机ID,MIPS(处理能力),镜像大小,内存,带宽,CPU核数,VMM类型
创建虚拟机列表,提交给数据中心代理。
5.创建云任务:
需要设置任务ID,任务长度,云任务输入文件大小,云任务输出文件大小,CPU核数要求,对资源(CPU,内存,带宽)的利用模式
可创建云任务列表,也要提交给数据中心代理。
6.指定任务到虚拟机的分配策略
7.启动仿真
8.结束仿真,统计、输出结果
这个例子的虚拟机部署与任务分配示意图:
对模型,策略进行对比的几个参数:耗时,CPU、内存、带宽占用率及变化率
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 典型应用扩展演示
扩展工具的展示:
cloudReport,基于cloudsim的仿真引擎,提供云计算环境的可视化模拟,能生成网页报告,支持插件式的扩展。
CloudAnalyst,利用cloudsim来研究跨地区的社会网络如facebook等对云平台调度的要求。
REALcloudSim-9.0:基于cloudsim,NS2的虚拟机分配模拟器,能读取BRITE格式的网络拓扑并可视化呈现。
cloudauction:扩展cloudsim以支持对拍卖机制的测试,
CReST, the Cloud Research Simulation Toolkit(在今年的国际云计算与服务科学大会上将演示)
是什么,能做什么,怎么用。
18
幻灯片19
提纲
l 概况
l 原理与功能
l 云平台组件模拟
l 云平台行为模拟
l 云平台策略模拟
l 例子与扩展
l 相关研究文献
19
幻灯片20
4.基于CloudSim的研究文献
l 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的研究文献
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 |
CloudSim
http://www.cloudbus.org/cloudsim/
***********************************Split**************************************
CloudReports
https://github.com/thiagotts/CloudReports
cloudsim的可视化扩展
***********************************Split**************************************
CloudAnalyst
将cloudsim应用于大型社交网站的不同地区用户群需求的优化调度研究
***********************************Split**************************************
VirtualCloud – A Cloud Environment Simulator
源代码未开源,但设计的一些思路值得借鉴。
发布于2010年秋季,受cloudsim启发较大,只实现了较基本的功能,结构较为简单,目前未发现后续版本。可模拟分配策略,并强调了应用程序建模,体现了不同资源之间的相互依赖关系。
应用程序(任务)建模,考虑了三种:最大利用模式,分布式执行模式,依赖于时间的模式,cloudsim只实现了最大利用模式,是最简单的任务建模。
资源分配上,实现了硬件与软件的动态分配,cloudsim只支持在虚拟机初始化时静态分配。
虚拟机之间的通信:同个物理主机中不同虚拟机间的通信,不同物理主机中的虚拟机通信。virtualcloud设计了数据包来模拟通信,不同物理主机上的虚拟机通信通过VMM控制。cloudsim目前对虚拟机之间的通信都只发生在应用程序的实例化之前。
迁移策略上:virtualcloud未实现,cloudsim实现了特定物理主机负载的迁移策略,但未考虑对目标主机的影响,这是virtualcloud将实现的
管理模块:cloudsim使用datacenterbroker存储物理机、虚拟机列表,实现 管理模块。virtualcloud的管理模块则管理了所有信息,虚拟机列表,物理主机,部署与迁移策略的处理。
可扩展性:cloudsim需要在源代码级别进行物理机、虚拟机的配置,vitrualcloud则通过xml文件来配置。
资源影响:cloudsim未考虑一种资源的利用导致的对另一种资源的影响,如对硬盘的操作会产生CPU负载,virturalcloud考虑了这一点。
***********************************Split**************************************
CReST
the Cloud Research Simulation Toolkit
支持多层的抽象模拟:从物理硬件,能量使用到一个数据中心里的热能流动,到网络化的基础设施,以及满足用户动态需求的虚拟层应用服务。
***********************************Split**************************************
GreeCloud
基于NS2,强调节能调度
***********************************Split**************************************
iCanCloud:
What is iCanCloud?
iCanCloud is a simulation platform aimed to model and simulate cloud computing systems, which is targeted to those users who deal closely with those kinds of systems. The main objective of iCanCloud is to predict the trade-offs between cost and performance of a given set of applications executed in a specific hardware, and then provide to users useful information about such costs. However, iCanCloud can be used by a wide range of users, from basic active users to developers of large distributed applications.
Features
The most remarkable features of the iCanCloud simulation platform include the following:
Both existing and non-existing cloud computing architectures can be modeled and simulated.
A flexible cloud hypervisor module provides an easy method for integrating and testing both new and existent cloud brokering policies.
Customizable VMs can be used to quickly simulate uni-core/multi-core systems.
iCanCloud provides a wide range of configurations for storage systems, which include models for local storage systems, remote storage systems, like NFS, and parallel storage systems, like parallel file systems and RAID systems.
iCanCloud provides a user-friendly GUI to ease the generation and customization of large distributed models. This GUI is especially useful for: managing a repository of pre-configured VMs, managing a repository of pre-configured Cloud systems, managing a repository of pre-configured experiments, launching experiments from the GUI, and generating graphical reports.
iCanCloud provides a POSIX-based API and an adapted MPI library for modelling and simulating applications. Also, several methods for modelling applications can be used in iCanCloud: using traces of real applications; using a state graph; and programming new applications directly in the simulation platform.
New components can be added to the repository of iCanCloud to increase the functionality of the simulation platform.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/182322.html原文链接:https://javaforall.cn