2016-03-20 5 views
0

Cloudlet(task)を展開するために​​を選択するアルゴリズムの作業を進めています。 クラウドが実行完了すると、VMのが現在割り当てられているRAMを更新する必要があります。Cloudsim:Update VM

私はこれを行う必要があるかわかりません。

私はDataCenterbrokerクラス

processCloudletReturn()方法でこれを試みたが、それが唯一、すべてのcloudletsがVMに提出された後に呼び出されます。

クラウドレットが正常に実行されるたびにVMのRAMを更新する必要があります。

私が展開する100個のタスクを持って、今、私はその後、20個のタスクを提出し、第一のタスクの実行が終了した場合、21のタスクを提出する前に、私が対応を更新する必要があり、私たちは考えてみましょう:元については、

VM

は誰も私を助けることができる.. は...ありがとうござい

答えて

0

あなたは以下のように行うことができます:あなたはあなたがあなたの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); 
    } 
}