← Back to context

Comment by watashiato

20 days ago

Before anyone gets too excited about ntsync, the performance gains are (with few exceptions) mild, usually in the lower single percentage range. These extreme gains are the result of benching against vanilla wine without fsync, anyone playing demanding games on linux would have been doing so using fsync. This is mentioned in the article but treated like a side note. I've been running benchmarks between both and while the performance increase is real, please temper your expectations. A few titles might also run slightly worse.

>These extreme gains are the result of benching against vanilla without fsync, which is what anyone gaming on linux uses

Not for anyone using a kernel without these patches. Which would be most people.

  • Unless you are running an ancient LTS distribution, you at least have fsync. But then also recognize, with the ancient LTS distribution not carrying any enhancements for the last few years, your drivers are also out of date and games will play terribly for unrelated reasons.

    • "Have fsync" is not a sufficient requirement. You need a kernel with windows-compatible fsync patches, and many distributions do not ship those.

  • Most people? What mainstream Linux distros ship without fsync or esync support?

    • Well I can tell you that if it didn’t make it upstream Fedora didn’t ship it.

      It looks there was a copr for a custom kernel-fsync and projects like Bazzite or Nobara are adding patches.

      From my understanding the fsync patches were never upstreamed.

      4 replies →

    • I would assume most of them? I'd be surprised if distros like Debian, Ubuntu, Fedora, etc. would ship non-mainline kernel features like that.

      Sure, gaming-focused distros, or distros like Arch or Gentoo might (optionally or otherwise), but mainstream? Probably not.

      Of course, esync doesn't require kernel patches, so I imagine that was more broadly out there. But it sounds like fsync got you performance pretty close to what ntsync can do, but esync was quite a bit behind both? With vanilla being quite a bit behind esync?

      (Also, jeez, fsync, what a terrible name. fsync is a syscall that has to do with filesystem data. So confusing.)

      4 replies →

  • The article says fsync uses futexes which are a completely standard kernel feature.

    • If you read more carefully it says fsync needs some enhancements to the futex API, called futex2. The original patch that fsync needed called the syscall futex_wait_multiple. Eventually futex2 made it into the mainline kernel, but the syscall is called futex_waitv. Not sure if the wine fsync implementation was updated to support the mainline kernel futex2 implementation.

> usually in the lower single percentage range

Is it worth to compare Wayland vs X11?