我正在研究一种算法来选择用于部署VM的Cloudlet(task)。现在,只要cloudlet完成了它的执行,我就需要更新VM的当前分配的ram。
我不知道我该去哪做这个。
我在processCloudletReturn()方法中在DataCenterbroker类中尝试过这一点。
但是只有在所有的cloudlets都提交到VM之后才会调用它。
--每当cloudlet成功执行时,我需要更新VM的Ram。
为,前:
让我们考虑一下,我有100个任务要部署,现在我提交了20个任务,在提交第21个任务之前,如果第一个任务完成了它的执行,我需要更新相应的VM。
有人能帮我吗..。谢谢。。
发布于 2016-04-17 05:52:31
你可以这样做:
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。
https://stackoverflow.com/questions/36112848
复制相似问题