Hi all,
Processor, Core, Logical Processor, Virtual Processor, thread, Hyper Threading : mmm, many terms that create a lot of confusion in many times, specially with Virtualization.
Today i will explain these terms and i’m sure that after a deep reading of this blog, no one will ask the question about that, again.
My reference will be always Microsoft and Hyper-V, and i will respond the following questions:
1- What is the difference between Processor, Core, Logical Processor ?
2- What’s a Virtual Processor ?c
3- How can i calculate how many Virtual Processor my physical machine supports ?
4- My application runs today in a physical machine with 1 processor and 4 cores, how much virtual processor do i need if i decide to virtualize this machine ?
So it’s time to answer :
1- What is the difference between Processor, Core, Logical Processor ?
Processor : It’s the physical components that comes with server, responsible of all processing operations, a server can have more than one processor (1, 2…), we talk so about a multiprocessor server (bi-processor in case of 2).
Core : Inside your physical processor, you can have more than one operations unit, called Core. We can say that a core is like a processor, so 1 Processor with two Cores is like 2 processors with 1 Core (I insist is like not equal). Today all processors are multi-core, and for servers, we usually find 4 or more cores processors (aka Quad Core or more).
Logical Processor : As explained before, we have processors and cores. Normally a Core can handle one thread (aka operation) in the same time (processor time slot). But when the technology Hyper-Threading is activated and supported, the Core can handle two threads in the same time than one (it’s more complicated but i’m touching the point). The number of thread in a machine is the number of logical processor. So if you want to know how much logical processor do you have, just count the total number of threads.
So how to count that:
Cores Count = Processor Count * CoresCountPerProcessor
Logical Processor Count = CoresCount * ThreadCount
Examples :
- I have a bi-Quad Core processors server with Hyper-Threading : LogicalProcessorCount = 2 * 4 * 2 = 16
- I have a server with a 12 Cores processor : LogicalProcessor Count = 1 * 12 = 12
So how where to see how much processors, cores and Logical processors my server have:
- In Windows start menu, go to System Information,make a look the first tab


- In the task manager, make a look to Performances and count the logical processor views.

2- What’s a Virtual Processor
In virtualization, when you create a virtual machine you do assign to it a processor : Yes, we need that for the virtual machine to run and to make operations. But the question is what do we really assign to it ?
Like vRAM, VHD, Virtual network interface, we can assign to a virtual machine a Virtual Processor (VP). In an easy way, it’s a physical processor TimeSlot that will be given to the virtual machine. So when i assign a Virtual Processor to a virtual Machine, is like i rent a computing time from the processor, a piece of the processor
how much VP can i assign to a virtual machine: Good question and we need to know that : The number of virtual processor we can assign to a virtual machine depends on two factors:
- Logical processor count in the physical machine : The number of VP cannot exceed the number of present logical processor. So if we have 16 logical processors in our physical machine, we can assign at max 16 VP. The rule is : 1 virtual processor from each one logical processor for a single virtual machine
- The hypervisor support : In windows server 2008 R2 (and sp1) , Hyper-V supports at max 4 virtual processor per virtual machine, so even we have more than 4 logical processor, we can assign at max 4 VP for a virtual machine. In windows Server 2012 Hyper-V, we can assign up to 64 virtual processor per virtual machine, EXELLENT!!!!
Another factor is to not exceed the host operating system limit, you can check the following table:
System |
Resource |
Windows Server 2008 R2 Hyper-V |
Windows Server 2012 RC Hyper-V |
Improvement Factor |
Host |
Logical Processors |
64 |
320 |
5× |
Physical Memory |
1TB |
4TB |
4× |
Virtual CPUs per Host |
512 |
2,048 |
4× |
VM |
Virtual CPUs per VM |
4 |
64 |
16× |
Memory per VM |
64GB |
1TB |
16× |
Active VMs per Host |
384 |
1,024 |
2.7× |
Guest NUMA |
No |
Yes |
– |
Cluster |
Maximum Nodes |
16 |
64 |
4× |
Maximum VMs |
1,000 |
4,000 |
4× |
3- How can i calculate how many Virtual Processor my physical machine support ?
- In Windows Server 2008 R2 (and SP1) : the ratio is : 1 Logical Processor : 8 Virtual Processor for any virtual guest. In a VDI scenario with Windows 7 guest virtual machines the ratio is 1 Logical Processor : 12 Virtual Processors. So if i have 12 logical processor, i can have up to 12 * 8 = 96 virtual processors, so 96 virtual machines with 1 vp, or 48 virtual machines with 2 vp or any combination without exceeding the total count of virtual processors
- In Windows Server 2012 : Microsoft says that you can have as many virtual processor as your hardware supports. So create your virtual machines and monitor the performance of your server.
4- My application runs today in a physical machine with 1 processor and 4 cores, how much virtual processor do i need if i decide to virtualize this machine ?
There’s no exact formula to convert from physical needs to virtual needs when talking about processors.
But the today used formula is : Physical Core = Virtual Processor
So if your application need 1 quad core processor in a physical need, you can say that it’s need 4 virtual processors as a virtual machine.
We highly recommend that you monitor the virtual machine performance and seeing if there’s a need to add more virtual processors.
Further reading :
I’m running windows server 2008 R2 (or SP1), i need to have more than 4 virtual processors at in my virtual machine, but it’s not possible by design, what can i do ??
And yes, there’s a tip (mmm, unsupported by Microsoft) but it works great and can save you many times (an application server suffering from lack of processors…), wait for my next post!