我正在研究一种算法来选择VM
来部署Cloudlet(task)
。
现在,只要 cloudlet 完成执行,我就需要更新 VM 当前分配的ram。
我不知道我需要做什么。
我在processCloudletReturn()
类
DataCenterbroker
方法中尝试了此操作
但只有在将所有cloudlet提交给VM后才会调用它。
只要cloudlet成功执行,我就需要更新VM的Ram。
For,ex:
让我们考虑一下,我有100个任务要部署,然后我提交了20个任务,然后在提交第21个任务之前,如果第一个任务完成执行,我需要更新相应的 VM 。
任何人都可以帮助我.. 谢谢..
答案 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。