Как я могу справиться с этой ошибкой «подходящие хосты не найдены ни в одном доступном центре обработки данных»? - PullRequest
1 голос
/ 08 мая 2020

Вот мои коды, написанные в Cloudsim для планирования виртуальных машин на подходящие хосты. Я расширил класс VmAllocationPolicyAbstract. Однако, когда я запустил его, я получил следующую ошибку в консоли: «подходящие хосты не найдены ни в одном доступном центре обработки данных».

package org.cloudbus.cloudsim.allocationpolicies;

import org.cloudbus.cloudsim.hosts.Host;
import org.cloudbus.cloudsim.vms.Vm;

import java.awt.List;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;



public class VmAllocationPolicyMrfs extends VmAllocationPolicyAbstract {

    ArrayList<Vm> mylist = new ArrayList<Vm>();
    private final Map<String, Host> vm_table = new HashMap<String, Host>();
    Host host;

    public boolean allocateHostForVm(Vm vm) {

        if(this.vm_table.containsKey(vm.getUid())) {
            return true;
        }
        boolean vm_allocated = false;
        ArrayList<Vm> myvm = new ArrayList<Vm>();
        double dominantcpu = 0.0;
        double dominantram = 0.0;
        Map<String, Double> dominantcpulist = new HashMap<String, Double>();
        Map<String, Double> dominantramlist = new HashMap<String, Double>();
        Map<String, Double> requestedCpu = new HashMap<String, Double>();
        Map<String, Double> requestedRam = new HashMap<String, Double>();
        for(int i = 0; i<=getHostList().size(); i++) {
            for(Vm vm1:myvm) {
                double cpurequest = vm1.getCurrentRequestedTotalMips();
                double ramrequest = vm1.getCurrentRequestedRam();

                if (cpurequest<ramrequest && host != null) {
                      dominantram = ramrequest;
                      dominantramlist.put(vm1.getUid(),dominantram);
                      vm_allocated = this.allocateHostForVm(vm1, host);
                }
                else if(cpurequest>ramrequest) {
                      dominantcpu = cpurequest;
                      dominantcpulist.put(vm1.getUid(), dominantcpu);
                      vm_allocated = this.allocateHostForVm(vm1, host);
                }
            }

        }
        return vm_allocated;

    }

}

Как я могу исправить эту проблему?

...