IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> CloudSim-plus仿真(一) -> 正文阅读

[系统运维]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.初始化CloudSim
        simulation = 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分配策略来分配VM
        return 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 VMs
            peList.add(new PeSimple(1000));
        }

        final long ram = 2048; // in Megabytes
        final long bw = 10000; // in Megabits/s
        final 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 events

INFO  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: 64


                                         SIMULATION RESULTS

Cloudlet|Status |DC|Host|Host PEs |VM|VM PEs   |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTime
      ID|       |ID|  ID|CPU cores|ID|CPU cores|         MI|  CPU cores|  Seconds|   Seconds| Seconds
-----------------------------------------------------------------------------------------------------
       1|SUCCESS| 2|   0|        8| 1|        1|      10000|          1|        0|        20|      20
       2|SUCCESS| 2|   0|        8| 2|        1|      10000|          1|        0|        20|      20
       3|SUCCESS| 2|   0|        8| 3|        1|      10000|          1|        0|        20|      20
       4|SUCCESS| 2|   0|        8| 4|        1|      10000|          1|        0|        20|      20
       5|SUCCESS| 2|   0|        8| 5|        1|      10000|          1|        0|        20|      20
       6|SUCCESS| 2|   0|        8| 6|        1|      10000|          1|        0|        20|      20
       7|SUCCESS| 2|   0|        8| 7|        1|      10000|          1|        0|        20|      20
       0|SUCCESS| 2|   0|        8| 0|        1|      10000|          1|        0|        40|      40
       8|SUCCESS| 2|   0|        8| 0|        1|      10000|          1|        0|        40|      40
-----------------------------------------------------------------------------------------------------

结果分析

? 可以发现,确实顺序提交给虚拟机列表(当然,默认的也是顺序分配)。

  1. 为什么Cloudlet ID = 0和Cloudlet ID = 8执行时间为40秒呢?而其他的都是20秒?

    因为Cloudlet ID = 0和Cloudlet ID = 8都是在VM ID = 0上执行的,即VM ID = 0执行了两个任务,其他的VM均只执行了一个任务,时间上当然翻倍。

  2. 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 Cloudlets
        broker0 = 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 implementation
        vmAllocationPolicy.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 Megabytes
        final long bw = 10000; //in Megabits/s
        final long storage = 1000000; //in Megabytes
        Host 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 RESULTS

Cloudlet|Status |DC|Host|Host PEs |VM|VM PEs   |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTime
      ID|       |ID|  ID|CPU cores|ID|CPU cores|         MI|  CPU cores|  Seconds|   Seconds| Seconds
-----------------------------------------------------------------------------------------------------
       0|SUCCESS| 1|   8|        8| 0|        4|      10000|          2|        0|        10|      10
       1|SUCCESS| 1|   8|        8| 1|        4|      10000|          2|        0|        10|      10
       2|SUCCESS| 1|   6|        8| 2|        4|      10000|          2|        0|        10|      10
       3|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 Megabytes
        final long bw = 10000; //in Megabits/s
        final long storage = 1000000; //in Megabytes
        Host 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 RESULTS

Cloudlet|Status |DC|Host|Host PEs |VM|VM PEs   |CloudletLen|CloudletPEs|StartTime|FinishTime|ExecTime
      ID|       |ID|  ID|CPU cores|ID|CPU cores|         MI|  CPU cores|  Seconds|   Seconds| Seconds
-----------------------------------------------------------------------------------------------------
       0|SUCCESS| 1|   0|        8| 0|        4|      10000|          2|        0|        10|      10
       1|SUCCESS| 1|   0|        8| 1|        4|      10000|          2|        0|        10|      10
       2|SUCCESS| 1|   1|        8| 2|        4|      10000|          2|        0|        10|      10
       3|SUCCESS| 1|   1|        8| 3|        4|      10000|          2|        0|        10|      10
-----------------------------------------------------------------------------------------------------
Execution time: 0.41 second
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:35:59  更:2021-08-09 10:36:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 18:46:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码