0

我正在研究一种算法来选择VM部署Cloudlet(task). 现在,只要cloudlet完成执行,我就需要更新VM当前分配的内存。

我不知道我需要在哪里执行此操作。

我在课堂上的processCloudletReturn()方法中试过这个DataCenterbroker

但只有在所有小云都提交给虚拟机后才会调用它。

每当 cloudlet 成功执行时,我都需要更新 VM 的 Ram。

例如:

让我们考虑一下,我有 100 个任务要部署,现在我提交了 20 个任务,然后在提交第 21 个任务之前,如果第一个任务完成执行,我需要更新相应的VM

谁能帮帮我。。谢谢。。

4

1 回答 1

0

您可以执行以下操作:

for(Cloudlet cloudlet: getCloudletSubmittedList()){
        if(!finishedCloudlets.contains(cloudlet) && cloudlet.isFinished()){
        Vm vm = getVmsCreatedList().get(cloudlet.getVmId()-1);                        
        vm.setCurrentAllocatedRam(vm.getCurrentAllocatedRam() - (int)(cloudlet.getUtilizationOfRam(CloudSim.clock())*100));
        vm.updateVmProcessing(CloudSim.clock(), null);
        finishedCloudlets.add(cloudlet);
    }
}

您可以在其中检查已提交的任务是否已完成,如果可以更新您的虚拟机。

于 2016-04-17T05:52:31.527 回答