Alright, let's see if Tracy can show me anything interesting in Mutter and Shell
Conversation
Notices
-
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:04 JST Ivan Molodetskikh -
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:02 JST Ivan Molodetskikh Today I managed to hack together GSource instrumentation with Tracy. Now this gets into a more complex territory because it's in glib, so Tracy needs to be a separately installed shared library, and it should only start its profiling threads in the process I care about (gnome-shell) and not in all processes that use glib. Tracy has manual profiler start/stop support for this, but I had to add a function that checks whether the profiler had started, and tweak the meson build to output pkgconfig.
-
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:02 JST Ivan Molodetskikh iwlwifi my beloved, randomly borrowing the CPU core from a running compositor
Haelwenn /элвэн/ :triskell: likes this. -
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:03 JST Ivan Molodetskikh Today made buildsystem integration between Tracy and Cogl considerably less cursed, and started adding plots.
Unfortunately, I had to disable Tracy symbol collection entirely by default as the contention with whatever GJS is doing is really bad. The main thing this loses is the ability to see what's going on in zones not annotated with spans, and in wait stacks, which is occasionally useful.
-
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:03 JST Ivan Molodetskikh Trying to profile a real session running on my slower laptop today. Already found two things of interest:
1. Clutter isn't compressing touchpad swipe events, processing them one by one, taking almost 2 ms each.
2. Layout running during picking? Doesn't seem intended.
Also worked on making a COPR with Tracy-instrumented Mutter so others can record their performance problems too. I'll link that later, once someone else gives it a try and confirms that it works.
-
Embed this notice
Ivan Molodetskikh (yalter@mastodon.online)'s status on Sunday, 07-Apr-2024 19:56:04 JST Ivan Molodetskikh Not sure what exactly is going on, but whenever Tracy is resolving symbols I'm seeing GJS code block in dlsym() hundreds of times per frame with the sort of backtrace like on the screenshot, leading to massive lag in some cases. Thankfully, TRACY_NO_SAMPLING=1 removes most of this interference.
I guess normally GJS hits some sort of cache for these hundreds of requests when it doesn't contend with Tracy? Either way, a bit unfortunate.
-
Embed this notice