Get on-the-go access to the latest insights featured on our Trustworthy Computing blogs.
With the release of each version of Windows Server, the maxima for supported number of sockets and logical processors have increased.
Whatever the numbers for the older OS releases, the best scalable platform for virtualization is Windows Server 2012 (and of course Hyper-V Server 2012), far exceeding VMware 5.1 and others. Let’s start by defining common terminology.
Logical Processor: A thread of execution on a physical processing unit which can be a core or a thread on a symmetric multi-threaded (SMT) system.
Virtual Processor: A virtualized instance of a logical processor exposed to virtual machines.
Socket: What a physical processor plugs into. It looks like this:
The below outlines the numbers per OS release and differentiates them based on whether Hyper-V is enabled or not.
Windows Server 2012 x64 with Hyper-V Enabled
Windows Server 2012 without Hyper-V Enabled
Windows Server 2012 x86
Windows Server 2008 R2 x64 with Hyper-V Enabled
Windows Server 2008 R2 x64 without Hyper-V Enabled
Windows Server 2008 R2 x86
Windows Server 2008 x64 SP2 with Hyper-V Enabled
Windows Server 2008 x64 SP2 without Hyper-V Enabled
Windows Server 2008 x86 SP2 with Hyper-V Enabled
Windows Server 2008 x86 SP2 without Hyper-V Enabled*
Windows Server 2008 x64 with Hyper-V Enabled
Windows Server 2008 x64 without Hyper-V Enabled
Windows Server 2008 x86 with Hyper-V Enabled
Windows Server 2008 x86 without Hyper-V Enabled
Windows Server 2008 x64 with Hyper-V Enabled and KB956710 installed*
*This is included for completeness, however, it’s recommended that customers upgrade to Service Pack 2 which includes this fix and more.
There are often questions whether this should be enabled or not. Hyper-V works fine with Symmetric Multi-Threading and we recommend leaving it on. There’s really one corner case where you’d want to disable SMT:
>> if you’re running on a system that has more logical processor than is supported by Hyper-V <<
While this isn’t going to happen anytime soon with Windows Server 2012 Hyper-V, it can happen with earlier versions such as Windows Server 2008 R2 Hyper-V and previous. For example, if you’re running Windows Server 2008 R2 Hyper-V (which supports a maximum of 64 logical processors) on a system that has a total of 80 logical processors (4 sockets, 10 cores per socket with SMT).
In this case, Windows Server 2008 R2 Hyper-V will use the first 64 logical processors and ignore the rest. This results in a bunch of idle cores in the system while SMT is used because of the way logical processors are enumerated during boot up. When the OS boots it starts with socket 1 and enumerates all logical processors:
Notice that 65-80 are not enumerated and thus are ignored/not used by the system. This is because Windows Server 2008 R2 Hyper-V only support up to 64 logical processors total. Again, with Windows Server 2012/Microsoft Hyper-V Server 2012 it now supports up to 320 logical processors per server. While SMT provides a good performance boost, a thread doesn’t equal a core, and you don’t want to leave any cores idle. Thus, in this case, we recommend disabling SMT so that Windows Server 2008 R2 uses all 40 cores.
Obviously, the best solution is to use Windows Server 2012 and leave SMT enabled because it supports up to 320 logical processors and can take full advantage of the hardware resources.
One last remark with regards to capacity planning: when you perform capacity planning, count cores and do not count hyper-threads/symmetric multi-threads. While SMT can boost performance (~10-20%), SMT threads are not equivalent to cores. Microsoft has been consistent on this recommendation and this continues with Windows Server 2012 / Hyper-V Server 2012.