W jaki sposób licznik „Processor Time” Perfmon może przekroczyć 100%?

9

Licznik „ Process(sqlservr)\% Processor Timeunosi” się na około 300% na jednym z moich serwerów baz danych. Ten licznik odzwierciedla procent całkowitego czasu, jaki SQL Server spędził na procesorze (tryb użytkownika + tryb uprawnień). Książka, Sql Server 2008 Wewnętrzne i rozwiązywanie problemów , mówi, że cokolwiek większego niż 80% stanowi problem.

Jak to możliwe, aby ten licznik przekroczył 100%?

Bill Paetzke
źródło

Odpowiedzi:

21

Istnieją dwa liczniki o tej samej nazwie:

Process\% Processor Time: Suma czasu procesora na każdym procesorze

Processor(_Total)\% Processor Time: Suma dla wszystkich procesorów

Twoje pytanie wskazuje, że używasz pierwszego licznika, co oznacza, że ​​jego maksymalna wartość wynosi 100% * (brak procesorów).

Więc jeśli masz 4 procesory, wówczas całkowite maksimum wynosi 400%, a 80% to tak naprawdę (400 * 0,8 =) 320% (a dla 8 procesorów to 640% itd.)

Mark Henderson
źródło
Tak! Otóż ​​to. Mam 8 procesorów. Tak więc całkowite użycie mojego procesora sqlservr wynosi około 37%. A to oznacza, że ​​wszystko jest normalne. Dzięki, @Farseeker!
Bill Paetzke
W dowolnym momencie Miałem podobne zapytania, kiedy po raz pierwszy zacząłem używać perfmon w systemach z wieloma procesorami.
Mark Henderson
2
Czy liczba procesorów obejmuje hyperthreading? Na przykład, jeśli mój komputer jest czterordzeniowy i mam hyperthreading, czy powinienem wziąć pod uwagę 4 procy czy 8?
Matthew Rodatus
1
Czy istnieje sposób na znalezienie użycia procesora przez pojedynczy proces o wartości od 0 do 100% (aka: pokazuje rozkład obciążenia na wszystkie procesory)? Wolałbym nie dokonywać podziału
Jeroen Vannevel
0

Ta wartość jest obliczana na podstawie linii bazowej (Liczba logicznego CPUS * 100), więc będzie to obliczana na podstawie linii bazowej większej niż 100.

Mahesh Kumar Chiliveri
źródło