The next version of Microsoft’s Windows Server 2008 will support up to 256 logical cores. Microsoft has slowly leaked out information of Server 2008 release 2 at recent events like WinHEC and Professional Developers Conference, but Microsoft’s Mark Russinovich is now revealing just exactly how the operating system will scale. In a video interview posted on the MSDN website, the founder of Sysinternals and programming guru, explains how Microsoft will remove bottlenecks, specifically the dispatcher lock, to handle dozens to hundreds of cores.
Windows Server 2008 will be based on Windows 7 code-base and will borrow heavily from Vista. Russinovich says most of the code will remain the same and this will help maintain application compatibility. As servers utilize more processors and cores, Microsoft will have to change to keep up with the times and Russinovich explains that Microsoft coders are working hard to eliminate the 32-core limitation that hasn’t changed since the Windows NT days.
Threads are assigned a 32 character binary bitmask that marries the thread to a particular logical core. Microsoft defines the number of logical processor cores as the number of physical CPUs times the physical cores times the threads. For instance, a two CPU system with quad-cores and Hyperthreading would be considered a 16-core system in Microsoft terms. The bit mask determines a thread’s processor affinity or what core it can run on.
Here are some quick examples
00000000 00000000 00000000 00000000 = thread can run on all processors (affinity is basically off)
00000000 00000000 00000000 00000001 = thread runs only on the first processor
00000000 00000000 00000000 00000010 = thread runs only on the second processor
00000000 00000000 00000000 00000100 = thread runs only on the third processor
00000000 00000000 00000000 00000111 = thread can be distributed across the first three processors
So you can see how this works perfectly with up to 32-cores because there is a bit for each core, but this same system has to be tweaked to work with more cores. Russinovich says Windows 7/2008 Server will use processor groups where threads will be assigned to groups of cores. This means old bitmasks, and thereby existing applications, will work with the upcoming operating system.
But running threads on more cores doesn’t really help if those cores spend most of the time idling. Current Windows operating systems have a global dispatcher lock which essentially stop all cores to prevent objects from being accessed by more than one core. While this lock isn’t such a big deal on systems that have up to 8 cores, it presents a problem when scaling beyond that, Russinovich says.
Microsoft coders have tweaked threads to now lock objects locally, that is within their processor group, by adding two more wait states – the pre-wait state and the “real” waiting state. Confused? Well take a look at Russinovich’s 44-minute interview on MSDN and exponentially increase your geek knowledge.