Common Performance Monitor 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.

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 you observed poor performance.
  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.

Object

Counter

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 x Total Number of Disks)

> (2 x Total Number of Disks)

 

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.

<= (50 x Total Number of Cores)

> (50 x Total Number of Cores)

 

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:
<= 800MB
With /3GB switch:
<= 1,800MB

Without /3GB switch:
> 800MB
With /3GB switch:
> 1,800MB

 

 

 

 

 

Processor

% Processor Time._Total

Percentage of elapsed time that the processor spends to execute a non-Idle thread.

< 80

> 80

 

 

 

 

 

SQLServer:
BufferManager

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.

>= 300

< 300