![]() |
[HELP] CPU / RAM AUslastung eines Prozesses auslesen
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. |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
Zitat:
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. |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
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.) |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
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. |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
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. ![]() 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. |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
Die Auslastung eines Prozesses (RAM, CPU) bekommt man auch über WMI
![]() |
AW: [HELP] CPU / RAM AUslastung eines Prozesses auslesen
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz