Ruling Out Processor-Bound Problems
Topic Last Modified: 2005-05-18
Generally, identifying that a server is processor bound is straightforward. Use the counters listed in the following table to determine whether there are any contentions on the processors.
Performance Counters for Processors
Processor\% Processor Time (_Total)
Indicates the percentage of time the processor is running non-idle threads.
You can use this counter to monitor the overall utilization of the processors or per-processor.
System\Processor Queue Length
Indicates the number of threads in the processor queue.
There is a single queue for processor time, even on computers with multiple processors. This counter shows ready threads only, not threads that are currently running.
The Exchange server shown in the following figure is experiencing a problem due to excessive processor utilization. The CPU utilization is approximately 90% (as indicated by the Processor\% Processor Time counter), and the System\Processor Queue Length counter is consistently high.
Monitoring a processor using the Performance snap-in
To make sure that Exchange is responsible for this CPU utilization, use the Performance snap-in to view the Processor\% Processor Time counter for all processes. As shown in the following figure, the Store.exe process is indeed the major cause for the CPU utilization.
Monitoring the % Processor Time using the Performance snap-in
The following list describes how you can improve processor performance:
Ensure database maintenance and backups occur at off-peak hours and are staged
To reduce the overall impact on the server, it is important to ensure that I/O-intensive, CPU-intensive, or memory-consuming tasks (such as backup and maintenance) occur outside normal operation hours. You can further lessen the effect that these resource-intensive tasks have by staging (that is, setting different start and preferably end times for tasks) the maintenance and backup of databases or storage groups.
Offload roles to other servers
Many tasks that an Exchange server performs can be set to occur only at dedicated servers. For example, if a server sees a lot of distribution list expansions, you can reduce CPU utilization by offloading distribution list expansion to a dedicated server.