In their presentation at the PDC “Windows 7 Developer Boot Camp” pre-conference, Mark Russinovich and Arun Kishan highlighted some of the main changes in the Windows 7 and Windows Server 2008 R2 kernel. I’ll highlight some of these changes below.
Note that many of these changes were also explained in Alon’s session at the Windows 7 User Group.
Many Core Platform Support
Windows Server 2008 R2 now supports 256 logical processors, as opposed to “only” 32 or 64 logical processors on the 32 and 64 bit versions of Windows Server 2008. The amazing thing is that the 256 processors limitation is not derived from the architecture chosen – it is simply the number of processors in the strongest hardware the OS was tested on! Just imagine owning a 256 processor machine…
Core Scalability Performance
Tests have found that when scaling to a large number of processors, more than 15% of the processing time is lost to lock contentions in the OS. One of the main culprits of this phenomenon is the Dispatcher Lock, which is responsible for synchronizing access to most of the kernel locks and process accesses thus causing a system wide bottle-neck. Splitting the lock to 11 classes of locks arranges in a hierarchy allows Windows 7 to be much more scalable across processors – x1.7 scalability when transitioning from 128 processors to 256 processors, as opposed to x1.4 scalability to 64 logical processors with the previous kernel.
Many changes have been performed to allow more efficient energy usage. These include Core Parking which basically parks a core in idle mode when the system load does not require its usage, thus allowing it to shut itself down and save energy and waking it back up when more load is created.
Furthermore, improvements to the timer management APIs allow applications to express a tolerable delay in their timer notifications – allowing the OS to coalesce timer notifications together and conserving power by allowing the CPU to maintain idle for a longer period of time.
Core Scheduler Changes
The OS was added with special handling of Simultaneous Multi-Threaded CPUs (SMT), also known as Hyper-Threaded CPUs. The most basic change is that the OS first tries to utilize all of the physical “single” cores before resorting to use to logical processors on the same physical core, thus allowing higher performance gains.