有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaCloudSim:更新虚拟机

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

我不知道我需要在哪里做这件事

我在DataCenterbroker类的processCloudletReturn()方法中尝试了这个

but it is called only after all cloudlets are submitted to the VMs.

每当cloudlet成功执行时,我需要更新VM的Ram

对于,例如:

让我们考虑,我有100个任务要部署,现在我提交了20个任务,在提交第二十一个任务之前,如果第一个任务完成它的执行,我需要更新相应的<强> VMp>

有人能帮我吗。。 谢谢


共 (1) 个答案

  1. # 1 楼答案

    您可以执行以下操作:

    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);
        }
    }
    

    在这里,您可以检查已经提交的任务是否已完成,这样您就可以更新您的虚拟机