CloudSim Plus仿真(一)
简单例子
步骤
一个简单的仿真案例包括一下基本步骤:
- 初始化CloudSim
- 创建数据中心代理
- 创建数据中心、创建主机列表
- 在主机中放置虚拟机
- 创建云任务Cloudlet
- 提交划分的虚拟机列表给代理
- 提交云任务
- 仿真开始
- 获得仿真结果并输出
实例
public class BasicFirstExample {// 创建一台拥有八个核的主机private static final int HOSTS = 1;private static final int HOST_PES = 8;// 创建虚拟机private static final int VMS = 2;private static final int VM_PES = 4;// 创建云任务private static final int CLOUDLETS = 4;private static final int CLOUDLET_PES = 1;private static final int CLOUDLET_LENGTH = 10000;private final CloudSim simulation;private DatacenterBroker broker0;private List<Vm> vmList;private List<Cloudlet> cloudletList;private Datacenter datacenter0;public static void main(String[] args) {new BasicFirstExample();}private BasicFirstExample() {// 1.设置日志级别Log.setLevel(WARN);// 2.初始化CloudSimsimulation = new CloudSim();// 3.创建数据中心代理// 创建代理,该代理是代表云客户进行管理其VM和Cloudlet的软件// 与云用户直接交互,充当用户与数据中心的中间人,屏蔽了云数据中心的内部操作// (如虚拟机的创建、管理、任务单元在虚拟机上的分配),// 用户只需要提交自己的服务请求即可。broker0 = new DatacenterBrokerSimple(simulation);// 4.创建数据中心、创建主机列表datacenter0 = createDatacenter();// 5.在主机中开辟虚拟机vmList = createVms();// 6.创建云任务cloudletList = createCloudlets();// 7.提交划分的虚拟机列表到代理broker0.submitVmList(vmList);// 8.提交云任务broker0.submitCloudletList(cloudletList);// 仿真开始simulation.start();// 获得仿真结果final List<Cloudlet> finishedCloudlets = broker0.getCloudletFinishedList();// 打印输出new CloudletsTableBuilder(finishedCloudlets).build();}/*** 创建数据中心以及其主机*/private Datacenter createDatacenter() {final List<Host> hostList = new ArrayList<>(HOSTS);for(int i = 0; i < HOSTS; i++) {Host host = createHost();hostList.add(host);}// 默认情况下使用VmAllocationPolicySimple的Vm分配策略来分配VMreturn new DatacenterSimple(simulation, hostList);}private Host createHost() {final List<Pe> peList = new ArrayList<>(HOST_PES);// 主机的CPU列表(Processing Elements, PEs)for (int i = 0; i < HOST_PES; i++) {// Uses a PeProvisionerSimple by default to provision PEs for VMspeList.add(new PeSimple(1000));}final long ram = 2048; // in Megabytesfinal long bw = 10000; // in Megabits/sfinal long storage = 1000000; //in Megabytes// 默认情况下,使用 ResourceProvisionerSimple 进行 RAM 和 BW 配置// 使用 VmSchedulerSpaceShared 进行 VM 调度。return new HostSimple(ram, bw, storage, peList);}/*** Creates a list of VMs.*/private List<Vm> createVms() {final List<Vm> list = new ArrayList<>(VMS);for (int i = 0; i < VMS; i++) {// Uses a CloudletSchedulerTimeShared by default to schedule Cloudlets// 虚拟机内的应用服务如何共享处理器的能力// (有两种策略:CloudletSchedulerTimeShared、CloudletSchedulerSpaceShared)final Vm vm = new VmSimple(1000, VM_PES);vm.setRam(256).setBw(1000).setSize(10000);list.add(vm);}return list;}/*** Creates a list of Cloudlets.*/private List<Cloudlet> createCloudlets() {final List<Cloudlet> list = new ArrayList<>(CLOUDLETS);// UtilizationModel defining the Cloudlets use only 50% of any resource all the time// 定义Cloudlets的利用率模型始终仅使用任何资源的50%final UtilizationModelDynamic utilizationModel = new UtilizationModelDynamic(0.5);for (int i = 0; i < CLOUDLETS; i++) {final Cloudlet cloudlet = new CloudletSimple(CLOUDLET_LENGTH, CLOUDLET_PES, utilizationModel);cloudlet.setSizes(1024);list.add(cloudlet);}return list;}
}
任务调度策略
顺序分配
/*** 顺序分配策略:把一组任务顺序分配给一组虚拟机*/
private void bindCloudletToVmsSimple(){int vmNumber = vmList.size();int cloudletNumber = cloudletList.size();int index = 0;for (int i = 0; i < cloudletNumber; i++) {cloudletList.get(i).setVm(vmList.get(index));index = (index + 1) % vmNumber;}
}
在将任务提交之前(即submitCloudletList之前),使用自定义的任务分配策略。
// 6.创建云任务
cloudletList = createCloudlets();
// 使用自定义的任务分配策略
bindCloudletToVmsSimple();
// 7.提交划分的虚拟机列表到代理
仿真结果
================== Starting CloudSim Plus 6.1.4 ==================INFO DatacenterBrokerSimple1 is starting...
INFO 0.00: DatacenterSimple2 is starting...
INFO Entities started.
INFO 0.00: DatacenterBrokerSimple1: List of 1 datacenters(s) received.
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 0 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 1 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 2 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 3 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 4 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 5 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 6 in DatacenterSimple2
INFO 0.00: DatacenterBrokerSimple1: Trying to create Vm 7 in DatacenterSimple2
INFO 0.00: VmAllocationPolicySimple: Vm 0 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 1 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 2 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 3 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 4 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 5 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 6 has been allocated to Host 0/DC 2
INFO 0.00: VmAllocationPolicySimple: Vm 7 has been allocated to Host 0/DC 2
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 0 to Vm 0 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 1 to Vm 1 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 2 to Vm 2 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 3 to Vm 3 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 4 to Vm 4 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 5 to Vm 5 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 6 to Vm 6 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 7 to Vm 7 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: Sending Cloudlet 8 to Vm 0 in Host 0/DC 2.
INFO 0.10: DatacenterBrokerSimple1: All waiting Cloudlets submitted to some VM.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 1 finished in Vm 1 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 2 finished in Vm 2 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 3 finished in Vm 3 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 4 finished in Vm 4 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 5 finished in Vm 5 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 6 finished in Vm 6 and returned to broker.
INFO 20.11: DatacenterBrokerSimple1: Cloudlet 7 finished in Vm 7 and returned to broker.
INFO 40.21: DatacenterBrokerSimple1: Cloudlet 0 finished in Vm 0 and returned to broker.
INFO 40.21: DatacenterBrokerSimple1: Cloudlet 8 finished in Vm 0 and returned to broker.
INFO 40.32: Processing last events before simulation shutdown.
INFO 40.32: DatacenterBrokerSimple1 is shutting down...
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 7 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 6 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 5 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 4 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 3 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 2 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 1 destruction.
INFO 40.32: DatacenterBrokerSimple1: Requesting Vm 0 destruction.
INFO 40.32: DatacenterSimple: Vm 7 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 6 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 5 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 4 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 3 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 2 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 1 destroyed on Host 0/DC 2.
INFO 40.32: DatacenterSimple: Vm 0 destroyed on Host 0/DC 2.
INFO Simulation: No more future eventsINFO CloudInformationService0: Notify all CloudSim Plus entities to shutdown.INFO
================== Simulation finished at time 40.32 ==================DEBUG DeferredQueue >> max size: 8 added to middle: 0 added to tail: 64SIMULATION RESULTSCloudlet|Status |DC|Host|Host PEs |VM|VM PEs |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTimeID| |ID| ID|CPU cores|ID|CPU cores| MI| CPU cores| Seconds| Seconds| Seconds
-----------------------------------------------------------------------------------------------------1|SUCCESS| 2| 0| 8| 1| 1| 10000| 1| 0| 20| 202|SUCCESS| 2| 0| 8| 2| 1| 10000| 1| 0| 20| 203|SUCCESS| 2| 0| 8| 3| 1| 10000| 1| 0| 20| 204|SUCCESS| 2| 0| 8| 4| 1| 10000| 1| 0| 20| 205|SUCCESS| 2| 0| 8| 5| 1| 10000| 1| 0| 20| 206|SUCCESS| 2| 0| 8| 6| 1| 10000| 1| 0| 20| 207|SUCCESS| 2| 0| 8| 7| 1| 10000| 1| 0| 20| 200|SUCCESS| 2| 0| 8| 0| 1| 10000| 1| 0| 40| 408|SUCCESS| 2| 0| 8| 0| 1| 10000| 1| 0| 40| 40
-----------------------------------------------------------------------------------------------------
结果分析
可以发现,确实顺序提交给虚拟机列表(当然,默认的也是顺序分配)。
为什么Cloudlet ID = 0和Cloudlet ID = 8执行时间为40秒呢?而其他的都是20秒?
因为Cloudlet ID = 0和Cloudlet ID = 8都是在VM ID = 0上执行的,即VM ID = 0执行了两个任务,其他的VM均只执行了一个任务,时间上当然翻倍。
Cloudlet 的长度为:CloudletLen = 10000(million instructions,MI);
VM的执行速度为:VM mipsCapacity = 1000 ;
详见代码(final Vm vm = new VmSimple(1000, VM_PES);
为什么单个任务执行时间为20秒,而不是10000/1000=10秒?
因为定义Cloudlets的利用率模型始终仅使用任何资源的50%。
(final UtilizationModelDynamic utilizationModel = new UtilizationModelDynamic(0.5);)
虚拟机分配策略
随机分配
/*** A example showing how to implement a custom* {@link VmAllocationPolicy} that randomly* selects suitable Hosts to place submitted VMs.* Check the {@link #createDatacenter()} method for details.** <p>Since CloudSim Plus provides functional* VmAllocationPolicy implementations, you don't* even need to create a new class to implement your own policy,* unless you really want to (to make reuse easy).</p>** @author Manoel Campos da Silva Filho* @since CloudSim Plus 4.0.5*/
public class RandomVmAllocationPolicyExample {private static final int HOSTS = 10;private static final int HOST_PES = 8;private static final int VMS = 4;private static final int VM_PES = 4;private static final int CLOUDLETS = 4;private static final int CLOUDLET_PES = 2;private static final int CLOUDLET_LENGTH = 10000;private final CloudSim simulation;private DatacenterBroker broker0;private List<Vm> vmList;private List<Cloudlet> cloudletList;private Datacenter datacenter0;private final ContinuousDistribution random;public static void main(String[] args) {new RandomVmAllocationPolicyExample();}private RandomVmAllocationPolicyExample() {final double startSecs = TimeUtil.currentTimeSecs();// Enables just some level of log messages.Log.setLevel(ch.qos.logback.classic.Level.WARN);simulation = new CloudSim();random = new UniformDistr();datacenter0 = createDatacenter();// Creates a broker that is a software acting on behalf a cloud customer to manage his/her VMs and Cloudletsbroker0 = new DatacenterBrokerSimple(simulation);vmList = createVms();cloudletList = createCloudlets();broker0.submitVmList(vmList);broker0.submitCloudletList(cloudletList);simulation.start();final List<Cloudlet> finishedCloudlets = broker0.getCloudletFinishedList();finishedCloudlets.sort(Comparator.comparingLong(cloudlet -> cloudlet.getVm().getId()));new CloudletsTableBuilder(finishedCloudlets).build();System.out.println("Execution time: " + TimeUtil.secondsToStr(TimeUtil.elapsedSeconds(startSecs)));}/*** Creates a Datacenter and its Hosts, defining* a {@link VmAllocationPolicy} that randomly selects suitable Hosts* to place submitted VMs.*/private Datacenter createDatacenter() {final List<Host> hostList = new ArrayList<>(HOSTS);for(int i = 0; i < HOSTS; i++) {Host host = createHost();hostList.add(host);}VmAllocationPolicySimple vmAllocationPolicy = new VmAllocationPolicySimple();// Replaces the default method that allocates Hosts to VMs by our own implementationvmAllocationPolicy.setFindHostForVmFunction(this::findRandomSuitableHostForVm);return new DatacenterSimple(simulation, hostList, vmAllocationPolicy);}/*** Define a specific policy to randomly select a suitable Host to place a given VM.* It's a very efficient policy since it doesn't perform sorting* in order to find a suitable Host.**/private Optional<Host> findRandomSuitableHostForVm(final VmAllocationPolicy vmAllocationPolicy, final Vm vm) {final List<Host> hostList = vmAllocationPolicy.getHostList();for (int i = 0; i < hostList.size(); i++){final int randomIndex = (int)(random.sample() * hostList.size());final Host host = hostList.get(randomIndex);if(host.isSuitableForVm(vm)){return Optional.of(host);}}return Optional.empty();}private Host createHost() {List<Pe> peList = new ArrayList<>(HOST_PES);//List of Host's CPUs (Processing Elements, PEs)for (int i = 0; i < HOST_PES; i++) {peList.add(new PeSimple(1000, new PeProvisionerSimple()));}final long ram = 2048; //in Megabytesfinal long bw = 10000; //in Megabits/sfinal long storage = 1000000; //in MegabytesHost host = new HostSimple(ram, bw, storage, peList);host.setRamProvisioner(new ResourceProvisionerSimple()).setBwProvisioner(new ResourceProvisionerSimple()).setVmScheduler(new VmSchedulerTimeShared());return host;}/*** Creates a list of VMs.*/private List<Vm> createVms() {final List<Vm> list = new ArrayList<>(VMS);for (int i = 0; i < VMS; i++) {Vm vm = new VmSimple(i, 1000, VM_PES).setRam(512).setBw(1000).setSize(10000).setCloudletScheduler(new CloudletSchedulerTimeShared());list.add(vm);}return list;}/*** Creates a list of Cloudlets.*/private List<Cloudlet> createCloudlets() {final List<Cloudlet> list = new ArrayList<>(CLOUDLETS);UtilizationModel utilization = new UtilizationModelDynamic(0.2);for (int i = 0; i < CLOUDLETS; i++) {Cloudlet cloudlet =new CloudletSimple(i, CLOUDLET_LENGTH, CLOUDLET_PES).setFileSize(1024).setOutputSize(1024).setUtilizationModelBw(utilization).setUtilizationModelRam(utilization).setUtilizationModelCpu(new UtilizationModelFull());list.add(cloudlet);}return list;}
}
仿真结果
SIMULATION RESULTSCloudlet|Status |DC|Host|Host PEs |VM|VM PEs |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTimeID| |ID| ID|CPU cores|ID|CPU cores| MI| CPU cores| Seconds| Seconds| Seconds
-----------------------------------------------------------------------------------------------------0|SUCCESS| 1| 8| 8| 0| 4| 10000| 2| 0| 10| 101|SUCCESS| 1| 8| 8| 1| 4| 10000| 2| 0| 10| 102|SUCCESS| 1| 6| 8| 2| 4| 10000| 2| 0| 10| 103|SUCCESS| 1| 3| 8| 3| 4| 10000| 2| 0| 10| 10
-----------------------------------------------------------------------------------------------------
Execution time: 0.45 second
首次适应
public class FirstFitVmAllocationPolicyExample {private static final int HOSTS = 10;private static final int HOST_PES = 8;private static final int VMS = 4;private static final int VM_PES = 4;private static final int CLOUDLETS = 8;private static final int CLOUDLET_PES = 2;private static final int CLOUDLET_LENGTH = 10000;private final CloudSim simulation;private DatacenterBroker broker0;private List<Vm> vmList;private List<Cloudlet> cloudletList;private Datacenter datacenter0;public static void main(String[] args) {new FirstFitVmAllocationPolicyExample();}private FirstFitVmAllocationPolicyExample() {final double startSecs = TimeUtil.currentTimeSecs();Log.setLevel(WARN);simulation = new CloudSim();datacenter0 = createDatacenter();broker0 = new DatacenterBrokerSimple(simulation);vmList = createVms();cloudletList = createCloudlets();broker0.submitVmList(vmList);broker0.submitCloudletList(cloudletList);simulation.start();final List<Cloudlet> finishedCloudlets = broker0.getCloudletFinishedList();new CloudletsTableBuilder(finishedCloudlets).build();System.out.println("Execution time: " + TimeUtil.secondsToStr(TimeUtil.elapsedSeconds(startSecs)));}/*** Creates a Datacenter and its Hosts, defining* a {@link VmAllocationPolicy} that randomly selects suitable Hosts* to place submitted VMs.*/private Datacenter createDatacenter() {final List<Host> hostList = new ArrayList<>(HOSTS);for(int i = 0; i < HOSTS; i++) {Host host = createHost();hostList.add(host);}return new DatacenterSimple(simulation, hostList, new VmAllocationPolicyFirstFit());}private Host createHost() {List<Pe> peList = new ArrayList<>(HOST_PES);//List of Host's CPUs (Processing Elements, PEs)for (int i = 0; i < HOST_PES; i++) {peList.add(new PeSimple(1000, new PeProvisionerSimple()));}final long ram = 2048; //in Megabytesfinal long bw = 10000; //in Megabits/sfinal long storage = 1000000; //in MegabytesHost host = new HostSimple(ram, bw, storage, peList);host.setRamProvisioner(new ResourceProvisionerSimple()).setBwProvisioner(new ResourceProvisionerSimple()).setVmScheduler(new VmSchedulerTimeShared());return host;}/*** Creates a list of VMs.*/private List<Vm> createVms() {final List<Vm> list = new ArrayList<>(VMS);for (int i = 0; i < VMS; i++) {Vm vm = new VmSimple(i, 1000, VM_PES).setRam(512).setBw(1000).setSize(10000).setCloudletScheduler(new CloudletSchedulerTimeShared());list.add(vm);}return list;}/*** Creates a list of Cloudlets.*/private List<Cloudlet> createCloudlets() {final List<Cloudlet> list = new ArrayList<>(CLOUDLETS);UtilizationModel utilization = new UtilizationModelDynamic(0.2);for (int i = 0; i < CLOUDLETS; i++) {Cloudlet cloudlet =new CloudletSimple(i, CLOUDLET_LENGTH, CLOUDLET_PES).setFileSize(1024).setOutputSize(1024).setUtilizationModelBw(utilization).setUtilizationModelRam(utilization).setUtilizationModelCpu(new UtilizationModelFull());list.add(cloudlet);}return list;}
}
仿真结果
SIMULATION RESULTSCloudlet|Status |DC|Host|Host PEs |VM|VM PEs |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTimeID| |ID| ID|CPU cores|ID|CPU cores| MI| CPU cores| Seconds| Seconds| Seconds
-----------------------------------------------------------------------------------------------------0|SUCCESS| 1| 0| 8| 0| 4| 10000| 2| 0| 10| 101|SUCCESS| 1| 0| 8| 1| 4| 10000| 2| 0| 10| 102|SUCCESS| 1| 1| 8| 2| 4| 10000| 2| 0| 10| 103|SUCCESS| 1| 1| 8| 3| 4| 10000| 2| 0| 10| 10
-----------------------------------------------------------------------------------------------------
Execution time: 0.41 second
CloudSim Plus仿真(一)相关推荐
- CloudSim云仿真的使用及论文阅读
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言:CloudSim介绍 CloudSim来源背景 CloudSim版本演变 一.CloudSim安装过程 运行环境配置 ...
- 部署CloudSim云计算仿真平台
CloudSim是一个由Java语言编写的云计算仿真平台软件,提供给研究人员做仿真实验,由于本文主要介绍如何从0开始部署该平台软件,故此处不对CloudSim做详细介绍,如需对该平台进一步了解,请访问 ...
- CloudSim Plus仿真(四)
实例1 以 NetworkExample1 为例,该例子展示了如何创建一个有网络拓扑的数据中心并且在其上运行一个云任务.例子通过读取topology.brite 文件来构造网络拓扑.网络拓扑的信息包括 ...
- CloudSim Plus仿真(二)
简单案例 一个简单的仿真案例包括一下基本步骤: 初始化CloudSim 创建数据中心代理 创建数据中心.创建主机列表 在主机中放置虚拟机 创建云任务Cloudlet 提交划分的虚拟机列表给代理 提交云 ...
- CloudSim云计算仿真平台软件
目录 1.1Eclipse的安装 1.2Eclipse的汉化 2.1CloudSim的下载 1.1 Eclipse的安装: 安装选择Eclipse IDE for Java Developers 1. ...
- 云计算仿真框架CloudSim介绍
幻灯片1 云计算仿真框架CloudSim介绍 jiangzw#ihep.ac.cn (以下为本人某次报告做的调研的PPT及其它一些实践记录,为保证清晰度,一些插入的图片较大,可在新标签页中打开) ( ...
- CloudSim仿真流程
CloudSim基础仿真流程总结 这是在阅读CloudSim Example1用例代码后,对CloudSim仿真流程的一点总结 类 类总结: DataCenter类 数据中心,提供虚拟化网络资源 (封 ...
- 基于CloudSim 的云资源调度系统分析设计与实现——合肥工业大学云计算课程作业
这里介绍一下系统功能演示 4.1典型CloudSim案例复现集成 运行程序,进入主界面, 图4-1 主界面演示 点击CloudSim样例对应的进入,系统跳转至CloudSim样例复现与集成界面 图4- ...
- Cloudsim学习笔记——基本知识
Cloudsim 澳大利亚墨尔本学校的网格实验室和Gridbus项目推出,是在离散事件模拟包SimJava上开发的函数库,继承了GridSim的编程模型,特点: 支持大型云计算的基础设施的建模和仿真: ...
最新文章
- Leetcode 6
- 花两千元学python_花两万学的python,总结了一点初学者的小技巧,免费送给大家...
- 分析 Go time.After 引起内存暴增 OOM 问题
- springboot思维导图
- 数据库ORA-00600 [15160]处理
- leetcode 1518 换酒问题
- DNN读书摘录5-Starter Kit Template
- uos系统虚拟机_UOS开箱体验
- 深入解析字符串的比较方法:“==”操作符;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。...
- IntelliJ IDEA 调试技巧,比 Eclipse 强太多了!
- 一文读懂最新 Google 开发者大会上的 ARCore!
- 怎么用云服务器搭建游戏,搭建游戏用什么云服务器
- 【封面】数字经济引领中国产业改革
- 正则表达式 String中正则匹配的方法
- workbench动力学周炬_《ANSYS WORKBENCH有限元分析实例详解(动力学)》【价格 目录 书评 正版】_中国图书网...
- 教育培训机构如何打赢“教育营销流量战“?
- C# 制作贪吃蛇小游戏,最简单的实现
- 利用JavaScript设置隐藏功能
- TI CC3200 WIFI实训开发套件(OURS-SDK-WFB)IAR for ARM7.8调试2————对IAR for ARM的熟悉,并在开发板上跑起来第一个程序
- matlab 数组扩充