Allow submission of VMs and Cloudlets to an already existing DatacenterBroker in runtime
manoelcampos opened this issue · 3 comments
FEATURE:
Such a feature will allow the creation of new VMs and Cloudlets after the simulation has already started, without requiring the creation of a new DatacenterBroker. The requirement of creating a new broker to enable dynamic creation of VMs and Cloudlets is not obvious and causes confusion since when calling the submitVmList and submitCloudletList methods from DatacenterBroker has no effect after the simulation has started.
Detailed information about how the feature should work
The submitVmList and submitCloudletList methods from DatacenterBroker implementations just works before the simulation has started. All the process to request a Datacenter to create VMs and Cloudlets is performed just in the startEntity method (inherited from the SimEntity), that is just executed once when the simulation starts.
When VMs are submitted, the DatacenterBroker has to check if it was already started and then immediately request the creation of such VMs. When Cloudlets are submitted after the DatacenterBroker has started, the broker has to check if there are VMs waiting to be created. If so, the new submitted cloudlets have to wait in the queue. If all VMs were already created, the request to create the new cloudlets has to be sent immediately.
An example scenario where this feature should be used
This will allow creation of VMs and Cloudlets dynamically (during simulation execution) for the same cloud customers (DatacenterBroker), allowing simulation of dynamic workload (cloudlets arriving dynamically) and the on-demand provisioning of new VMs.
A brief explanation of why you think this feature is useful
It is a long waited feature and will make the DatacenterBroker submission methods to work as expected during simulation execution.
Included Examples
Related Issues
Hi, I have a question about this feature. Does it mean that we don't have to know about Vms count and Vm creation? I mean the code you placed here for example, it still knows about Vm creation and Vms count. I think it's the responsibility of the host to create Vm in itself.
At first, Broker must decide which Datacenter must handle the cloudlet, then Datacenter decides which host must handle the cloudlet and at last, host knows how to handle cloudlet and create a Vm in response.
You don't need to know in advance the total number of VMs to be created. You can create VMs at any time during simulation execution. That is how a real cloud provider works: customers can create VMs at any time they want.
The provided example really knows the amount of VMs to be created, but it's just an example. You could randomly define that amount or read it from an external file (such as .csv or some other file format).
The Host is the one that creates VMs in the end. Nothing has changed here. What the feature enables you to do is to dynamically request the creation of VMs during simulation runtime. In CloudSim, to accomplish that, you have to dynamically create a broker to submit VMs to. Considering that a broker represents a customer, you aren't able to submit new VMs to the same customer. In CloudSim Plus this is straightforward.
The VM creation process is not changed. It works the exact same way. You request to the broker, the broker finds a Datacenter, the Datacenter uses a VmAllocationPolicy to find a suitable Host. Finally, the Host creates the requested VM.
If you have further questions, please subscribe to the Google Group.
Thank you, I didn't know about google group.