云计算仿真平台CloudSim
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
• • •
int numPE = getCharacteristics().getPesNumber();
sendNow(srcId, ev.getTag(), numPE); break; case CloudSimTags.VM_CREATE:
•
• • •
processVmCreate(ev, false);
public abstract class SimEntity{ private String name; private int id; private SimEvent evbuf; private int state; ...
public abstract void processEvent(SimEvent ev); ...
CloudSim做了什么?
对云系统中的各种组件进行模拟
(1)云数据中心(Datacenter) (2)物理机(Host) (3)虚拟机(VM) (4)服务代理商(DatacenterBroker) (5)任务单元(Cloudlet) (6)云信息服务(CIS)
CloudSim做了什么?
对云系统中的各种行为(event)进行模拟
定义Cloudlet:对处理器要求、指令长度、输入与输出文 件大小,对CPU、RAM、带宽利用模式
任务单元在虚拟机上的分配
用户只需要提交自己的服务请求即可
它定义了一组操作,用于和用户与数据中心的交互
典型组件的模拟—Broker
public void submitVmList(List<? extends Vm> list) {
CloudletList.getById(getCloudletList(), cloudletId).setVmId(vmId);
}
典型组件的模拟—Datacenter
public void processEvent(SimEvent ev) {
• • • •
.... switch (ev.getTag()) { case CloudSimTags.RESOURCE_NUM_PE: srcId = ((Integer) ev.getData()).intValue();
典型组件的模拟—Datacenter
public class DatacenterCharacteristics {
• • • •
private int id; private String architecture; private String os; private List<? extends Host> hostList;
getVmList().addAll(list);
}
public void submitCloudletList(List<? extends Cloudlet> list){
getCloudletList().addAll(list);
}
public void bindCloudletToVm(int cloudletId, int vmId){
虚拟机的资源分配策略
典型组件的模拟—Datacenter
可设定指令架构、操作系统、VMM、调度间隔、
成本、VM到主机的分配策略
模拟数据中心网络行为 以延时矩阵的模型仿真网络拓扑 Network
Datacenter模块强化了对网络拓扑
的模拟
3.0版本支持对应用程序之间的消息传递模拟
共享(CloudletSchedulerSpaceShared),时间共享(Cloud letSchedulerTimeShared) 这是与程序员距离很近的一部分,继承这些类,实现自己的分配 策略
对云计算平台典型组件的模拟
云系统中有以下实体
Datacenter:提供基础的硬件资源
CIS:提供资源信息的注册服务
典型组件的模拟—DatacenterFra bibliotek延时矩阵
典型组件的模拟—Datacenter
public class Datacenter extends SimEntity { • private DatacenterCharacteristics characteristics; • private String regionalCisName; • private VmAllocationPolicy vmAllocationPolicy; • private List<? extends Vm> vmList; • @Override • public void processEvent(SimEvent ev) { • ..... • } }
•
• • •
private double costPerSecond;
private String vmm; private double costPerMem; private double costPerStorage;
•
•
private double costPerBw;
......
} 返回
典型组件的模拟—Datacenter
public class Host {
•
• • • • • • • • • • • •
private int id;
private long storage; private List<? extends Pe> peList; private RamProvisioner ramProvisioner; private BwProvisioner bwProvisioner; private VmScheduler vmScheduler; private List<? extends Vm> vmList; private List<? extends Pe> peList; public boolean vmCreate(Vm vm) { getVmList().add(vm); vm.setHost(this); return true; } 返回
降低了开发成本
CloudSim能做什么?
支持在单一物理节点仿真和大规模云计算数
据中心的实例化 提供虚拟化引擎以完成虚拟机服务的创建与 管理 支持对数据中心网络拓扑与应用间消息传递 的建模 实现了多个层面的资源分配与任务调度的策 略,并支持用户自定义
CloudSim能做什么?
支持虚拟机到主机的分配、虚拟机间资
DatacenterBroker:服务代理商
对云计算平台典型组件的模拟
实体之间可以互相传递、处理event 如:
Broker
event VM_CREATE + data
Datacenter
processEvent(event)
典型组件的模拟——实体
对以上实体,抽象为一个基类
SimEntity,包含了基本的属性和操作。
break; ... }
}
典型组件的模拟—CIS
信息服务中心 扮演平台的黄页服务角色 提供资源注册功能 资源的索引 对实体的服务请求进行查询 在CloudSim初始化时自动创建
典型组件的模拟—CIS
典型组件的模拟—CIS
public class CloudInformationService extends SimEntity {
源共享策略的定义 支持节能的数据中心电力供应建模 支持仿真实体的动态加入、暂停与重启 通过数据中心代理组件实现了云计算的 经济驱动模型
CloudSim能做什么?
研究人员只需关注抽象层的算法、策略
、协议的开发 可扩展的、开源的、随社区需求进化的 框架: 1.0->2.0->2.1->3.0->3.0.2(201211)
}
典型组件的模拟—Broker
模拟的是云服务的代理商 它与云服务的用户直接交互,充当用户与数据中心 的中间人
屏蔽了云数据中心的内部操作
如虚拟机的创建、管理 设置VM参数:主频、处理器数目、VMM类型、带宽、镜像大 小,对云任务的调度策略(时间共享、空间共享、动态负载)
典型组件的模拟—Broker
(1)创建VM( VM_CREATE ) (2)删除VM的数据( VM_DATA_DEL ) (3)迁移VM(VM_MIGRATE ) (4)任务提交( CLOUDLET_SUMIT )
(5)任务取消( CLOUDLET_CANCEL )
(6).......
CloudSim做了什么?
对云系统中的资源分配策略进行模拟
• • • • • • • • • • • • • • •
private final List<Integer> resList; private final List<Integer> arList;
@Override
public void processEvent(SimEvent ev) { int id = -1; // requester id 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; }
(1)虚拟机到主机的分配(VmAllocationPolicy):合适的主机 资源等
(2)带宽分配( BwProvisioner )
(3)内存资源分配( RamProvisioner )
(4)处理器能力分配(PeProvisioner)
(5)资源利用模式(UtilizationModel) (6)虚拟机间共享资源的实时调度(VmScheduler)
}
典型组件的模拟—Datacenter
管理了一组物理机(Host) 可以设定主机的处理器数目、CPU主频、RAM、
硬盘、带宽、VM间共享资源的策略、资源静态
分配策略。支持同构与异构的主机配置。
做为实体与其他实体进行通信方式的定义 一些基本的操作,如虚拟机的创建、删除,发送
资源注册请求
云计算 仿真平台CloudSim使用介绍
康承昆 2012223040060
目录
CloudSim怎么来的? 什么是CloudSim? CloudSim能做什么?
CloudSim做了什么?
怎么使用CloudSim?
CloudSim怎么来的?
云计算得到广泛使用,需要对云环境下的资源分配 与服务调度进行性能评测、优化等 构建实际的云平台成本高、效率低 公开的测试平台(Yahoo,Amazon)不易申请,规模较小 ,环境难以控制,结果难以重现 需要可重复的、可控制的、成本低廉的仿真环境 已经出现的分布式模拟器对虚拟化、应用管理及云 计算的即用即付经济驱动的建模支持不足 (GridSim,SimGrid,GangSim) 为简化云平台的建设与测试过程,澳大利亚墨尔本 大学云计算与分布式系统实验室开发了CloudSim
什么是CloudSim?
云模拟器 模拟对象:云系统组件、其中的行为 作用:一个研究、开发、测试的工具 前身:GridSim、SimGrid
OptorSim、GangSim
CloudSim是在以上基础上开发和改进
CloudSim能做什么?
一个帮助研究、开发、测试的工具 如虚拟机资源分配算法、节能算法 比真实的云环境有很多优势 加快了算法设计与测试的速度
CloudSim做了什么?
(7)VMM对虚拟机间共享处理器资源的策略:空间共享 (VmSched -ulerSpaceShared),时间共享(VmSchedulerTimeShared) (8)虚拟机内对任务的调度(CloudletScheduler)
(9)虚拟机对收到的多个cloudlet共享处理器资源的策略:空间