1. A computer-implemented method comprising: receiving, by a host controller, a request to run a virtual machine on a host cluster that includes a plurality of hosts; selecting, by the host controller, a host from the host cluster based on current central processing unit (CPU) consumption and expected load to be incurred by the virtual machine, the expected load estimated from the number of cores to be used by the virtual machine; and assigning, by the host controller, the virtual machine to run on the host.