Ruling Out Processor-Bound Problems

 

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

Counter Expected values

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.

  • The average CPU utilization should be below 90% at all times.

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.

  • This should be less than 2.

  • Infrequent spikes that do not correlate to the % Processor Time being above 75% are not an issue.

Example of a Processor-bound Problem

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

7307188f-4e4d-43d1-bd45-e7af67c8cba7

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

5076d44d-cc08-43a0-804b-7b913bd0e4fc

Improving Processor Performance

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.