Definition of Processor Queue Length
Processor queues are measured in units of threads. This counter is always 0 unless you are also monitoring a thread counter. All processors use a single queue in which threads wait for processor cycles. This length does not include the threads that are currently running. A sustained processor queue length greater than 2 generally indicates processor congestion. This is a count, not an average over the time interval.
This metric examines system performance. The processor queue length metric reports how many threads are currently queued and waiting to be run on a processor. In normal situations, the processor queue length spikes over 2 for short periods of time and is not a reason to worry. But if you see a processor queue length of 2 or greater for extended periods of time (5 minutes or more) on a regular basis, then your server is most likely experiencing a CPU bottleneck.
Generally, as discussed here: http://www.microsoft.com/resources/documentation/Windows/2000/server/reskit/en-us/core/fnef_mul_kfhm.asp, when evaluating a server for potential CPU bottlenecks, it is important to not only watch the processor queue length, but to watch the % Processor Time for all CPUs on the server. If you see that the processor queue length is often over 2 and that the Total % Processor Time is over 80% for all CPUs, then you can safely say that the server is experiencing a CPU bottleneck.
However, in virtual environments, such as VMware, this metric is not an accurate measure of processor queue lengths. For virtual machines, the processor queue length is usually 2 or more and never seems to go down to 0. This happens because a processor with 0 tasks in its processing queue is referred to idle (meaning that it has nothing to do). If we detect that the processor inside the virtual machine is idle, we stop running the virtual machine and return the processing resources back to the host operating system until we need to process something again. For example, when the next interrupt comes in for the virtual machine. However, processes inside the virtual machine are unaware that we are doing this because for the processor inside the virtual machine to be idle, all processes must be doing nothing at that point in time.
The result is that it is impossible for the performance monitoring tool in Microsoft Windows system to see that the processor inside the virtual machine has a queue length of 0. It is only running and can check the processor queue length if there is something in the queue.