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.

Reply via email to