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.
Note: 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:
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*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. |
<=50*TotalNumberOfCores |
>50*TotalNumberOfCores |
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: >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. | >=((buffer cache size)/4 * 300) | <((buffer cache size)/4 * 300) |