ESXi CPU resources distribution

cpu-usagevmware-esxi

I have ESXi hypervisor with i7 990x cpu and i want to understand how to provide resources to 4 Virrual Machines with maximum benefit.

First my idea was to provide 1 core for less cpu-dependent vms, and 2 cores for more cpu-dependent vms, and then i thought that while some vms will not use their cores, other vms will run out of cpu resources. Also, i don't know how ESXi provides cores – perhaps it can provide first cpu many times, and last one will never be used.

Is it a good idea to share one cpu between vms? I mean

  • 1vm: 2cores
  • 2vm: 2cores
  • 3vm: 2cores
  • 4vm: 6cores

In sum this is 12 cores, when my processor has only 6. So, i suppose that esxi will share some cores between VMs. Is it a normal practice? Does it have any pitfalls?

Best Answer

Its not a 1:1 ratio for vCPU to pCPU. VMware doesn't map the vCPU cores to physical cores. There is a layer between the VM's and the physical called the scheduler. As the VM's request threads from VMware, the VMware scheduler will assign tasks to the hardware as needed. The scheduler uses VM shares as an indicator of priority. Issuing too many vCPU's to a machine could cause issues because the scheduler is waiting for enough pCPU's to become ready before it can schedule the tasks. If the physical machine becomes overwhelmed, you will see a spike it "CPU Ready".

As a rule of thumb, I always (in most cases) start with 1 vCPU on my VM's. Watch the VMware (not Windows) processor graphs to see if its maxing out. If so, issue another until its average is about 50%.

Related Topic