Im Zusammenhang mit dieser Frage:Wie kann ein Perfmon-Zähler „% Prozessorzeit“ über 100 % liegen?
Ich habe Prozesse im Task-Manager manuell beobachtet, als ein Benutzer ein Problem meldete und der Oracle-Prozess über einen längeren Zeitraum (5–15 Minuten) zu 80–95 % ausgelastet war.
Ich habe also in den letzten paar Tagen Perfmon verwendet, um diesen Prozess zu verfolgen, und habe bemerkt, dass er für kurze Zeiträume ÜBER 100 % liegt. In Perfmon wird also offenbar die Gesamtsumme aller Prozessoren angezeigt.
Meine Frage ist, ob die 80–95 %, die ich im Task-Manager gesehen habe, eigentlich 160–180 % im Leistungsmonitor entsprochen hätten, oder?
(unter Berücksichtigung der Tatsache, dass manche Prozesse möglicherweise nicht alle Prozessoren effizient nutzen können).
Der Task-Manager zeigte hier 80-95 % CPU-Auslastung an:
Der Leistungsmonitor kann für ein einzelnes Prozessobjekt einen Spitzenwert von über 100 % erreichen:
Antwort1
Untersuchen von Prozessorzeitdaten auf MSDN
Auf Mehrprozessorsystemen wird der vom Systemmonitor gemeldete Wert „Prozessor\Prozessorzeit in %“ für keinen bestimmten Prozessor oder Thread jemals 100 Prozent überschreiten.
Andererseits kann der für das Prozessobjekt gemeldete Wert „% Prozessorzeit“ Werte über 100 Prozent aufweisen. Wenn solche Werte auftreten, könnte dies darauf hinweisen, dass Threads des Prozesses kumulativ mehr als 100 Prozent eines Prozessors verwenden.
Es besagt im Wesentlichen, dass bei der Untersuchung eines Prozesses (mit mehreren Ausführungspfaden) eine Auslastung von über 100 % erreicht wird, wenn der Code auf mehreren Kernen gleichzeitig ausgeführt wird. Dem Prozess stehen mehrere Kerne zur Verfügung, und er kann sich entscheiden, auf einigen davon zu laufen.
Wenn Sie hingegen einen CPU-Thread untersuchen, werden Sie nie einen Wert über 100 % sehen, da dies die tatsächlich gemessene Ressource ist. CPU-Thread ist die Microsoft-Bezeichnung für CPU-Kern: In einem HT-fähigen Kern gibt es zwei Threads.