Processor Bottleneck

[This topic is intended to address a specific issue called out by the Exchange Server Analyzer Tool. You should apply it only to systems that have had the Exchange Server Analyzer Tool run against them and are experiencing that specific issue.
The Exchange Server Analyzer Tool, available as a free download, remotely collects configuration data from each server in the topology and automatically analyzes the data. The resulting report details important configuration issues, potential problems, and nondefault product settings. By following these recommendations, you can achieve better performance, scalability, reliability, and uptime.
For more information about the tool or to download the latest versions, see "Microsoft Exchange Analyzers" at http://go.microsoft.com/fwlink/?linkid=34707.]

Topic Last Modified: 2006-02-24

The Microsoft® Exchange Server Analyzer Tool has identified that your server is experiencing a CPU bottleneck. Your server's CPU utilization has exceeded a recommended threshold. Counters that are used to identify processor bottlenecks or issues with processor utilization include:

Context Switches/sec performance counter under the System performance object.

If one of the following conditions is met, the Exchange Server Analyzer detects a bottleneck:

The average of the % Processor Time (_Total) performance counter under the Process performance object is greater than 70 percent.

The maximum of the % Processor Time (_Total) performance counter under the Process performance object is greater than 90 percent.

The average of Context Switches/second performance counter under the System performance object is greater than 20,000.

The Processor Queue Length performance counter under the System performance object is greater than two.

This % Processor Time (_Total) performance counter under the Process performance object provides overall utilization of the processors. The average CPU utilization should always be below 80 percent. Higher averages indicate a processor bottleneck. If the average processor utilization is higher than 70 percent, a warning is displayed. Frequent spikes in processor time above 90 percent also indicate a processor bottleneck.

The Processor Queue Length performance counter under the System performance object indicates the number of threads in the processor queue. There is a single queue for processor time, even on computers with multiple processors. A number higher than two indicates that threads are waiting for processor time and that there is a processor bottleneck.

If a processor bottleneck is located, you must determine from where most of the CPU utilization is originating. On an Exchange back-end server, most of the CPU utilization should be originating from the Store.exe process. If more than 20 percent of the CPU utilization is coming from a process other than Store.exe, it is important that you find out what other processes are expending CPU utilization.

If the CPU utilization for the processes listed in the table below is higher than the threshold, the Exchange Server Analyzer displays an error.

Process

Threshold for %Processor Time performance counter under the Process performance object

Store

90%

Inetinfo

20%

Emsmts

40%

Lsass

40%

System

40%

Mad

40%

ExMGMT

20%

W3WP

40%

The Exchange Server Analyzer also measures the difference between the idle processor time that is measured by the %Processor Time performance counter (Idle instance) and the %Processor Time performance counter (_Total instance) under the Process performance object. On a healthy Exchange back-end server, at least 70 percent of the processor time that is in use should be in the Store.exe process.

The Exchange Server Analyzer displays an error under the following conditions:

If the amount of processor time that is not spent in the processes related to the Exchange server (Store.exe, inetinfo.exe, emsmta.exe, lsass.exe, w3wp.exe, exmgmt.exe or mad.exe processes) is higher than 35 percent.

If the non-Exchange-related processor time is greater than 20 percent.

If there is a processor bottleneck, and less than 70 percent of the processor time is in the Store.exe process.

In all of these cases, it is recommended that you find out what other processes are expending your server's CPU time.

There are many ways to remove processor bottlenecks from your Exchange server.

To remove processor bottlenecks

If possible, add more or faster processors to the server. Also, enable hyper-threading if it is supported by the processors. You can enable hyper-threading by configuring the system BIOS. For more information, see your computer manufacturer's help documentation.

If increasing the processing power is not a viable option, you must reduce the load on the processors. To reduce the overall impact on the server, it is important to make sure that I/O-intensive, CPU-intensive, or memory-consuming tasks occur outside normal operation hours.

First, identify which applications or tasks are causing load on the server. If a non-Exchange application is not important to that server, run that application on another server. If possible, move server roles to other computers as well. For example, if the Inetinfo process is consuming a lot of CPU utilization, consider adding front-end servers to assume responsibility of the protocol work that Inetinfo performs. You can also move public folder access to a dedicated public folder server. Finally, if a server performs a lot of distribution list expansions, you can reduce CPU utilization by moving distribution list expansion to a dedicated distribution-list expansion server.

Make sure that CPU-intensive tasks (such as backup and maintenance tasks) occur during off-peak hours. Also make sure and that these tasks are performed in a staged manner. Staging a task means setting different start times, and preferably end times, for each task. Staging the maintenance and backup of databases or storage groups also lessens the effect of these resource-intensive tasks.

If you have removed all optional sources of load, and the CPU utilization is still too high, you must move users to another server to reduce the load. For more information, see Move User Mailboxes to Another Server