Performance counters to find out bottlenecks of Windows Server

This guide shows performance counters to find out bottlenecks of Windows Server and criteria.

CPU

CounterDescription
\Processor(*)\% Processor TimeThe percentage of elapsed time that the processor spends to execute a non-Idle thread.

% Processor Time (_Total) is the average of all Processors. So it’s difficult to find out if the value of one of all is 100%. Therefore, you have to watch each of them.

If Total is greater than 85%, specs of CPUs are not likely enough.
If a value of individual processor is high, it is likely application’s fault. In that case, the application needs updates to allow processes to be distributed to some processors.
\Processor(_Total)\Interrupt TimeThe time the processor spends receiving and servicing hardware interrupts during sample intervals.

If this value is greater than 15%, it is likely hardware’s fault.
\System\Processor Queue LengthThe number of threads that are ready but current unable to run on the processor due to another active thread.

If this value is greater than 2 times the number of processor cores for a long term, specs of CPUs are not likely enough.

Disk

CounterDescription
\LogicalDisk(*)\% Free SpaceThe percentage of free space of logical disk drive.

If this value of system drive is less than 15%, free space is not likely enough for operating system.
\PhysicalDisk(*)\% Idle TimeThe percentage of time that a disk was idle during the sampling interval.

If this value is less than 20%, the disk may be overloaded.
\PhysicalDisk(*)\Avg. Disk sec/ReadThe average time, in seconds, of a data read operation from the disk.

If this value is greater than 25 msec, the disk system is experiencing latency when reading from the disk. For mission-critical system, threshold is approximately 10msec.
\PhysicalDisk(*)\Avg. Disk sec/WriteThe average time, in seconds, of a data write operation to the disk.

If this value is greater than 25 msec, the disk system is experiencing latency when writing from the disk. For mission-critical system, threshold is approximately 10msec.
\PhysicalDisk(*)\Avg. Disk Queue LengthThe average of the number of requests in disk queue during sampling interval.

If this value is greater than the number of spindles of disks +2, disk is likely bottleneck.

Spindle means the number of data disks of RAID
RAID 5 with 4 HDDs : the number of spindles is 3
RAID 0 with 2 HDDs : the number of spindles is 2
\LogicalDisk(*)\Disk Transfers/secThroughput rate of read/write from/to a disk.
(Complemental)
\PhysicalDisk(*)\Disk Bytes/secThe rate of read/write from/to a disk. (Bytes/sec)
(Complemental)
\PhysicalDisk(*)\Disk Read Bytes/secThe rate of read from a disk. (Bytes/sec)
(Complemental)
\PhysicalDisk(*)\Disk Reads/secThe rate of read from a disk. (the number of I/Os per sec)
(Complemental)
\PhysicalDisk(*)\Disk Write Bytes/secThe rate of write to a disk. (Bytes/sec)
(Complemental)
\PhysicalDisk(*)\Disk Writes/secThe rate of write to a disk. (the number of I/Os per sec)
(Complemental)

Memory

These counters are to find out a memory leaks not bottlenecks.

CounterDescription
\Memory\% Committed Bytes In UseThe ratio of committed bytes to commit limit. It means the virtual memory usage ratio.

If this value is greater than 80%, the memory capacity is not likely enough.
\Memory\Available MBytesThe size of physical memory that can be used for running process.

If it shows a continued decline, a memory leak is likely occurring.
\Memory\Pool Nonpaged BytesThe size of Non-Paged Pool Memory.

If it shows a continued increase, memory area for kernel is likely compressed.
\Memory\Pool Paged BytesThe size of Paged Pool Memory.

If it shows a continued increase, memory area for kernel is likely compressed.
\Memory\Committed BytesThe usage of memory.
(Complemental)
\Memory\Page Faults/secThe number of page faults per 1 second.
(Complemental)

Network

CounterDescription
\Network Interface(*)\Bytes Total/secThe rate at which bytes are sent and received over each network adapter.

If this value greater than 70% of NIC interface (approximately 85MB/sec if 1Gbbs NIC), network traffic is likely saturated.
\Network Interface(*)\Output Queue LengthThe length of the output packet queue

If this value is greater than 2, network traffic is likely saturated.
\Network Interface(*)\Packets Received/secThe number of packets received over each network adapter per 1 second.
(Complemental)
\Network Interface(*)\Packets Sent/secThe number of packets sent over each network adapter per 1 second.
(Complemental)
\Network Interface(*)\Packets/secThe number of packets sent and received over each network adapter per 1 second.
(Complemental)

Process

CounterDescription
\Process(Process Name)\Handle CountThe current number of handles opened by processes.

If this value if greater than 10,000, a handle leak is likely occerring.
\Process(Process Name)\Private BytesThe size of memory area that is allocated to the process and can not be shared with other process.

If it shows an increasing trend, a memory leak is likely occerring.