Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Auflastung von MainThread messen (https://www.delphipraxis.net/202593-auflastung-von-mainthread-messen.html)

backdraft 21. Nov 2019 07:11

Auflastung von MainThread messen
 
Hallo,

gibt es eine einfache Möglichkeit zu messen, wie ausgelastet mein MainThread ist?
Ich hab das Problem, dass meine Anwendung immer wieder lagged, obwohl alle Arbeiten außer die Statusanzeigen in Threads laufen.
Die Statusmeldungen werden via Thread.Queue übergeben.

Danke
Oliver

DieDolly 21. Nov 2019 07:41

AW: Auflastung von MainThread messen
 
Zitat:

Zitat von backdraft (Beitrag 1451667)
Ich hab das Problem, dass meine Anwendung immer wieder lagged, obwohl alle Arbeiten außer die Statusanzeigen in Threads laufen.r

Ein ganz einfacher Test. Stoppe mal alle Threads, die Queue oder sonst was aufrufen. Laggt es dann? Wenn nicht, hast du vermutlich zuviele mit dem Hauptthread synchronisierende Threads oder zu viele Synchronisationen. Was ich mir aber nicht vorstellen kann.

backdraft 21. Nov 2019 10:26

AW: Auflastung von MainThread messen
 
Also wenn alle Threads gestoppt sind, lagged nix.
Es passiert nur, wenn halt Threads laufen.
Ich würde tippen, dass so ca. 10-20 gleichzeitig laufen, also nix weltbewegendes.
Es kommen auch nur ca. 3-5 Status Meldungen pro Sekunde insgesamt rein.

Luckie 21. Nov 2019 10:28

AW: Auflastung von MainThread messen
 
Und was macht dein Programm bzw. die Threads?

DieDolly 21. Nov 2019 11:28

AW: Auflastung von MainThread messen
 
Zitat:

Ich würde tippen, dass so ca. 10-20 gleichzeitig laufen, also nix weltbewegendes.
Es kommen auch nur ca. 3-5 Status Meldungen pro Sekunde insgesamt rein.
Es kommt eher darauf an, wie die Meldungen gesendet und verarbeitet werden.

Ich hatte früher auch Probleme mit Rucklern und sowas, wenn ich aus einem Thread heraus mit Queue oder Synchronize die Hauptform aktualisiert habe.
Mittlerweile schicke ich Änderungen mit PostMessage und arbeite die Message in WndProc ab. Keine Ruckler mehr selbst bei 10 Aktualisierungen Pro Sekunde.

Hier habe ich das schon einmal geschrieben
https://www.delphipraxis.net/1414526-post9.html

sakura 21. Nov 2019 12:19

AW: Auflastung von MainThread messen
 
Und wenn Du die Priorität der anderen Threads geringer hälst, als die des Main-Threads? 20 Threads mit gleicher Prio heißt ja auch, dass sich alle die Prozessoren zu gleichen Teilen teilen, was auch zu Rucklern führen kann.

...:cat:...

KodeZwerg 21. Nov 2019 13:05

AW: Auflastung von MainThread messen
 
Da die Frage war Threads zu messen, aber nicht direkt nach einer Delphi Lösung gefragt war, hier meine Antwort:
Process Explorer von SysInternals oder Process Hacker laden und installieren.

Beide Programme verstehen es gut einen Prozess samt seinen Threads darzustellen, natürlich inklusive derer Auslastung.

Ich hoffe Dir ist damit etwas weitergeholfen (Thread ID's werden auch in beiden angezeigt damit Du sie lokal auch wieder zuordnen könntest)

Ps: Ich selbst bin Fan vom Hacker :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 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