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?

You can over provision (share) CPU cores in ESXi. I would make sure you actually need them though, typically hypervisors are not CPU bound, but rather memory or disk IO bound. Also make sure your CPU intensive applications will use multiple CPU's as much software does not take advantage of them.
–
David HoudeJan 3 '14 at 13:02

In ESXi docs it is said that CPU virtualization affects performance, and by default it is configured in most effective way. But when i create my VM it uses only 1 core... Totally lost :/
–
avasinJan 3 '14 at 13:11

1 Answer
1

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%.