Monitoring the Processor and System object counters provides valuable information about the utilization of your processors and helps you determine whether or not a bottleneck exists. You will want to include the following:
| • | Processor\% Processor Time for processor usage. Optionally, you can also monitor Processor\% User Time and % Privileged Time along with % Processor Time for more detail. |
| • | System\Processor Queue Length for bottleneck detection. |
To gauge the activity of the processor, check the Processor\% Processor Time counter. This counter shows the percentage of elapsed time that a processor is busy executing a nonidle thread.
When you examine processor usage, consider the role of the computer and the type of work being done. Depending on what the computer is doing, high processor values could mean either that the system is efficiently handling a heavy workload or that it is struggling to keep up. For example, if you are monitoring a user's computer, and that computer is used for computation, the computational program might easily use 100 percent of the processor's time. Even if this causes the performance of other applications on that computer to suffer, this can be addressed by changing workload.
On the other hand, values around 100 percent on a server computer that processes many client requests indicate that processes are queuing up, waiting for processor time, and causing a bottleneck. Such a sustained high level of processor usage is unacceptable for a server.
A processor bottleneck develops when threads of a process require more processor cycles than are available. Long processor queues can build up and system response suffers. The two most common causes of processor bottlenecks are CPU-bound programs and drivers or subsystem components (typically disk or network components) that generate excessive interrupts.
To determine whether a processor bottleneck exists due to high levels of demand for processor time, check the value of the System\Processor Queue Length counter. A queue of two or more items indicates a bottleneck. If more than a few program processes are contending for most of the processor's time, installing a faster processor will improve throughput. An additional processor can help if you are running multithreaded processes, but be aware that scaling to additional processors may have limited benefits. See Monitoring multiprocessor systems for more information.
In addition, the Server Work Queues\Queue Length counter, which tracks the current length of the server work queue for the computer, can reveal processor bottlenecks. A sustained queue length greater than 4 indicates possible processor congestion. This counter is a value at a specific time, not an average over time.
To determine whether interrupt activity is causing a bottleneck, watch the values of the Processor\Interrupts/sec counter, which measures the rate of service requests from input/output (I/O) devices. If this counter value increases dramatically without a corresponding increase in system activity, it can indicate a hardware problem.
You can also monitor Processor\% Interrupt Time for an indirect indicator of the activity of disk drivers, network adapters, and other devices that generate interrupts.
Note
| • | To detect hardware problems that may affect processor performance, such as IRQ conflicts, watch the values of System\File Control Bytes/second. |
To observe the efficiency of a multiprocessor computer, use the following additional counters.
| Counter | Description |
Process\% Processor Time | The sum of processor time on each processor for all threads of the process. |
Processor(_Total)\% Processor Time | A measure of processor activity for all processors in the computer. |
Thread\% Processor Time | The amount of processor time for a thread. |
If you want to assign a particular process or program to a single processor to improve its performance at the expense of other processes, in Task Manager, click Set Affinity. This option is available only on multiprocessor systems.
Controlling processor affinity can improve performance by reducing the number of processor cache flushes as threads move from one processor to another. This might be a good option for dedicated file servers. However, be aware that dedicating a program to a particular processor may not allow other program threads to migrate to the least-busy processor.
You may also want to control processor affinity for interrupts generated by disk or network adapters. A tool provided on the Resource Kit companion disc enables you to manage interrupts in this way.