When searching for the cause of a server performance problem, identify where the system is constrained by checking the following resource categories in order. Identify and resolve any problems in one category before moving on to the next.

1. CPU

A high percentage of CPU busy time may indicate the system is CPU-bound:

  • Linux/Unix:
    • vmstat (%sys + %usr) > 90%
  • Windows:
    • perfmon Processor/% Processor Time > 85%

2. Memory

Excessive paging activity or low available memory may indicate the system is memory-bound:

  • Unix/Linux:
    • High rate of page-outs
    • High free-rate to scan-rate ratio
  • Windows:
    • perfmon Memory\Available Bytes < 4 MB
    • perfmon Paging File\% Usage > 70%

3. Disk

A high percentage of CPU I/O wait time, or high I/O response times (generally, more than 20 milliseconds, though requirements vary by application) may indicate the system is I/O-bound:

  • Unix/Linux:
    • vmstat %iowait > 25%
    • Excessive iostat await times (generally, more than 20 milliseconds)
  • Windows
    • Excessive perfmon Avg. Disk sec/Transfer times (generally, more than 20 milliseconds)

4. Network

If performance is still poor, and the system doesn't appear to be constrained by CPU, memory, or disk I/O, then consider whether performance may be network-bound. In particular, check for network link saturation and firewall interactions.


Article number: 
Last updated: 
May 19, 2016