Speicher- und CPU-Auslastung eines einzelnen Prozesses
-
Hallo,
ich konnte mir schon eine Liste mit allen Prozessen ausgeben lassen.
Doch wie kann ich jetzt aus einem Prozess-Handle oder einer ProzessID die Speicher- und CPU Auslastung "rausbekommen"? Für die CPU-Auslastung brauche ich ja vermutlich die Prozess-Zeit (GetProcessTimes), aber so ganz hinbekommen hab' ich es noch nicht.Bitte um hilfe.
gruß
Bastian
-
Wenn Du GetProcessTime in einem bestimmten Zeitabstand aufrufst, kannst Du die Differenzen errechnen, der neu verbrauchten Zeitund dies in relation zu dem Zeitinterval setzen, in dem Du gemessen hast!
Also GetTickCount/GetProcessTimes zusammen einmal aufrufen. z.B. auf einen Time in 1 Sekunde warten und das ganze nochmal. Der Rest ist Prozentrechnung...
-
Die bessere Methode ist via Performance-Counters... siehe perfmon.
Bzgl. GetProcessTimes/GetThreadTimes... man kann damit schöne Dinge machen... z.B. einen Prozess der sehr viel rechnet, aber keine Zeit braucht

http://blog.kalmbachnet.de/?postid=28
-
Jochen Kalmbach schrieb:
Bzgl. GetProcessTimes/GetThreadTimes... man kann damit schöne Dinge machen... z.B. einen Prozess der sehr viel rechnet, aber keine Zeit braucht

http://blog.kalmbachnet.de/?postid=28Sehr interessant. Gibt es denn eine zuverlässige Methode, die Laufzeit eines Threads zu ermitteln? Und spricht etwas gegen GetSystemTimes zur Ermittlung der Gesamtlaufzeit des Systems in Kontrast zu QueryPerformanceCounter/QueryPerformanceFrequency?
-
Jochen Kalmbach schrieb:
Die bessere Methode ist via Performance-Counters... siehe perfmon.
Sicher, das das besser ist? Ich hab' keine Ahnung, würde aber mal vermuten, daß perfmon auch nur auf GetThreadTimes zurückgreift.
-
Er greift sicher nicht auf die GetThreadTimes zurück, aber zum Messen wird vermutlich der selbe Mechanismus verwendet...