Cloudsim:更新VM

时间:2016-03-20 10:54:02

标签: java cloudsim

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

我不知道我需要做什么。

我在processCloudletReturn()

中的DataCenterbroker方法中尝试了此操作
  

但只有在将所有cloudlet提交给VM后才会调用它。

只要cloudlet成功执行,我就需要更新VM的Ram。

For,ex:

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

任何人都可以帮助我.. 谢谢..

1 个答案:

答案 0 :(得分: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);
    }
}

您可以检查已提交的任务是否已完成,如果可以,您可以更新您的VM。