Disk Related Counters
If you suspect that your system’s hard disk might be a bottleneck for the system, then there are two counters that you should examine within the Physical Disk performance object. The counters are % Disk Time and Current Disk Queue Length.
The % Disk Time counter shows you what percentage of the time the hard disk is busy. You want this counter’s average value to be as low as possible (but not zero). An average value of 90% or above indicates that the hard disk can’t keep up with the demand. This could be due to a hard disk that is too slow, or it could be caused by excessive paging. I will talk more about paging in the section on memory.
The Current Disk Queue Length counter tells you how many I/O operations are waiting for the hard disk to become available. Again, this number should be as low as possible. Experts give differing opinions of what is an acceptable value, but my opinion is that the average disk queue length should be three or less.
Memory Related Counters
PAGES/SEC – this value counts the number of times per second that the computer must access virtual memory rather than physical memory. A value above 20 is considered to be problematic
Committed Bytes and Available Bytes – The Committed Bytes counter traces the amount of virtual memory that’s in use. The Available Bytes counter monitors how much memory is actually available. As you might expect, as the Available Bytes counter decreases, paging increases, thus slowing down your machine. If you determine that the Available Bytes are often in short supply, you can correct the problem by adding memory. However, before you do, try watching both counters together as you open and close programs. If the committed bytes don’t decrease and available bytes don’t increase as you close programs, the system may have a memory leak which is caused by a software problem rather than insufficient RAM.
Cache Bytes – This counter monitors the amount of memory being used for the file system cache. Anything over 4 MB is considered to be to much. The solution is to add more memory.
Is Your Server Available?
Availability means your system or application is up and running, and one way of determining the availability of your system is to view the System\System Up Time counter, which tells you how many seconds it's been since your server last rebooted.
You can monitor uptime for any process running on your machine using the Process(instance)\Elapsed Time counter, which tells you how long that particular process has been running on your machine.
How Busy is it?
A server that's too busy may be unable to satisfactorily respond to client requests. The simplest measure of a system's busyness is Processor(_Total)\% Processor Time, which measures the total utilization of your processor by all running processes. Note that if you have a multiprocessor machine, Processor(_Total)\% Processor Time actually measures the average processor utilization of your machine (i.e. utilization averaged over all processors).
If your machine is running several applications or handles several server roles on your network, another way to measure busy-ness is to measure processor contention, which is an indication of how different threads are fighting for the attention of the processors on your machine. If too many threads are contending for use of the same processor, the requests by these threads get queued up, and looking at the System\Processor Queue Length counter gives an indication of how many threads are waiting for execution. If this counter is consistently higher than around 5 when processor utilization approaches 100%, then this is a good indication that there is more work (active threads) available (ready for execution) than the machine's processors are able to handle.
Is Hardware Functioning Properly?
There are a couple of perfmon counters you can track to monitor for signs that your machine's hardware devices are functioning properly. One of these is System\Context Switches/sec, which measures how frequently the processor has to switch from user- to kernel-mode to handle a request from a thread running in user mode. The heavier the workload running on your machine, the higher this counter will generally be, but over long term the value of this counter should remain fairly constant. If this counter suddenly starts increasing however, it may be an indicating of a malfunctioning device, especially if you are seeing a similar jump in the Processor(_Total)\Interrupts/sec counter on your machine.