Common Performance Monitor counter thresholds


Article ID: 181816


Updated On:


Management Platform (Formerly known as Notification Server)


What are some commonly used Performance Monitor (perfmon) counter thresholds?



This article lists some common perfmon counters with descriptions and thresholds. The threshold values listed here are meant for use as a general 'rule-of-thumb' and each should be interpreted in context of the specific performance issue currently at hand.

The following information should be validated with the most current best practices provided by Microsoft for Server type OSes. The information provided here is just a reference to things that you should consider.


When using these values, keep the following in mind:


  1. The threshold values provided below are averages, not min/max and are only useful when looked at within a meaningful time-period as the following points help to clarify.
  2. What is the time range captured in the perfmon data set?
  3. Extreme highs and lows within the time-range of the capture can result in less-useful averages. In these cases, try to narrow the time range and then look at counter values around the time(s) when the poor performance was observed.
  4. In general, to be considered a genuine bottleneck, a given counter's threshold must be exceeded either on average, or on a frequent basis, during the time period being analyzed.
  5. This is not meant to be a comprehensive nor definitive reference.




Description Normal range Threshold
.NET CLR Memory % Time in GC.<InstanceName> % Time in GC is the percentage of elapsed time that was spent in performing a garbage collection (GC) since the last GC cycle. This counter is usually an indicator of the work done by the Garbage Collector on behalf of the application to collect and compact memory. This counter is updated only at the end of every GC and the counter value reflects the last observed value; its not an average.  <30%  >=30%
Memory Free System Page Table Entries  The number of page table entries not currently in used by the system.  This counter displays the last observed value only; it is not an average. >8,000 <8,000
  Pages/sec The rate at which pages are read from or written to disk to resolve hard page faults. This counter is a primary indicator of the kinds of faults that cause system-wide delays... 0-15 >20
Physical Disk  Avg. Disk Queue Length The average number of both read and write requests that were queued for the selected disk during the sample interval. <=2*TotalNumberOfDisks >2*TotalNumberOfDisks
  Avg. Disk sec/Read The average time, in seconds, of a read of data from the disk.  4-8ms >15ms
  Avg. Disk sec/Write The average time, in seconds, of a write of data to the disk. <=10ms >50ms


Process %Processor Time.<InstanceName> % Processor Time is the percentage of elapsed time that all of process threads used the processor to execution instructions.


  PrivateBytes.w3wp.exe The current size, in bytes, of memory that this process has allocated that cannot be shared with other processes. 

Without /3GB switch:

With /3GB switch:

Without /3GB switch:


With /3GB switch:
Processor % Processor Time._Total  Percentage of elapsed time that the processor spends to execute a non-Idle thread. 



Buffer cache hit ratio

Percentage of pages found in the buffer cache without having to read from disk ... Because reading from the cache is much less expensive than reading from disk, you want this ratio to be high...

>98 <90
  Free Pages

Total number of pages on all free lists. 

>=640 <640
  Page Life Expectancy Number of seconds a page will stay in the buffer pool without references.  >=((buffer cache size)/4 * 300) <((buffer cache size)/4 * 300)