云平台仿真框架cloudsim介绍

来源:互联网 发布:企业会计核算软件 编辑:程序博客网 时间:2024/04/29 21:08

http://1.johnhome.sinaapp.com/?p=257

幻灯片1

云计算仿真框架CloudSim介绍

jiangzw#ihep.ac.cn

(以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开)


本文基于 署名 3.0 中国大陆 许可协议发布,未经本人许可不得转载,否则引发的法律后果自负。

欢迎交流

2013年04月09日

幻灯片2

提纲

概况

原理与功能

云平台组件模拟

数据中心

服务代理

云信息服务

云平台行为模拟

云平台策略模拟

资源分配

任务调度

例子与扩展

相关研究文献

2

幻灯片3

1.概况    

1.1 产生背景

云计算得到广泛使用(北美),需要对云环境下的资源分配与服务调度进行性能评测、优化等

构建实际的云平台成本高、效率低

公开的测试平台(Yahoo,Amazon)不易申请,规模较小,环境难以控制,结果难以重现

需要可重复的、可控制的、成本低廉的仿真环境

已经出现的分布式模拟器对虚拟化、应用管理及云计算的即用即付经济驱动的建模支持不足(GridSim,SimGrid,GangSim)

为简化云平台的建设与测试过程,澳大利亚墨尔本大学云计算与分布式系统实验室开发了CloudSim(2009)

3

幻灯片4

1.概况    

1.2 主要特点

支持在单一物理节点仿真和大规模云计算数据中心的实例化

提供虚拟化引擎以完成虚拟机服务的创建与管理

支持对数据中心网络拓扑与应用间消息传递的建模

实现了多个层面的资源分配与任务调度的策略,并支持用户自定义

支持虚拟机到主机的分配、虚拟机间资源共享策略的定义

支持节能的数据中心电力供应建模

支持仿真实体的动态加入、暂停与重启

通过数据中心代理组件实现了云计算的经济驱动模型

研究人员只需关注抽象层的算法、策略、协议的开发

可扩展的、开源的、随社区需求进化的框架:1.0->2.0->2.1->3.0->3.0.2(201211)

4

幻灯片5

提纲

概况

原理与功能

云平台组件模拟

数据中心

服务代理

云信息服务

云平台行为模拟

云平台策略模拟

资源分配

任务调度

例子与扩展

相关研究文献

5

幻灯片6

2.1云平台典型组件模拟

实体概念

CloudSim模拟云系统中的主要实体Entity

Datacenter:提供云平台的硬件资源

DatacenterBroker:服务代理商

CIS:提供信息资源的注册与查询

实体之间可以互相传递、处理事件event

CloudSim将实体抽象为SimEntity,包含基本属性与操作:

实体初始化

事件处理

实体销毁

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云平台典型组件的模拟

云计算平台数据中心Datacenter

模拟云供应商的核心基础设施服务(硬件)

可设定指令架构、操作系统、VMM、调度间隔、成本、VM到主机的分配策略

管理一组物理主机Host

可以设定主机的处理器数目、CPU主频、RAM、硬盘、带宽、VM间共享资源的策略、资源静态分配策略。支持同构与异构的主机配置。

模拟数据中心网络行为

以延时矩阵的模型仿真网络拓扑

Network Datacenter模块强化了对网络拓扑的模拟

3.0版本支持对应用程序之间的消息传递模拟

7

幻灯片8

2.1云平台典型组件的模拟

云计算平台服务代理DatacenterBroker

与云服务的客户直接交互,充当客户与数据中心的中间人

对客户屏蔽了云数据中心的内部操作

设置VM参数:主频、处理器数目、VMM类型、带宽、镜像大小,对云任务的调度策略(时间共享、空间共享、动态负载)

定义Cloudlet:对处理器要求、指令长度、输入与输出文件大小,对CPU、RAM、带宽利用模式

用户只需向broker提交自己的上述服务请求即可

定义一系列属性与函数,用于客户与数据中心的协调

VM创建请求

任务到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云平台典型组件的模拟

云计算平台信息服务中心CloudInformationService

扮演平台的黄页服务角色

对新资源进行注册、加入索引

对实体的服务请求进行查询

在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云平台典型行为的模拟

行为Event

模拟了云平台中典型行为:虚拟机事件、任务事件、其它事件

event的重要属性:内部类型、发生时间、等待时间、目的实体ID、源实体ID、用户定义的标签、数据

处理过程:

event被创建后,被放入等待队列FutureQueue,在等待时间结束时未被处理的event会被移入DefferedQueue。

优点:任务被创建后可以随时被取消。

10

幻灯片11

2.2云平台典型行为的模拟

虚拟机事件、任务事件、资源事件

创建VM(VM_CREATE)

添加VM数据(VM_DATA_ADD)

删除VM数据(VM_DATA_DEL)

迁移VM(VM_MIGRATE)

销毁VM(VM_DESTROY)

任务提交(CLOUDLET_SUBMIT)

任务暂停(CLOUDLET_PAUSE)

任务恢复(CLOUDLET_RESUME)

全局资源注册(REGISTER_REGIONAL_GIS)

……

11

幻灯片12

2.3云平台典型策略的模拟

资源分配、任务调度策略

虚拟机到主机的分配(VmAllocationPolicy):合适的主机资源等

处理器能力分配(PeProvisioner)

带宽分配(BwProvisioner)

内存分配(RamProvisioner)

资源利用模式(UtilizationModel)

虚拟机间共享资源的实时调度(VmScheduler)

VMM对虚拟机间共享处理器资源的策略:空间共享(VmSchedulerSpaceShared),时间共享(VmSchedulerTimeShared)

虚拟机内对任务的调度(CloudletScheduler)

虚拟机对收到的多个cloudlet共享处理器资源的策略:空间共享(CloudletSchedulerSpaceShared),时间共享(CloudletSchedulerTimeShared)

12

幻灯片13

2.3云平台典型策略的模拟

资源分配、任务调度策略

继承相应的类,可进行扩展,实现自己的策略

CloudSim元数据架构图

以虚拟机的主机分配策略为例

寻求能满足VM需求的Host,然后把VM创建到该Host上

核心函数:public abstract boolean allocateHostForVm(Vm vm);

CloudSim已实现的一种分配策略VmAllocationSimple

 

13

幻灯片14

提纲

概况

原理与功能

云平台组件模拟

云平台行为模拟

云平台策略模拟

Cloudsim的元数据结构图,蓝色为用于二次开发的:

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

例子与扩展

云任务到虚拟机绑定策略的设计与测试

典型应用扩展

相关研究文献

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%\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的主界面上,选中一个实例的源代码,然后选中,右键运行程序

 

仿真步骤
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、内存、带宽占用率及变化率

 

 

应用场景

扩展CloudSim的DataCenterBroker类中绑定任务到虚拟机的方法,实现两种策略:简单绑定、贪心绑定。在云平台配置、任务参数相同的情况下,比较设计的两种绑定策略的性能(完成任务的时间)。

相对简化的任务绑定策略实现

15

幻灯片16

3.1实例呈现

 

主要步骤

0.编程环境准备:JDK6,CloudSim3.0,flanagan.jar(运行例子),eclipse

1.初始化CloudSim库

2.创建数据中心:创建处理单元,创建物理主机,创建数据中心特征对象

3.创建数据中心代理

4.创建虚拟机

5.创建云任务

6.指定任务到虚拟机的分配策略

7.启动仿真

8.结束仿真,统计、输出结果

16

幻灯片17

3.1实例呈现

分析

对模型、策略的性能评估参数:耗时,CPU、RAM、带宽占用率及变化率

简单绑定策略VS贪心绑定策略

数据中心

物理机配置

虚拟机配置

任务配置

3台物理机,

9台虚拟机

CPU2400*4MIPS

CPU1000*1MIPS

CPU:单核

 

内存:10000MB

内存:2048MB

长度:17000-82000MI

 

带宽:1000000Mbps

带宽:1000Mbps

输入大小:350 bytes

 

硬盘:1000000MB

镜像:10000MB

输出大小:300 bytes

 

VM调度策略:TimeShared

任务调度策略:SpaceShared

绑定策略:简单绑定或贪心绑定

  

VMM类型:Xen

数量:15


17

幻灯片18

3.2典型应用扩展

利用CloudSim的仿真引擎进行应用订制与扩展

CloudReport:提供云计算环境的可视化模拟,能生成网页报告,支持插件式的扩展。

CloudAnalyst:研究跨地区的大规模社交网站如facebook对用户群需求的优化调度。

RealCloudSim:基于CloudSim,NS2的虚拟机分配模拟器,能读取BRITE格式的网络拓扑并可视化呈现。

CloudAuction:扩展CloudSim以支持基于拍卖的服务机制

典型应用扩展演示

扩展工具的展示:
cloudReport,基于cloudsim的仿真引擎,提供云计算环境的可视化模拟,能生成网页报告,支持插件式的扩展。
CloudAnalyst,利用cloudsim来研究跨地区的社会网络如facebook等对云平台调度的要求。
REALcloudSim-9.0:基于cloudsim,NS2的虚拟机分配模拟器,能读取BRITE格式的网络拓扑并可视化呈现。
cloudauction:扩展cloudsim以支持对拍卖机制的测试,
CReST, the Cloud Research Simulation Toolkit(在今年的国际云计算与服务科学大会上将演示)
是什么,能做什么,怎么用。

18

幻灯片19

提纲

概况

原理与功能

云平台组件模拟

云平台行为模拟

云平台策略模拟

例子与扩展

相关研究文献

19

幻灯片20

4.基于CloudSim的研究文献

CloudSim发布时间不长,但得到不少认可与应用,是学术界很流行的云平台仿真框架

抽取云计算特点,简化平台的构建,效率高;理论模型

(截至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相关接口,进行性能验证或比较(耗时、资源占用率与变化率)

资源分配策略

任务调度算法

虚拟机部署、迁移策略

资源负载均衡

节能模型

动态信任模型

数据加密模型

21

幻灯片22

相关资源

CloudSim主页:www.cloudbus.org/cloudsim

CloudSim代码托管:code.google.com/p/cloudsim(源码分析)

CloudSim讨论组:groups.google.com/forum/?fromgroups#!forum/cloudsim

深入介绍:CloudSim– A Toolkit for Modeling and Simulation of Cloud Computing Environments and Evaluation of Resource Provisioning Algorithms(Citations-223)

3.0加入的算法说明:Optimal Online Deterministic Algorithms and Adaptive Heuristics for Energy and Performance Efficient Dynamic Consolidation of Virtual Machines in Cloud Data Centers,2012

刘鹏.云计算[M].北京:电子工业出版社,2011.

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.
0 0
原创粉丝点击