This one's easy, right? Open up performance monitor and look at the CPU utilization, simple. Well, in reality certainly prolonged periods of high utilization are a bad thing but periods of 100% CPU utilization are quite normal and simply mean that the applications are making full use of the capacity of the system. Monitoring the CPU utilization is useful but even at 100% the system can still be responsive as long as the applications are well-written. In any multi-tasking operating system applications get allocations of processor time in turn and as long as the system can switch between them quickly enough it will still give acceptable performance.

When performance really starts to be impacted is if applications are queuing for processor time and being held up by one another. Fortunately modern versions of Windows are much better at scheduling applications but there are limits to what can be achieved. For that reason one of the most useful parameters to monitor is the processor queue length. If the operating system is struggling to balance the demands of multiple applications the applications will be queued for access to the processor and the queue length will go up. As a general rule, if the processor queue length exceeds twice the number of CPUs and/or processor cores in the system then performance will drop off dramatically.

If it is shown that the processor capacity in a system is the underlying problem the options are fairly straightforward:

  • Add more processors if the system can accommodate them
  • Move applications onto different servers
  • Upgrade the device as a whole to one with higher performance processor(s)

One thing to note is that the difference between having one processor and more than one can be very significant. In a multi-tasking operating system, such as all modern versions of Windows, the OS will schedule tasks for access to the processor and if there is only one processor in the system a single application can hog the processor despite the best efforts of the OS to schedule other tasks. With two or more processors the OS has more flexibility in allocating tasks so even if the utilization is very high the system can be more responsive.