Sunday, January 23, 2011

How can a Perfmon "% Processor Time" counter be over 100%?

The counter, Process(sqlservr)\% Processor Time, is hovering around 300% on one of my database servers. This counter reflects the percent of total time SQL Server spent running on CPU (user mode + privilege mode). The book, Sql Server 2008 Internals and Troubleshooting, says that anything greater than 80% is a problem.

How is it possible for that counter to be over 100%?

  • There are two counters with the same name:

    Process\% Processor Time: The sum of processor time on each processor

    Processor(_Total)\% Processor Time: The total for all processors

    Your question indicates you're using the first counter, which means that its maximum value is 100% * (no of CPUs).

    So if you have 4 CPUs, then the total maximum is 400%, and 80% is actually (400 * 0.8 =) 320% (and for 8 CPUs it's 640%, etc etc)

    Bill Paetzke : Yep! That's it. I have 8 CPUs. So my sqlservr total CPU usage is actually about 37%. And that means everything is normal. Thanks, @Farseeker!
    Farseeker : Any time. I had similar queries when I first started using perfmon on multiple-cpu systems.
    From Farseeker

0 comments:

Post a Comment