Wie kann ein Perfmon-Zähler für "% Prozessorzeit" über 100% liegen?

9

Der Zähler Process(sqlservr)\% Processor Timeschwebt zu 300% auf einem meiner Datenbankserver. Dieser Zähler gibt den Prozentsatz der Gesamtzeit an, die SQL Server für die Ausführung auf der CPU aufgewendet hat (Benutzermodus + Berechtigungsmodus). Das Buch SQL Server 2008 Interna und Fehlerbehebung besagt, dass alles, was größer als 80% ist, ein Problem darstellt.

Wie ist es möglich, dass dieser Zähler über 100% liegt?

Bill Paetzke
quelle

Antworten:

21

Es gibt zwei gleichnamige Zähler:

Process\% Processor Time: Die Summe der Prozessorzeit auf jedem Prozessor

Processor(_Total)\% Processor Time: Die Summe für alle Prozessoren

Ihre Frage zeigt an, dass Sie den ersten Zähler verwenden. Dies bedeutet, dass sein Maximalwert 100% * beträgt (Anzahl der CPUs).

Wenn Sie also 4 CPUs haben, beträgt das Gesamtmaximum 400% und 80% tatsächlich (400 * 0,8 =) 320% (und für 8 CPUs 640% usw. usw.)

Mark Henderson
quelle
Ja! Das ist es. Ich habe 8 CPUs. Die gesamte CPU-Auslastung von sqlservr beträgt also ungefähr 37%. Und das heißt, alles ist normal. Danke, @Farseeker!
Bill Paetzke
Jederzeit. Ich hatte ähnliche Fragen, als ich anfing, perfmon auf Systemen mit mehreren CPUs zu verwenden.
Mark Henderson
2
Enthält die Anzahl der CPUs Hyperthreading? Wenn mein Computer beispielsweise Quad-Core ist und ich Hyperthreading habe, sollte ich 4 oder 8 Prozesse berücksichtigen?
Matthew Rodatus
1
Gibt es eine Möglichkeit, die Prozessorauslastung eines einzelnen Prozesses mit einem Wert zwischen 0 und 100% zu ermitteln (auch bekannt als: Es zeigt Ihnen die verteilte Last auf alle CPUs)? Ich würde es vorziehen, mich nicht zu teilen
Jeroen Vannevel
0

Dieser Wert wird über die Basislinie von (No of Logical CPUS * 100) berechnet. Dies wird also über einen Basiswert von mehr als 100 berechnet.

Mahesh Kumar Chiliveri
quelle