Leistungsindikatoren für die CPU-Auslastung

1067
Bowi

Ich versuche, eine Installation zu überwachen und welche Prozesse die CPU am meisten verwenden, um zu sehen, ob ich sie zu stark belastet.

Derzeit überwache ich die Installation mit perfmon anhand der Zähler

  • \Processor(_Total)\% Processor Time (Gesamtnutzung)
  • \Process(*)\% Processor Time (Nutzung pro Prozess).

Was mich abschreckt, ist, wenn ich die Protokolle an CSV ausgeben,

  • \Processor(_Total)\% Processor Time ! = Process(_Total)\% Processor Time
  • \Process(_Total)\% Processor Time! = die Summe \Process(x)\% Processor Timealler laufenden Prozesse ( x)

Ein schneller Vergleichsgraph mit Excel: A quick comparison graph made with Excel

Was mache ich falsch?

0
Bitte geben Sie an, wie groß die Diskrepanz ist. Derzeit kann es sich nur um einen Rundungsfehler handeln. Seth vor 6 Jahren 0
Hi @Seth! Ich habe meiner Frage ein kurzes Excel-Diagramm hinzugefügt. Bowi vor 6 Jahren 0

1 Antwort auf die Frage

1
Jamie Hanrahan

Die Diskrepanz zwischen der Gesamtprozessorzeit (\ Prozessor (_Total) \% Prozessorzeit) und der Gesamtsumme der CPU-Zeit (Prozess (_Total) \% Prozessorzeit \ Prozess (_Total) \% Prozessorzeit) ist wahrscheinlich zeitbedingt bei erhöhter IRQL ausgegeben. Dies wird in PerfMon als "% Interrupt-Zeit" und "% DPC-Zeit" angezeigt.

Interrupt-Zeit ist Zeit, die in Interrupt-Service-Routinen verbracht oder mit diesen serialisiert wird. Dieser Code läuft ab IRQL 3. DPC-Zeit ist Zeit, die in "DPC-Routinen" oder mit ihnen serialisiertem Code verbracht wird. Dieser Code wird in IRQL 2 ausgeführt. DPC-Routinen werden hauptsächlich verwendet, um Arbeit auszuführen, die durch einen Interrupt ausgelöst wird, aber nicht im selben Serialisierungskontext wie die ISR ausgeführt werden muss.

Die Diskrepanz ist darauf zurückzuführen, dass die auf DPC-Ebene oder höher verbrachte CPU-Zeit in die Gesamtprozessorzeit einbezogen wird, nicht jedoch in die CPU-Zeit eines Threads oder Prozesses. Dies liegt daran, dass ein solcher Code nicht notwendigerweise mit den Aktivitäten des aktuellen Threads verknüpft ist. Daher ist es nicht sinnvoll, den aktuellen Thread für diese Zeit "aufzuladen".

Der geringfügige Unterschied zwischen \ Process (_Total) \% Processor Time und der Summe von \ Process (x) \% Processor Time für alle laufenden Prozesse ist wahrscheinlich auf Datenerfassungsprobleme in PerfMon zurückzuführen. Sie sehen, es gibt kein Prozessobjekt namens "_Total" und keinen Satz von CPU-Nutzungsindikatoren, die diesem Konzept entsprechen. PerfMon berechnet diese Summe einfach durch Addition der CPU-Zeiten für jeden Prozess, der zum Zeitpunkt der Erfassung vorhanden ist. Ebenso wird der Prozentsatz der CPU-Zeit für alle Prozesse nicht zum selben Zeitpunkt erfasst. Daher kann es zu geringfügigen "Schlupfereignissen" zwischen der von PerfMon beobachteten Summe und der Summe kommen, die Sie erhalten, wenn Sie alle auf dem Display angezeigten Zähler summieren.

Dies sind die hilfreichsten 1394 Zeichen, die ich heute gelesen habe. :-) Bowi vor 6 Jahren 0