![]() |
AW: Ursache für dauerhafte CPU-Auslastung finden
Zitat:
Zitat:
Evtl. einfach mal mit Zeitstempel und Msg ID loggen. |
AW: Ursache für dauerhafte CPU-Auslastung finden
Zitat:
So sieht der Log von
Delphi-Quellcode:
aus:
OutputDebugString(PChar('### MSG App ' + GetTickCount.ToString + ' ' + Msg.Msg.ToString));
Code:
Ist das normal?
Debug Output: ### MSG App 1484513750 0 Process App.exe (16484)
Debug Output: ### MSG App 1484513781 0 Process App.exe (16484) Debug Output: ### MSG App 1484513812 0 Process App.exe (16484) Debug Output: ### MSG App 1484513843 0 Process App.exe (16484) Debug Output: ### MSG App 1484513875 0 Process App.exe (16484) Debug Output: ### MSG App 1484513906 0 Process App.exe (16484) Debug Output: ### MSG App 1484513937 0 Process App.exe (16484) Debug Output: ### MSG App 1484513968 0 Process App.exe (16484) Debug Output: ### MSG App 1484514015 0 Process App.exe (16484) Debug Output: ### MSG App 1484514046 0 Process App.exe (16484) Debug Output: ### MSG App 1484514078 0 Process App.exe (16484) Debug Output: ### MSG App 1484514109 0 Process App.exe (16484) Debug Output: ### MSG App 1484514140 0 Process App.exe (16484) Debug Output: ### MSG App 1484514171 0 Process App.exe (16484) Debug Output: ### MSG App 1484514218 0 Process App.exe (16484) Debug Output: ### MSG App 1484514250 0 Process App.exe (16484) Debug Output: ### MSG App 1484514281 0 Process App.exe (16484) Debug Output: ### MSG App 1484514312 0 Process App.exe (16484) Debug Output: ### MSG App 1484514343 0 Process App.exe (16484) Debug Output: ### MSG App 1484514375 0 Process App.exe (16484) Debug Output: ### MSG App 1484514406 0 Process App.exe (16484) Debug Output: ### MSG App 1484514437 0 Process App.exe (16484) Debug Output: ### MSG App 1484514468 0 Process App.exe (16484) Debug Output: ### MSG App 1484514515 0 Process App.exe (16484) Debug Output: ### MSG App 1484514531 0 Process App.exe (16484) Debug Output: ### MSG App 1484514562 0 Process App.exe (16484) Debug Output: ### MSG App 1484514593 0 Process App.exe (16484) Debug Output: ### MSG App 1484514609 0 Process App.exe (16484) Debug Output: ### MSG App 1484514640 0 Process App.exe (16484) Debug Output: ### MSG App 1484514671 0 Process App.exe (16484) Debug Output: ### MSG App 1484514718 0 Process App.exe (16484) Debug Output: ### MSG App 1484514750 0 Process App.exe (16484) Debug Output: ### MSG App 1484514781 0 Process App.exe (16484) |
AW: Ursache für dauerhafte CPU-Auslastung finden
Findest irgendwo im Programmcode und Fremdkomponenten ein WM_NULL?
FMX/VCL (TPlatformWin/TApplication.WakeMainThread), Indy, OleControl's und paar Andere lösen ein WM_NULL aus, damit der Hauptthread z.B. die TThread.Synchronize verarbeitet. |
AW: Ursache für dauerhafte CPU-Auslastung finden
Normal ist relativ :stupid:
WM_Null Messages kommen wohl normalerweise nicht so oft vor. Aber es gibt bestimmte Software, die das verschickt bspw. um zu prüfen ob die Vordergrundfenster noch reagieren. Guck mal hier: ![]() Liegt dann vll. doch gar nicht an deinem Programm. |
AW: Ursache für dauerhafte CPU-Auslastung finden
Zitat:
Zitat:
Wenn ja, müsste das dann nicht jede Anwendung gleichermaßen betreffen? Messages werden nach meinem Verständnis normalerweise ja in jeder Anwendung empfangen und verarbeitet - selbst wenn nicht vom Entwickler explizit, dann dennoch vom Programmgrundgerüst für ganz normale Aktionen wie minimieren, etc. Oder kann die Verwendung von HookMainWindow dazu führen? Zitat:
Und wie gesagt: Ich sehe im Process Explorer ja, dass keine andere Anwendung dieses Verhalten zeigt. Die anderen Prozesse sind entweder konstant 0, ab und an kurz "< 0.01" oder es handelt sich tatsächlich um Prozesse, die etwas tun (Browser, AntiVirus, etc.). Ich werde mich jetzt ein bisschen in AQTime einarbeiten und es morgen damit versuchen. Dennoch finde ich diese Analyse vorab sehr sinnvoll, um zu verstehen, was als Ursache überhaupt in Frage kommt. Hätte ja sein können, dass sich das auch so herausfinden und beheben lässt. |
AW: Ursache für dauerhafte CPU-Auslastung finden
Zitat:
|
AW: Ursache für dauerhafte CPU-Auslastung finden
Dein Programm ist in SysTray minimiert wenn das Auftritt. Nur dann hast du CPU load? Oder auch wenn das Programm sichtbar ist?
...Ich kann mich erinnern das ich früher mal eine SysTray Komponente in Verwendung hatte die CPU verbraten hat wenn man die Animationsfunktion für das angezeigt Icon aktiviert hat. Irgendwann bin ich dann auf eine andere umgestiegen oder das Verhalten war nach einer Aktualisierung weg. Ich kann mich aber nicht mehr erinnern. |
AW: Ursache für dauerhafte CPU-Auslastung finden
Wie ist das denn ausgegangen?
|
AW: Ursache für dauerhafte CPU-Auslastung finden
Zitat:
AQTime hatte mich nur bedingt weitergebracht. Da es leider nur Laufzeiten und nicht irgendeine Form von Auslastung misst (zumindest habe ich nichts dergleichen gefunden), hatte ich darin nur als Bestätigung erkennen können, welche Threads dauerhaft laufen. Das hatte ich im Grunde auch vorher schon eingrenzen können, aber nun hatte ich zumindest eine Art Bestätigung. Die dauerhaften Threads gehören zu Dritt-Komponenten und sind fast alle auch harmlos gewesen. Bspw. hat VirtualTreeView einen dauerhaften WorkerThread, der aber wirklich nur etwas tut, wenn es was zu tun gibt. Die Ursache lag nach einigem Hin und Her in einer Komponente, die im Thread einen Timer startet und dieser zeichnet die Komponente neu, um diverse Animationen darin abbilden zu können. Testweises Deaktivieren des darin enthaltenen Timers entfernte auch die beobachtete CPU-Auslastung vollständig. Da die Ursache nicht im Hauptprogramm liegt, brauche ich da aber erstmal nichts dran weiterzumachen, sondern habe das entsprechend weitergereicht. Ich bin hauptsächlich froh darüber, dass es nicht an den Messages o.ä. liegt. Vielen Dank an alle für die Unterstützung! |
AW: Ursache für dauerhafte CPU-Auslastung finden
Danke für die Rückmeldung.
Zitat:
![]() ![]() Um welche Dritt-Komponente handelt es sich denn? Könnte hilfreich sein für spätere Generationen, die hier per Google drüber stolpern. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:00 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