AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [HELP] CPU / RAM AUslastung eines Prozesses auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

[HELP] CPU / RAM AUslastung eines Prozesses auslesen

Ein Thema von Novo · begonnen am 24. Nov 2011 · letzter Beitrag vom 25. Nov 2011
Antwort Antwort
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#1

[HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 24. Nov 2011, 21:36
Hallo Community,

es gibt viele Beiträge und "Lösungen" rund um das Thema CPU und RAM Auslastung auszulesen.
Habe nun mehrere Ausprobiert (Taskmanager, TShellExecuteInfo, CpuUsage.pas), jedoch zeigen mir die alle falsche Werte sowohl bei CPU und RAM Auslastung an.
Wenn Windows Taskmanager sagt, Auslastung kontinuierlich bei 10% - 15%, sagt mir mein Code 24%, 30% etc. an.
Auch bei der RAM Auslastung sind es immer einige bis 100 MB mehr.

Benutze Delphi 7 auf Windows 7 x64.
Kommen die nicht mit MultiCores zurecht oder was ist das Problem?

Also ich möchte per Delphi Programm ein Prozess starten und mir dessen CPU / RAM Auslastung anzeigen.
Das Handle von hProcess habe ich.
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 24. Nov 2011, 23:34
Hallo Community,

es gibt viele Beiträge und "Lösungen" rund um das Thema CPU und RAM Auslastung auszulesen.
Habe nun mehrere Ausprobiert (Taskmanager, TShellExecuteInfo, CpuUsage.pas), jedoch zeigen mir die alle falsche Werte sowohl bei CPU und RAM Auslastung an.
Wenn Windows Taskmanager sagt, Auslastung kontinuierlich bei 10% - 15%, sagt mir mein Code 24%, 30% etc. an.
Auch bei der RAM Auslastung sind es immer einige bis 100 MB mehr.
Woher willst Du denn wissen, daß das, was der Taskmanager anzeigt, richtig ist (darauf basiert ja letztlich Deine Unkorrektheitsbehauptung)? Ist ein originales Windowsprogramm der Koordinatenursprung der Welt für Dich? Für mich nicht.

Wenn ich den Taskmanager und den Prozeßexplorer (auch der wird immerhin von Winzigweich angeboten) gleichzeitig laufen lasse, so sind deren angezeigten Werte auch nicht gleich, zumal sie auch anscheinend zu unterschiedlichen Zeitpunkten aktualisiert werden. Warum also externe Programme, die sich letztlich auch nur massiv der API bedienen, zweitklassig sein sollen, erschließt sich mir nicht.

Geändert von Delphi-Laie (24. Nov 2011 um 23:36 Uhr)
  Mit Zitat antworten Zitat
Novo

Registriert seit: 27. Mai 2007
122 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 25. Nov 2011, 01:33
Hmm das ist ein Argument.
Bin davon ausgegangen dass das, was der Windows Taskmanager anzeigt stimmt.
Aber warum werden unterschiedliche RAM Auslastung Werte angezeigt? Unterschied von über 100MB bei der Firefox.exe, das ist keine Aktualisierungsgeschwindigkeit Toleranz mehr.
Zumal die Gesamtauslastung meiner Quadcore CPU nun wirklich nicht stimmen kann. (Taskmanager und Sidebar Gadget sagen 4%, Delphi Tool meint mal 30% dann 45% dann 20% etc.)
Takeo
Don't make me angry...
You wouldn't like me when I'm angry!
Blut ist leben, Leben ist Blut, ins Licht geboren suchen wir die Dunkelheit!
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 25. Nov 2011, 02:07
Alles eine Frage der Interpretation...

CPU-Last:

Momentane Last bei Abruf, Durchnitt, Median oder Peek seit letztem Abruf. Alleine die Liste gibt 4 stark unterschiedliche Werte.

Speicher:

Code, Stack, Heap, Windows-Objekte (Handles, GDI), DLLs... je nachdem was man mit in die Bewertung nimmt, kann das auch ganz schön abweichen.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 25. Nov 2011, 02:21
Was hast du denn im Taskmanager ausgewählt? Privater Arbeitssatz (was der Standard ist), Arbeitssatz, ...? Im Standard wird nämlich nur der Arbeitsspeicher angezeigt, der exklusiv von dem Prozess verwendet wird, nicht aber der, den der Prozess zwar nutzt, aber der nicht als MEM_PRIVATE markiert ist.

Diesen privaten Arbeitssatz bekommst du mit GetProcessMemoryInfo und PROCESS_MEMORY_COUNTERS_EX (in PrivateUsage, im Gegensatz zum WorkingSetSize, das den gesamten Arbeitssatz enthält), nicht mit PROCESS_MEMORY_COUNTERS.
http://msdn.microsoft.com/en-us/libr.../ms684874.aspx

Bei Mehrkernprozessoren gibt es was die CPU-Auslastung angeht verschiedene Berechnungsmethoden. Der Taskmanager rechnet diese um auf alle vier Kerne. Die meisten Quelltexte, die ich kenne, rechnen hingegen pro Kern, so dass du durch die Anzahl der Kerne teilen musst um auf die selben Werte zu kommen.
Beim Process Explorer kann ich mir die kumulierten Werte für alle Kerne nicht so recht erklären. Die einzelnen Kerne stimmen aber mit dem Taskmanager von Messungenauigkeiten abgesehen überein.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 25. Nov 2011, 06:30
Die Auslastung eines Prozesses (RAM, CPU) bekommt man auch über WMI

http://theroadtodelphi.wordpress.com...i-–-processes/
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen

  Alt 25. Nov 2011, 07:29
Die Auslastung eines Prozesses (RAM, CPU) bekommt man auch über WMI

http://theroadtodelphi.wordpress.com...i-–-processes/
Würde im Moment wohl zu Beginn meiner Suche auch immer bei theroadtodelphi nachschauen, wenn ich Informationen vom System bekommen will. Dort gibt es massig Code for die Abfrage über WMI, selbst einen Code-Creator ist dort zu finden, wobei ich leider nicht sagen kann, ob der was taugt.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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