Ryan Haveson, a group program manager on the User Experience team, wanted to update folks on some progress with Task Manager since the Windows Developer Preview. In this post you'll find the updated Task Manager tools for managing systems with a large number of logical processors. This is scalability well beyond desktop PCs, and is designed for the server and data center. A big part of Windows development is that the OS scales across a wide range of form factors and CPU architectures.

Note on comments.  Please keep comments up to community standards.  Just a reminder that there is no moderation of comments other than automated spam protection.  –Steven Sinofsky

We talked about the new Task Manager in a previous post, and many of you have installed the Developer Preview and seen it for yourself. There was some interest on this topic so we thought we would take a moment to quickly share with you a feature that just showed up in our daily builds that you will be able to see for yourself in the future, in the Beta release.

The pictures below relate to a feature that server admins and people with access to mega-PC setups with lots and lots of logical processors often ask us about. One key thing to note up front is that here we are talking about logical processors, so if you have a system capable of hyper-threading, you will see multiple logical processors for each physical processor.

For those of you who have access to one of these many-processor systems, you know that the task manager CPU charts in Windows 7 have a few limitations:

  • Lack of real-time comparisons: When you are looking at a CPU graph for lots and lots of logical processors, it is the anomalies that are interesting. At scale, it is pretty hard to compare moving line graphs of a 60-second window of CPU utilization to understand what is going on.
  • Tiny graphs: When you get to the 64+ logical processor range, the graphs get pretty small. If you are trying to figure out which processors are being heavily used, you really have to squint to figure it out. When you get over 256 logical processors, you can barely read the charts at all.
  • Finding the processor ID: If you do identify an anomalous graph, there is no easy way to get the corresponding processor ID.

Below is the Windows 7 Task Manager CPU performance tab on a system with 160 logical processors.

CPU Usage History table contains 160 tiny cells, each showing a moving line graph of usage.
Figure 1: Old Task Manager showing 160 logical processors

As you can see, it is really hard to compare the cells in the CPU Usage History table to each other. The graphs are hard to read, and if you want to compare instantaneous CPU utilization, it is nearly impossible because each cell is showing a moving 60-second graph. Moreover, all the graphs in the CPU Usage History table look identical, so you can’t easily find the processor ID for a specific graph. In our previous post on Task Manager, we discussed the benefits of using a heat map as a visualization to convey and compare large amounts of numerical data. When we looked at designing the graphs for the “many-core view” of the new performance dashboard, a heat map was a natural fit.

In the screen shots below, taken from a current build of Windows 8, it is now easy to see all the logical processors at a glance and know which are being utilized to high and low capacity.

(Note: The screen shots below show Task Manager on a system with 160 logical processors with a simulated workload.)

Performance tab has 7 views: CPU, Memory, Disk 0, Disk 4, Disk 8, Ethernet, and Ethernet. In CPU view, table of logical processors is in form of a heat map, with percent usage indicated in each cell with a number and corresponding color.
Figure 2: New Task Manager showing 160 logical processors

In the new CPU graph, you can also get the logical processor ID that maps to each entry via a tooltip, by hovering over the entry with the mouse.

Tooltip for an entry at 100% usage reads "CPU 0 (Node 5)"
Figure 3: Tooltip showing the logical processor ID

A major benefit of a heat map is that it scales really well to large data sets. The new Task Manager will show as many logical processors as the OS supports (up to 640!). To make sure you always see the information at a meaningful size, when the data set gets too big for the window, the heat map scales to best fit, and a scroll bar appears as needed.

Heat map is still easy to read, as it shows 13 rows and 9 columns of data, with a scrollbar that allows you to see additional cells below the first 13 rows
Figure 4: With 160 logical processors, the CPU graph scales using a scrollbar

For those of you who really like to (micro-) manage every last detail of your system, you can even set which logical processor(s) each of your processes can use. To do this, you first find the ID of the logical core by hovering over one of the cells in the heat map, then go to the Details tab, right-click the process you want, and click “Set affinity.”


User has right-clicked "iexplore.exe" on the Details tab of Task Manager, which reveals context menu with commands for: Open file location, End process, End process tree, Debug, UAC virtualization, Create dump file, Set priority, Set affinity (shown selected), Analyze wait chain, Search online, Properties, and Go to service(s).
Figure 5: Set process affinity from the Details tab

Dialog reads "Which processors are allowed to run "iexplore.exe"? There is a dropdown list for Processor group, set to "Group 0". Below this is a set of check boxes for CPU 0 (Node 0), CPU 1 (Node 0), CPU 2 (Node 0), etc., and OK/Cancel buttons.
Figure 6: Select the logical processors for the process

Of course, setting processor affinity is only for the super-technical user who has a need or desire for that level of control—you can severely affect your system’s power management and performance if you don’t know what you are doing—so we made sure the OS would do a great job taking care of this for you. It is hard to do better than the sophisticated algorithms that Windows uses to automatically manage which processes are allocated to each logical processor based on hardware capability and topology.

--Ryan Haveson