Although, vCPU mathematics is little tricky to understand ,however we have put together all possible information and tried to explain you it in most simple words.
In HyperVisor physical CPU is fully controlled by the Hypervisor itself. This Physical CPU is divided into physical CPU cores. Each core very safely support 8 virtual processors (vCPUs). vCPU does not represent one to one allocation. It represents time on the physical CPU resource pool. Now, let’s go through some technical terms first:
Sockets represent the hardware. They are referred as number of processor sockets that your motherboard is having. Sockets are only capacity of motherboard. Socket can be empty. The real power is number of processors that are actually installed on motherboard.
A physical CPU is actual hardware unit installed in motherboard socket.
It is an actual physical processor/core in your physical CPU chipset (Multi-core processors). Each physical core acts as separate processor since it has its own circuitry and L1, L2 cache.
Logical CPU/Logical processor (Little tricky)
Logical processors are abstractions of time on stack of physical processors. Logical processors act differently in physical machine (stand alone) and in Hypervisor. In the context of Hypervisors a Logical processor is equal to vCPU but Logical processor does not equal a physical core in any virtualization software.
vCPU is time dependent entity. A virtual processor is more likely amount of processing time spent on the CPU. If we use technical terminology; Virtual processors are mapped to available logical processors in the physical computer and are scheduled by the Hypervisor software to allow you to have more virtual processors than you have logical processors. People may have misconception that 1 vCPU equals to 1 core. But there is no one to one relationship between vCPU and core in any virtualization software.
Let’s try to understand these terms with an Example. Here, we are considering that one physical core can safely support 8 virtual processors . Lets see how this planning goes:
CPU we are taking into account is Intel Xeon CPU E5-2650 v2
- Intel Xeon CPU E5-2650 v2 holds 8 Cores x8 = 64 vCPUs.
- 4 vCPU to each VM…64 vCPUs / 4 vCPU per VM = 16 VMs
- 2 vCPU to each VM…64 vCPUs / 2 vCPU per VM = 32 VMs
- 1 vCPUs to each VM…64 vCPUs / 1 vCPU per VM = 64 VMs
As long as you don’t have CPU exhaustive VMs you can go beyond this number 8. The number of virtual cores that can be assigned to a VM is limited. Windows Server 2008 R2 limits the number of vCPUs as 4 per VM which is extended to 64 in Windows server 2012.