
Ich habe versucht, die beste Methode zum Messen der CPU-Auslastung von Prozessen in einem Windows Server 2012R2-System zu finden und habe dabei festgestellt, dass es zwischen den Methoden zum Messen der Auslastung zahlreiche Inkonsistenzen gibt.
Anfangs habe ich versucht, die CPU-Auslastung über den Task-Manager zu beobachten, aber dieser liefert nur eine Momentaufnahme der Auslastung, keine Daten über einen bestimmten Zeitraum. Deshalb habe ich beschlossen, andere Tools wie Procmon oder Process Explorer zu verwenden, aber keines dieser beiden Tools zeigt die gleichen Zahlen oder auch nur die Rangfolge der Prozesse an.
Hier sind die Unstimmigkeiten:
1) Die Registerkarten „Prozesse“ und „Details“ des Task-Managers zeigen völlig unterschiedliche Werte für „%CPU-Auslastung“ und die Rangfolge dieser Prozesse an. Die Registerkarte „Prozesse“ zeigt beispielsweise Folgendes:
- abc.exe %24
- 123.exe %10
- sdf.exe %3
Während die Registerkarte „Details“ Folgendes anzeigt:
- Leerlauf %55 (das ist nicht der ungerade Teil)
- sdf.exe %11
- ert.exe %9
- abc.exe %7
2) Der CPU%-Wert im Process Explorer zeigt im Vergleich zur Registerkarte „Prozesse“ und zur Registerkarte „Details“ des Task-Managers unterschiedliche Werte an: Mir ist bewusst, dass die Werte möglicherweise mit Verzögerung oder geringfügigen Inkonsistenzen angezeigt werden, aber die an allen drei Stellen angezeigten Werte sind fast völlig unterschiedlich, genau wie im obigen Beispiel.
3) Process Monitor gibt auch inkonsistente Informationen über die Rangfolge der Prozesse hinsichtlich der CPU-Auslastung aus: Obwohl ProcMon keine Prozentwerte der Prozesse angibt, stimmt die Rangfolge dieser Prozesse (hinsichtlich der CPU-Zeit) weder mit der Rangfolge von Process Explorer noch von Task Manager überein.
Zusammenfassend lässt sich sagen: Welche dieser Messungen liefert die genaueste Darstellung der CPU-Auslastung zwischen Prozessen und warum?
Antwort1
Aus folgenden Gründen ist Process Explorer am genauesten:
- Es zeigt die prozentuale CPU-Auslastung pro Prozess standardmäßig auf zwei Dezimalstellen gerundet an, statt auf eine Ganzzahl
- Es verfolgt die Zeit, die für die Bearbeitung von Interrupts und DPCs aufgewendet wurde, und zeigt sie getrennt vom Leerlaufprozess an (der Task-Manager tut dies nicht).
- Es verwendet zusätzliche Systemmetriken, sodass Prozesse, die wenig CPU-Verbrauch verbrauchen, identifiziert werden können und, wenn möglich, eine genauere Darstellung des tatsächlichen CPU-Verbrauchs liefern.
PE ist das Detailtool und wird im Windows Sysinternals Administrator's Reference von Mark Russinovich und Aaron Margosis als das Tool zur Anzeige der detailliertesten Informationen erwähnt.
Bearbeiten: Die Möglichkeit, Interrupts zu verfolgen, kann auch für andere Aufgaben sehr nützlich sein, beispielsweise zum Debuggen von Software und zum Auffinden fehlerhafter Treiber.