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:

Detecting a Processor Bottleneck

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.

Determining Sources of Processor Load

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.

Common Causes of Processor Bottlenecks on Back-End Servers

There are many possible causes for a performance bottleneck, including:

  • Other applications on the server expending CPU utilization

  • High RPC rates

  • Distribution list expansion

  • Backup and maintenance running during peak operating hours

  • Conversion of message content in messages caused by:

    • Multiple protocols running (for example, HTTP, POP3, IMAP4, Microsoft Office Outlook®)

    • Outlook 2000 or earlier versions that use offline folders (.ost files)

Removing Processor Bottlenecks

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

For More Information