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.