Virtualization: CPUs and Cores and Sockets… Oh My!

I have been getting a lot of questions recently about virtual machine CPU usage, especially around things like Symmetric Multi-Threading (SMT).  Jeff Woosley, the Principal Product Manager (WSSC) at Microsoft, recently sent out this clarification which many of you will find enlightening. –MDG

Q: Should Symmetric Multi-Threading (SMT) be enabled or disabled?

A: 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 support 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). Let’s discuss.

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
  • and 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. Let me again stress, this is a relative corner case.

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.


Q: Windows Server 2012 Hyper-V supports up to 320 logical processors and virtual machines with up to 64 virtual processors per virtual machine. However, the industry isn’t standing still and will create larger servers were with more sockets and cores. How does Microsoft view scalability?

A: Scalability, like performance, is an ongoing engineering commitment. We are never “done” with improving scalability and performance. Just a few years ago 32 logical processors in a server seemed like a huge, scale up system. Now, that’s an industry standard 2 socket server. Today’s mainstream server is yesterday’s scale up system. That said, we pushed the envelope very far with Windows Server 2012 and lead the industry. We’re going to watch and listen closely to what’s most important for our customers.

If you are interested in evaluating Windows Server or System Center 2012 you can can do so by clicking here:


2 responses to “Virtualization: CPUs and Cores and Sockets… Oh My!”

  1. Liked the article Mitch

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: