我正在研究一种用于云计算的任务调度方法,问题是我想在运行时创建虚拟机,以便具有弹性并降低任务拒绝率,但我不知道如何做到这一点,以及我应该将创建VMs的代码放在哪里:-?
使用CloudSim Plus,您可以做到这一点,而无需更改框架代码。CloudSim Plus提供了不同的事件侦听器,您可以使用这些侦听器动态创建Cloudlet或VM。它甚至允许您提交这样的对象,而无需创建新的代理。实现这一点的代码片段如下:
//Constructor of the example class
private KeepSimulationRunningExample() {
//Initializes CloudSim Plus
simulation = new CloudSim();
//The simulation startup code goes here...
//It creates objects such as Datacenters, Hosts, etc.
//Adds a Listener that will be notified when the simulation clock changes
simulation.addOnClockTickListener(this::createDynamicCloudletAndVm);
simulation.start();
}
/** Creates a new VM when the simulation reaches a defined time */
private void createDynamicCloudletAndVm(EventInfo evt) {
if((int)evt.getTime() == TIME_TO_CREATE_NEW_VM){
Vm vm = new VmSimple(1000, 2);
//Configure your VM here (such as setting a CloudletScheduler)
vmList.add(vm);
broker0.submitVm(vm);
}
}
这里提供了完整的示例。动态包显示了使用不同侦听器创建VM和Cloudlet的其他示例。