Windows 7 / Getting Started

Processor

Monitoring for processor usage is simpler than monitoring for memory, and the concepts are easier to grasp. After all, a processor is in one of only two states, right? Either busy or not busy? Unfortunately, it isn't quite that simple.

A processor can generally be in any of five states:

  • Idle
  • Processing an interrupt
  • Processing a user task
  • Processing a system task
  • Waiting

Each of these states can occur during each processor second.

Windows 7 and Windows Server 2008 R2 introduced a new state for a processor core called "parked." This basically means that a processor core is powered down, as it hasn't been used for a long period of time. For the purposes of our discussion, a parked core is equivalent to an idle core.
A processor utilization measurement is made every tick, where a tick is an interrupt from the system clock. Each tick is exactly 10 milliseconds apart. With today's fast processors, a processor may have been busy at some point during that tick (doing any of the items mentioned previously) and that wouldn't be recorded. Because of this, processor utilization tends to be higher than actually reported and the total of all the individual tasks processor times is often higher than expected.

The processor idle state occurs when, as you might expect, the processor isn't doing anything. The processor is simply waiting for an interrupt to occur. As a result of that interrupt, a system task or a user task (or both) may be scheduled for execution. Very low values of the Processor\% Idle Time counter may indicate that you should add additional processors to your computer. However, before making that decision, examine the other processor counters.

Interrupts are caused by hardware. They literally interrupt the computer from doing whatever it was doing to process an interrupt routine. Interrupt routines are used to do such things as update the system clock, process an I/O complete message, move data into a program's buffer, or wake up another task. Interrupts take priority over any other task running on a processor. Very high values of the Processor\% Interrupt Time counter may indicate faulty hardware.

User tasks are those tasks initiated by normal applications. This includes applications such as Exchange. User mode tasks are restricted in that they cannot access all physical memory, only that memory which is assigned to them by the operating system. They are also restricted in that they cannot access hardware directly; they must use a device driver or other operating system intermediary to access hardware. The Processor\% User Time counter identifies the relative amount of time spent processing user mode tasks. Generally, when a processor is fully utilized, it is being used primarily by user mode tasks.

Privileged tasks, or system tasks, are those tasks identified as being part of the operating system. Privileged tasks can access all physical memory and they can access hardware directly. Usually, the value of the Processor\% Privileged Time counter is quite low. The amount of processor resource consumed by privileged tasks can increase when, for example, garbage collection takes too long and memory resources are low, and when a system is being used as a file server.

Waiting time is counted as a piece of Processor\% Interrupt Time. It indicates that a processor is waiting for some resource and cannot proceed until that resource is available. Generally, this happens when a processor core is waiting on access to a particular piece of memory. When a processor is waiting on memory, it is called memory starved. Reduction of memory starvation is one of the primary reasons that multicore processors are more efficient than multiple single-core processors. Multiple single-core processors have to arbitrate access to the memory bus whereas in a multicore processor there is a single memory controller.

Finally in the Processor object, the Processor\% Processor Time counter is approximately the sum of the counters Processor\% Interrupt Time, Processor\% User Time, and Processor\% Privileged Time. It is measured by subtracting Processor\% Idle Time from 100%, so it will not necessarily be exactly equal to the sum of the counters. The Processor\% Processor Time counter should not normally exceed 80% for extended periods of time. If it does, you should consider upgrading the available processor resources on a server.

When looking at processor usage, another counter comes in quite handy. That counter is the System\Processor Queue Length counter. There is a single queue for any system, regardless of the number of processors. This queue contains all tasks (privileged and user - but not interrupts!) that are ''ready to run.'' That is, if processor time was available on any core to execute them, they would be running. There is only a single processor queue because any task can run on any core. Generally, the value of this counter should average less than one. Spikes up to the number of cores in a system are permissible. However, if on average the value of the counter is greater than one, then the system is processor bound. That is, the system does not have sufficient processor resources to meet the needs of all tasks.

Modern processors are discussed in terms of speed, sockets, and cores. Speed is obvious - it is the clock rate at which the processor executes. Although it is not the only indication of a processor's performance, speed is a key indicator of how quickly a processor can process instructions. Sockets indicate the number of physically separate processors contained within a computer. Each socket contains one physical processor. Cores are the number of logical processors within a socket. At the time of this writing, quad-core chips are common, a six-core chip is available, and an eight-core chip is expected soon. Each core is basically another processor contained within the same socket on the same chip.

Exchange Server 2010 Processor Requirements

These requirements are similar to the minimum and maximum memory recommendations we presented earlier; in general, Exchange Server 2010 will run faster the more processor you give it to use. The Microsoft Exchange team has also worked out processor recommendations for minimum, maximum, and recommended configurations for each server role. See Table-2 for those values.

Table-2: Processor Configurations for Exchange Server 2010 Roles
Exchange 2010 Server RoleMinimumMaximumRecommended
Edge Transport1 x processor core12 x processor cores4 x processor cores
Hub Transport1 x processor core12 x processor cores4 x processor cores
Client Access2 x processor cores12 x processor cores8 x processor cores
Unified Messaging2 x processor cores12 x processor cores8 x processor cores
Mailbox2 x processor cores12 x processor cores8 x processor cores
Multiple server roles (combinations of Hub Transport, Client Access, and Mailbox server roles)2 x processor cores24 x processor cores8 x processor cores

When planning for your Exchange Server 2010 solution, remember that the recommendations published by Microsoft do not include any overhead that may be caused by third-party solutions, such as on-server antivirus or antispam solutions.

In Exchange Server 2010, all Messaging Applications Programming Interface (MAPI) access was moved from the Mailbox server to the Client Access server (CAS), and a number of new features were added to the CAS (such as MailTips). This has increased the processor recommendation (and the minimum) for the CAS role rather dramatically. Also, new features (for example, archiving and retention) in the mailbox role have increased processor recommendations there as well.
Much work on multicore support was also done in Windows Server 2008 R2. That version of Windows Server supports the situation of having many processor cores much more efficiently than did earlier versions of Windows Server, making it possible to scale both further up and out than you could previously.
[Previous] [Contents] [Next]