Throttling Policies and CPUStartPercent

Throttling policies have this funny parameter called CPUStartPercent. This parameter defines the starting CPU use percentage at which Exchange will begin delaying inbound requests.  EWS, Exchange Active Sync, POP and IMAP honor the CPU Start Percent value in Microsoft Exchange Server 2010.

Three (no, five!) things to keep in mind:
1. The sampled CPU percent is across all CPUs. So at a CPUStartPercent of 75%, it (the process in question) would have to be using 75% of ALL CPUs for sleep throttling to kick in.
2. The sampling logic is an average over roughly a 10 second rolling window. This keeps us from responding to quick spikes in CPU.
3. This parameter is *per throttling policy*. This means that you could assign a different CPU start percent for Jane than you do for John. This is particularly useful if you have a service account whose work is more important than your ordinary user and where you just don't care if it taxes the system. Make wise decisions about this one, though, as a heavily taxed EWS will affect the user experience for someone using Outlook Web App (for example).
4. This delay is capped at 500 msec at a theoretical 100% CPU usage. However, this is *per* check. If you pass in a batch EWS request to get 100 items, it will check the CPU usage 100 times (once per item) for a maximum sleep of 50 sec... Keep that in mind :). Before you freak out about this, note that the operating system will do this anyway when it becomes overtaxed, just in a more non-deterministic fashion.
5. The delay time is linearly proportional to CPU usage. At CPUStartPercent, the delay is 0 (a thread yield) and increases linearly up to 500 msec at 100% CPU usage.

How can you determine if you are actually getting delayed due to sleep throttling? On the Exchange Client Access server, look at the MSExchange Throttling | Average Thread Sleep Time performance counter for the process you are interested in. It will give you an idea as to whether your requests are being affected by sleep throttling.

David Sterling
Exchange Web Services
Inside Microsoft Exchange Server 2007 Web Services