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 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!

Nice article, Have a small clarification – you have mentioned In Windows Server 2008 R2 (and SP1) : the ratio is : 1 Logical Processor : 8 Virtual Processor for any virtual guest. But I think Microsoft defines logical processors as CPU cores and not the threads, So 1 Core : 8 virtual processor ratio should be correct. Please correct me if I am wrong.

Microsoft defines logical processors as threads, so if your CPU is HT capable, you will have the LP count equal to the double of the cores count. Simple verification, Go to Task Manager, Performance, and take a look at the CPU description. You will notice( if your CPU is HT capable) that there is “Cores” and then “Logical processor”, where LP = 2*cores.
Cheers