Please, describe the problem here and provide additional information below (if applicable) …
I’ve been using OpenNebula since 4.12 and never understood the reason behind OpenNebula’s serialization of instantiating VMs. I instantiate machines in large groups, 300 to 400 VMs at a time. vCenter can handle parallel creation of machines pretty well and has gotten better with versions 6.x. This process under OpenNebula takes 4 to 5 hours to complete. What seems to occur is that;
- OpenNebula sends a request to vCenter to instantiate a machine with the template you have registered.
- vCenter obliges and clones the template to a new machine, gives the machine the defined name, plus one-[VMID]-[VM_NAME].
- While this is happening OpenNebula is getting some information from vCenter about the status of said VM, whether it is cloning, booting, running, etc. and just waits.
- vCenter finishes cloning and starts the machine, with one-context installed the machine asks OpenNebula for its internal settings and OpenNebula provides this info.
- Once the machine is fully booted, it probably sends a finish message to OpenNebula that says in done, OpenNebula marks its status as running.
- OpenNebula starts on the next VM and the cycle repeats.
When I ran OpenStack in the past, when instantiating machines, it would send many requests to vCenter in parallel and vCenter would instantiate machines as fast as it could. This is not to rip on OpenNebula, or say one is better than the other, but I would think that there should be a way to force OpenNebula to instantiate machines at a faster rate than 1 VM at a time.
Am I incorrect in my assumption of how the vCenter driver is suppose to work? Are there any modifications that can be made to the driver to send instantiations in parallel?
Versions of the related components and OS (frontend, hypervisors, VMs):
Every version of OpenNebula 4.x and 5.x to latest version.
With every vCenter server version attached to OpenNebula 5.5 to 6.7
Steps to reproduce:
Steps have been provided above. I can probably provide a video of what I see. I have done this through the portal, the backend Linux commands and APIs and the results are the same.
The results are defined in the steps above. But to make it simple, OpenNebula serializes instantiation of VMs into vCenter. So creating 400 VMs takes 4 to 5 hours to complete vs what it should take, less than an hour.
The expected results should be instantiation of VMs should be parallel not serial. Whether that is 5 to 10 machines at a time and OpenNebula as well as vCenter shouldn’t break a sweat.