https://bugs.kde.org/show_bug.cgi?id=520084
--- Comment #11 from [email protected] --- You were right about scheduling, it explains a lot of the jitter that KWin perceives, but, importantly, not the actual penalty from having glxgears around! I tested with `nvidia-smi --lock-gpu-clocks=1080,3105` which keeps it in P5 power state rather than the P8 state and 270MHz minimum it otherwise goes down to. Idling at ~35W as opposed to ~23W without raising clocks. My setup is I do `python -c "import time; print(time.monotonic_ns())" > marker` and execute the LDAT test. Then, offline, I take the a 5 second window of KWin's CSV rows, starting one second after the marker was taken, filtered on the pageflip timestamp. From these rows, I calculate the predicted render time stats. AFAIK, this predicted render time is the output of RenderJournal, and has a big impact in how much earlier compositing is scheduled ahead of vblank? Anyway, on stock GPU settings and just chromium, it's: p50: 6.974ms p90: 8.8ms max: 9.36ms With 1080MHz as the min: p50: 3.69ms p90: 4.377ms max: 4.576ms Now, adding glxgears into the mix, again on stock GPU: p50: 6.56ms p90: 8.367ms max: 8.91ms With 1080MHz min: p50: 3.6ms p90: 4.24ms max: 4.43ms LDAT results for these four runs are: axis: nv_min_gpu_clock controls: browser=chromium, display_hz=120, machine=desktop, platform=linux [(no other params)] (none) n= 800 median= 18.069 ms IQR= 4.309 ms Q1-Q3=15.924..20.233 ms min-max=11.767..26.266 ms 1080 n= 300 median= 16.628 ms IQR= 4.157 ms Q1-Q3=14.276..18.433 ms min-max=11.754..39.663 ms [glxgears_open=yes] (none) n= 300 median= 19.468 ms IQR= 4.002 ms Q1-Q3=17.434..21.436 ms min-max=14.751..25.114 ms 1080 n= 300 median= 19.104 ms IQR= 4.325 ms Q1-Q3=17.034..21.359 ms min-max=14.717..35.855 ms (I wouldn't focus on the max reading too much, it explodes as soon as I touch my mouse. I focus on median & Q1-Q3 readings the most.) So, again, I can drop the floor on an idle KWin by increasing the min GPU clock, and/or enabling VRR, but I can't do much about the latency while glxgears is running. I tried some render journal tweaks so it's allowed to decay earlier and faster, but the effects are minor. This makes sense since bumping the GPU clock improves the same predicted render time metric, but it also doesn't have as much of an impact on the latency. Oh, and I tested KWIN_DRM_DISABLE_TRIPLE_BUFFERING=0 but it had no effect on latency, despite confirming it makes chromium's scheduleRepaint(Item* item, ...) see d->maxPendingFrameCount==2 -- You are receiving this mail because: You are watching all bug changes.
