12

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%?

Bill Paetzke
  • 855
  • 4
  • 12
  • 19

2 Answers2

24

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)

Mark Henderson
  • 68,316
  • 31
  • 175
  • 255
  • 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! – Bill Paetzke May 19 '10 at 01:15
  • Any time. I had similar queries when I first started using perfmon on multiple-cpu systems. – Mark Henderson May 19 '10 at 01:17
  • 2
    Does the number of CPUs include hyperthreading? For example, if my computer is quad core and I have hyperthreading, should I factor in 4 procs or 8? – Matthew Rodatus May 06 '15 at 17:24
  • 1
    Is there a way to find the processor usage of a single process with a value between 0 and 100% (aka: it shows you the spread load over all CPUs)? I'd prefer not to do the dividing myself – Jeroen Vannevel Oct 13 '16 at 20:36
0

This value is calculated over the base line of (No of Logical CPUS * 100), So this is going to be a calculated over a baselin of more than 100.