Como um contador "% de tempo do processador" da Perfmon pode ser superior a 100%?

9

O contador Process(sqlservr)\% Processor Timeestá pairando em torno de 300% em um dos meus servidores de banco de dados. Esse contador reflete a porcentagem de tempo total que o SQL Server passou executando na CPU (modo de usuário + modo de privilégio). O livro, Sql Server 2008 Internals and Troubleshooting , diz que algo maior que 80% é um problema.

Como é possível que esse contador seja superior a 100%?

Bill Paetzke
fonte

Respostas:

21

Existem dois contadores com o mesmo nome:

Process\% Processor Time: A soma do tempo do processador em cada processador

Processor(_Total)\% Processor Time: O total para todos os processadores

Sua pergunta indica que você está usando o primeiro contador, o que significa que seu valor máximo é 100% * (sem CPU).

Portanto, se você tiver 4 CPUs, o máximo total é de 400% e 80% é realmente (400 * 0,8 =) 320% (e para 8 CPUs é 640%, etc etc)

Mark Henderson
fonte
Sim! É isso aí. Eu tenho 8 CPUs. Portanto, o uso total da CPU do sqlservr é de cerca de 37%. E isso significa que tudo está normal. Obrigado, @ Fararker!
Bill Paetzke
A qualquer momento. Eu tinha consultas semelhantes quando comecei a usar o perfmon em sistemas com várias CPUs.
Mark Henderson
2
O número de CPUs inclui hyperthreading? Por exemplo, se meu computador for quad core e eu tiver hyperthreading, devo levar em consideração 4 procs ou 8?
Matthew Rodatus
1
Existe uma maneira de encontrar o uso do processador de um único processo com um valor entre 0 e 100% (também conhecido como: mostra a carga de propagação em todas as CPUs)? Eu prefiro não fazer a divisão mim
Jeroen Vannevel
0

Este valor é calculado sobre a linha de base de (No of Logical CPUS * 100), portanto, será calculado sobre uma baselina de mais de 100.

Mahesh kumar Chiliveri
fonte