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.
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 Maximums
Windows Server 2012 x64 with Hyper-V Enabled
- Windows Server 2012 Standard Edition supports up to 64 sockets and up to 320 logical processors
- Windows Server 2012 Datacenter Edition supports up to 64 sockets and up to 320 logical processors
Windows Server 2012 without Hyper-V Enabled
- Windows Server 2012 Standard Edition supports up to 64 sockets and up to 640 logical processors
- Windows Server 2012 Datacenter Edition supports up to 64 sockets and up to 640 logical processors
Windows Server 2012 x86
- There is no such product. Windows Server 2012 is x64 only.
Windows Server 2008 R2 Maximums
Windows Server 2008 R2 x64 with Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 64 logical processors
- Windows Server 2008 Enterprise Edition support up to of 8 sockets and up to 64 logical processors
- Windows Server 2008 Datacenter Edition supports up to 64 sockets and up to 64 logical processors
Windows Server 2008 R2 x64 without Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 256 logical processors
- Windows Server 2008 Enterprise Edition support up to of 8 sockets and up to 256 logical processors
- Windows Server 2008 Datacenter Edition supports up to 64 sockets and up to 256 logical processors
Windows Server 2008 R2 x86
- There is no such product. Windows Server 2008 R2 is x64 only.
Windows Server 2008 with Service Pack 2 Maximums
Windows Server 2008 x64 SP2 with Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and 24 logical processors
- Windows Server 2008 Enterprise Edition support up to 8 sockets and 24 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and 24 logical processors
Windows Server 2008 x64 SP2 without Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 64 logical processors
- Windows Server 2008 Enterprise Edition supports up to 8 sockets and up to 64 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and up to 64 logical processors
Windows Server 2008 x86 SP2 with Hyper-V Enabled
- This doesn’t exist. Hyper-V is an x64 only role and isn’t available in the x86 (32-bit) SKU.
Windows Server 2008 x86 SP2 without Hyper-V Enabled*
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 32 logical processors
- Windows Server 2008 Enterprise Edition supports up to 8 sockets and up to 32 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and up to 32 logical processors
Windows Server 2008 with Service Pack 1 Maximums
Windows Server 2008 x64 with Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up 4 sockets with up to 16 logical processors
- Windows Server 2008 Enterprise Edition support up to 8 sockets with up to 16 logical processors
- Windows Server 2008 Datacenter Edition supports up to up to 64 sockets with up to 16 logical processors
Windows Server 2008 x64 without Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 64 logical processors
- Windows Server 2008 Enterprise Edition support up to 8 sockets and up to 64 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and up to 64 logical processors
Windows Server 2008 x86 with Hyper-V Enabled
- This doesn’t exist. Hyper-V is an x64 only role and isn’t available in the x86 (32-bit) SKU.
Windows Server 2008 x86 without Hyper-V Enabled
- Windows Server 2008 Standard Edition supports up to 4 sockets and up to 32 logical processors
- Windows Server 2008 Enterprise Edition supports up to 8 sockets and up to 32 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and up to 32 logical processors
- Hyper-V is an x64 only role and thus isn’t available in this SKU
Windows Server 2008 x64 with Hyper-V Enabled and KB956710 installed*
- Windows Server 2008 Standard Edition supports up to 4 sockets and 24 logical processors
- Windows Server 2008 Enterprise Edition support up to 8 sockets and 24 logical processors
- Windows Server 2008 Datacenter Edition supports up to 32 sockets and 24 logical processors
*This is included for completeness, however, it’s recommended that customers upgrade to Service Pack 2 which includes this fix and more.
Symmetric Multi-Threading (SMT)
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:
- on socket 1 it enumerates logical processors 1-20
- on socket 2 it enumerates logical processors 21-40
- on socket 3 it enumerates logical processors 41-60
- on socket 4 it would see 61-64
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.