Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi CPU Auslastung von Diensten / Services (https://www.delphipraxis.net/192268-cpu-auslastung-von-diensten-services.html)

4dk2 4. Apr 2017 13:52

Delphi-Version: 10 Berlin

CPU Auslastung von Diensten / Services
 
Hallo zusammen,

Habe mir mehrere Möglichkeiten angeschaut um die CPU Auslastung auszulesen,
aber bei jeder kriege ich von normalen Programmen die Auslastung, von Diensten jedoch nicht.
System: Windows 10 x64, meine Anwendung 32bit, der Dienst den ich auslesen will auch 32bit.
Der Dienst Hat auch permanent CPU Auslastung, so zwischen 15 und 20% (laut Windows 10 Taskmanager und Sysinternals Processmonitor)

diese Methode benutze ich grade :
http://www.delphipraxis.net/106890-c...-prozesse.html
Die PID habe ich zum testen, beim Aufruf hardcoded.

Als erstes muss die Anwendung aber über Admin-Rechte verfügen, sonst schlägt OpenProcess(...) fehl.

Ich denke der Fehler liegt in der Berechnung des eigendlichen Prozenzwertes,bzw gibt es bei Diensten vielleicht eine Besonderheit:
z.b:
Delphi-Quellcode:
function GetCPUTimeForProcess(Process: TCPULOAD): Integer;
.

lKernel = 6171
lUser 34515
dwTime 18528906

=(6171+34515)*100) div 18528906
=0,2195812316172363
=nach dem trunc logischerweise 0

Wenn ich die Formel auf
Delphi-Quellcode:
((lKernel+lUser)*100*100) div (dwTime)
änder schaut es besser aus.
Aber da ich Null Ahnung von GetProcessTimes() habe, und auch nichts spezielles zu Diensten gefunden habe, dachte ich, ich frage mal euch ;)

himitsu 4. Apr 2017 14:16

AW: CPU Auslastung von Diensten / Services
 
Du brauchst natürlich gewisse Rechte, um diese Daten auslesen zu dürfen,
wenn die Prozese mit höheren Rechten laufen und/oder zu einer anderen Sitzung/Nutzeraccount gehören.
Genaueres findete man in der Dokumentation (MSDN).

einfache Lösung: Administator
aufwändigere Lösung: nur die benötigten Privilegien besorgen



GetTime arbeitet nur mit Sekunden+Millisekunden, also nach mehr einer Minute CPU-Zeit, kann da nichts mehr stimmen.

4dk2 4. Apr 2017 14:47

AW: CPU Auslastung von Diensten / Services
 
Zitat:

Zitat von himitsu (Beitrag 1366405)
GetTime arbeitet nur mit Sekunden+Millisekunden, also nach mehr einer Minute CPU-Zeit, kann da nichts mehr stimmen.

Ja, wie kann man denn die CPU Auslastung von dem Service denn richtig ermitteln? ;)

und abgesehen davon ist das Beispiel "Müll" wenn es abhänig von der Laufzeit des Prozesses ist.

t.roller 4. Apr 2017 15:09

AW: CPU Auslastung von Diensten / Services
 
Liste der Anhänge anzeigen (Anzahl: 1)
http://www.delphipraxis.net/1184857-post4.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz