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。