Cloudsim:更新虚拟机
Cloudsim: Update VM
我正在研究 select VM
的算法以部署 Cloudlet(task)
。
现在,每当 cloudlet 完成执行时,我需要更新 VM 的 当前分配的 ram。
我不知道我需要在哪里做这个。
我在 DataCenterbroker
class
的 processCloudletReturn()
方法中试过这个
but it is called only after all cloudlets are submitted to the VMs.
每当 cloudlet 成功执行时,我需要更新 VM 的 Ram。
例如:
让我们考虑一下,我有 100 个任务要部署,现在我提交了 20 个任务,那么在提交第 21 个任务之前,如果第一个任务完成执行,我需要更新相应的 VM.
谁能帮帮我..
谢谢..
您可以进行以下操作:
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。
我正在研究 select VM
的算法以部署 Cloudlet(task)
。
现在,每当 cloudlet 完成执行时,我需要更新 VM 的 当前分配的 ram。
我不知道我需要在哪里做这个。
我在 DataCenterbroker
class
processCloudletReturn()
方法中试过这个
but it is called only after all cloudlets are submitted to the VMs.
每当 cloudlet 成功执行时,我需要更新 VM 的 Ram。
例如:
让我们考虑一下,我有 100 个任务要部署,现在我提交了 20 个任务,那么在提交第 21 个任务之前,如果第一个任务完成执行,我需要更新相应的 VM.
谁能帮帮我.. 谢谢..
您可以进行以下操作:
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。