Need help with trace analyse - system slowing down when mouse pointer is on desktop

Andy P

New member
Joined
Aug 10, 2021
Posts
3
Hi,
we have a strange problem. It's on Windows Server 2016 but it's also reproducable on "normal" Windows 10.
We are running approx 160 Processes on the system. The total CPU amounts to 10-16%.
Now the problem:
Everytime the mouse pointer is on the clean desktop (not over icon or any windows) the system is slow as hell.
Not just our processes but all other (even a processhacker-window) behaves absolutly slow.
If the mouse pointer is over any window or the taskbar - all is well again.

I have some talk with Bruce Dawson His Blog but he doesn't have the time (of course) to make an analyse of my ETL-Trace. He suggest to post it online and ask for help.

I've made a screenshot of WPA to explain shortly:

Screenshot 2021-08-10 110637.png

I have annotated the screenshot so one can see where the mouse is on desktop or window.
In the stacks-view one can see that the amount of contextswitches is going down when mouse is over desktop and in the CPU Usage (Sampled) view there are RtlUserThreadStart-Entries exactly for this time but I have no idea where they come from.

The first of our processes is the "ProcessController.exe" which starts all the other like "GpioController.exe", "DCIIF_Simulation" or "RouterIF_Simulation.exe" etc. They all communicate with a process called "StatusController.exe", but in the trace they do only heartbeat between these.

Bruce told me to find the point where our process is waiting on something, but I can find a lock or anything similar.

I've uploaded a zipped etl-trace if someone accepts the challenge.

zipped etl-trace
 
Bruce told me to find the point where our process is waiting on something, but I can find a lock or anything similar.
I should be:
Bruce told me to find the point where our process is waiting on something, but I can't find a lock or anything similar.
 
After we managed to add debug-symbols to some of our processes, we found the issue in the Delphi-VCL/Forms.pas.
In a new trace, with debug-symbols, we saw that the Application.DoMouseIdle method spends a lot of time finding VCLWindows, get Parents of these and so on.
The source of the slowdown is the "FindDragTarget" method. Our processes need no drag'n'drop functionality and they need no hint showing somewhere. So we cut this function call out of the code, which was not easy.
Now everything is running fast undependend from the mouse position.
 

Has Sysnative Forums helped you? Please consider donating to help us support the site!

Back
Top