Laden...

CPU Usage auslesen: Werte schwanken - im Gegensatz zur Anzeige des Taskmanagers - stark

Erstellt von Kasperdelasopa vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.353 Views
K
Kasperdelasopa Themenstarter:in
118 Beiträge seit 2006
vor 12 Jahren
CPU Usage auslesen: Werte schwanken - im Gegensatz zur Anzeige des Taskmanagers - stark

Hallo zusammen,

ich möchte mit folgendem Code die Prozessotauslastung eines bestimmten Prozessors auslesen:



PerformanceCounter cpuCounter;cpuCounter = new PerformanceCounter();
cpuCounter.CategoryName = "Processor";
cpuCounter.CounterName = "% Processor Time";
cpuCounter.InstanceName = 1.ToString();

float cpu = cpuCounter.NextValue();


Dieser Code läuft in einem seperaten Thread, liest kontinuierlich die CPU Belastung aus und gibt Sie aus.

Aber irgenwas scheint da noch nicht zu stimmen. Obwohl ich im Taskmanager lese, dass beide meiner Prozessoren konstant zu ca. 50% ausgelastet sind, bekomme ich sehr unkonstante Werte.

Das soll heißen, das ich mit dem ersten Wert Beispielsweise den Wert 3% erhalte, mit dem 2. dann 0% mit dem dritten dann 50% mit dem 4. dann wieder 0% dann mal wieder 100%, dann wieder 0%....

Ich lese in Abständen von 500 ms die Werte aus.
Der Wert 0% wird allgemein sehr häufig ausgelesen, und das obwohl die CPU auslastung im Task Manager einer "konstante" Belastung von 45-55% anzeigt.

Woran kann das liegen.
Muss ich ein Mindestabstand zwischen dem lesen der Werte einhalten?
Muss vor dem Auslesen irgendwas neu initialisieren?

Gruß

2.891 Beiträge seit 2004
vor 12 Jahren

Der PerformanceCounter gibt dir die durchschnittliche CPU-Auslastung seit dem letzten Aufruf von NextValue zurück.
Wenn du also in sehr kurzen Zeitabständen abfragst, bekommst du eine relativ hohe Streuung. Machst du die Zeitabstände größer, ist die Streuung der Werte nicht ganz so groß.