Gokul
Gokul

Reputation: 3231

Cloudsim: Update VM

I am working on an algorithm to select the VM for deploying the Cloudlet(task). Now, I need to update the VM's current allocated ram whenever a cloudlet finished it's execution.

I don't know where I need to do this.

I tried this in processCloudletReturn() method in DataCenterbroker class

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

I need to update the VM's Ram whenever a cloudlet executed successfully.

For, ex:

Let us consider, I have 100 tasks to be deployed and now I submitted 20 tasks then, before submitting 21st task if 1st task finishes its execution I need to update the corresponding VM.

Can anyone help me.. Thank you..

Upvotes: 0

Views: 254

Answers (1)

Gokul
Gokul

Reputation: 3231

You can do as below:

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

where you can check whether already submitted tasks are finished if so you can update your VM.

Upvotes: 0

Related Questions