Remix.run Logo
Linux latency measurements and compositor tuning(farnoy.dev)
82 points by GalaxySnail 2 days ago | 21 comments
nickjj an hour ago | parent | next [-]

When I switched to Linux from Windows last year I noticed I had a lot of keyboard input latency only when gaming. It was like I had ~100ms of input latency and it felt exactly the same as playing old school Quake I on a dial up connection without client side prediction turned on. It's like you're skating on ice with a delay when seeing the output vs when you performed the input. This was despite having a solid 60 FPS.

Turns out it was due to a combination of things.

I was using niri (Wayland window compositor) and this input latency was present with or without v-sync turned on. It happened when I was using a 60hz 4k monitor with an NVIDIA GPU.

Then I tried playing the same game on a laptop (same distro and dotfiles) with an AMD GPU and no external monitor. The delay disappeared.

Then I played the same game on that laptop but hooked it up to the 4k monitor and I had the same keyboard input latency only when v-sync was enabled. When I turned off v-sync and capped my FPS then the input latency was reduced by an amount that I could no longer perceive the delay.

Then I put an AMD GPU in the original desktop I was testing and reproduced the same results as the laptop.

However, when I switched to using KDE Plasma with X or Wayland, the keyboard input latency disappeared. This was with the 4k monitor and both NVIDIA and AMD GPUs.

I reported it to niri but it hasn't gotten traction, I just know I can reproduce it on 2 completely different systems with different GPU vendors and hardware when the common ground is having a 4k 60hz monitor hooked up.

audidude 2 hours ago | parent | prev | next [-]

> I found it hard to believe we couldn’t get a wakeup timer more granular than 1 ms, so I looked at what KWin was using. Indeed, it was passing the sleep duration in milliseconds to a QBasicTimer.

I fixed the same thing in GNOME a few years ago across GLib, GTK, and Mutter/GNOME Shell. It required getting glib onto ppoll() finally.

badsectoracula an hour ago | parent | prev | next [-]

> Originally, I had meant to compare with X11 sessions as well, but with KDE removing them soon, I dropped it.

Last time i checked X11 without a desktop compositor (very important) still provides the least latency of any environment, so even if KDE Plasma (not KDE as a whole AFAICT) drops support, there are other WMs/DEs that will work with it and have minimal latency on desktop.

jchw 2 hours ago | parent | prev | next [-]

> While randomly closing apps, I found the culprit: the Zed editor. Apparently, an open Zed window can add latency to all my other apps even while idle in the background.

Zed definitely does funny things to KWin. It's not the only app that does, but this point in particular would be worth more investigation. I've noticed it causing weird issues with the frame pacing as well sometimes.

Leonard_of_Q an hour ago | parent | prev | next [-]

No X11 because 'KDE drops it' is a rather silly argument for not including it, especially given that X11 is likely to trump Wayland-based systems on this metric. I'm using X11 and will continue to do so until something better comes along. Thus far Wayland is not better, just different and in several ways less functional. Yes, I do use X11 network transparency, sometimes through X2go, other times directly.

mrktf an hour ago | parent | next [-]

Silly author didn't take time to measure on X11, instead 'KDE drops it' author could use older version of KDE or SonicDE fork (rebranded KDE and only X11 support). And while on X11 i'm intresting how XLibre would fare in this metric, because git master of this project feels very snappy.

Joe_Cool an hour ago | parent | prev [-]

Also still on X11 because of xorgxrdp and X11 forwarding.

It would be cool to see this test with a CRT connected to a VGA port (adapters make it slower) and a PS/2 input device.

gblargg 2 hours ago | parent | prev | next [-]

> There it was, something about my desktop profile was introducing at least 3 ms of latency [as compared to creating a fresh account]! From here, I tried a bunch of things: plasma-manager to diff my existing profile against a clean one, removing all virtual desktops and disabling all KWin effects and any display scaling. While randomly closing apps, I found the culprit: the Zed editor. Apparently, an open Zed window can add latency to all my other apps even while idle in the background.

Things like this are so maddening. I don't worry too much about performance on Linux, reserving a Windows machine when I want full hardware acceleration and optimization.

embedding-shape an hour ago | parent | next [-]

Literally just had something similar (seemingly unrelated things affecting each other) happening on Windows yesterday. Was doing some 3D rendering and playing around in Ableton at the same time, the GPU process somehow crashed, even though GPU utilization was at 50% and most of the VRAM was available, and somehow that process crash also brought down the entire Windows USB subsystem, which left it in some weird state where it couldn't connect to my USB audio interface, even after reconnecting it.

It required a reboot to get USB to work again, after a completely unrelated process using mostly the GPU crashed. I let Codex spend 2-3 hours trying to get to a root cause of it, but zero luck, just "USB subsystem became unresponsive when the process crashed"...

positron26 an hour ago | parent | prev [-]

Okay user

gblargg an hour ago | parent [-]

Can you elaborate? I know it's a drive-by but maybe you can articulate.

eqvinox 27 minutes ago | parent | prev | next [-]

Mouse pointer movement (rather than click) to display update would be amazing to get too… including X11…

functionmouse 25 minutes ago | parent [-]

this is literally the only thing that ever mattered imo

naranha 5 hours ago | parent | prev | next [-]

It would be interesting to know if the same is true for Intel/AMD. I have one NVIDIA PC and the desktop - not even Games - feels very sluggish on GNOME - I haven't tried KDE yet. On the contrary, my AMD gaming rig subjectively feels very snappy, but I have never measured it.

noir_lord 2 hours ago | parent [-]

KDE on an AMD card (7900XTX) feels incredibly snappy to use, it's at least on par with windows generally.

dvh 3 hours ago | parent | prev | next [-]

I wonder what is Con Kolivas up to these days, he was THE og Linux ui latency guy.

buckle8017 2 hours ago | parent [-]

Bitcoin mining. (this is not a joke)

Joe_Cool an hour ago | parent | prev | next [-]

duplicate, already posted: https://news.ycombinator.com/item?id=48476462

sylware an hour ago | parent | prev | next [-]

I think this is only the top of the iceberg.

I say that because I play some timing tight action games natively on elf(glibc)/linux. Let's take an example with one of the toughest: Silksong.

I was trying to beat lost lace, her timings were too tight and nearly at each try I was locked in some hardly humanly dodge-able pattern combination. I knew all of her patterns by heart after zillions of tries.

Then, I started to have strong suspicions: I closed all background apps, disconnected the network and try again... did beat her, first try, super ez, like she was transparent to me and slow, I could "read" her and react in time easily.

I am running a Zen2, 12 cores at ~4GHz... and native x11 with xorg, sooo... the main culprit seems to lie in game engine programming and then would not completely tied to wayland programming (don't worry, I am coding my own wayland compositor, so, I am going to move to wayland, well actually designing a 'binary layout' for a wayland compositor to be accurate).

I am now in a Silksong steel soul run, and you bet I'll keep this experience in mind, because when I watch video streams of other people fighting some bosses, I can cleary "read" their moves like it is "slower" and which seems much less "aggressive", but once I fight them on my system, nope, I get a much harder time at reading the boss patterns. The "closing all apps and disconnecting the network cable" did not change a thing here, because I am currently fighting "ez' bosses then I always manages to get rid of them before I get really used to their patterns again... we will see with later and harder bosses.

But this could be another [obvious] culprit: stress. I know I am very, VERY, sensitive to stress: it disrupts severely my mind and worse with very little of it. In other words, I would have "brain fog" while fighting a boss because of stress, and the time I did beat lost lace in one shot ez: I was "testing" something without the stress instead of actually trying to beat her... a abysmal difference.

embedding-shape an hour ago | parent [-]

> I am running a Zen2, 12 cores at ~4GHz... and native x11 with xorg, sooo... the main culprit seems to lie in game engine programming and then would not completely tied to wayland programming (don't worry, I am coding my own wayland compositor, so, I am going to move to wayland, well actually designing a 'binary layout' for a wayland compositor to be accurate).

FWIW, I have similar frame pacing issues with Gnome/Mutter/Wayland with a AMD CPU + Nvidia GPU but that very issue doesn't happen with Xorg at all.

Might surface even larger issues if you go towards Wayland instead :)

Sweepi 5 hours ago | parent | prev [-]

These vertical labels make me unreasonably mad.

GE 10.34 released March 23th, 5 days after 10.33 - any reason to test with 10.33 in June? Was there a regression?