Announcement

Collapse
No announcement yet.

Updated FUTEX2 System Call Patches Posted For Helping Wine/Proton, Other Use-Cases

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Updated FUTEX2 System Call Patches Posted For Helping Wine/Proton, Other Use-Cases

    Phoronix: Updated FUTEX2 System Call Patches Posted For Helping Wine/Proton, Other Use-Cases

    It's been several months since the last round of FUTEX2 patches for this system call to address the shortcomings of the current FUTEX system call. FUTEX2, which is designed in part with Wine/Proton in mind for better matching Windows semantics, has now seen a third iteration of the patches...

    https://www.phoronix.com/scan.php?pa...System-Call-v3

  • #2
    I'm not an expert on this but why does FUTEX2 need special support for waiting on multiple futexes? Isn't that already covered by epoll_wait()?

    Comment


    • #3
      Originally posted by jacob View Post
      I'm not an expert on this but why does FUTEX2 need special support for waiting on multiple futexes? Isn't that already covered by epoll_wait()?
      Normal mutex/futex dont have a filedescriptor, cant be used with epoll. Dont know if FUTEX2 are filedescriptors, but even if.. epoll has overhead for setup, and multiple threads could wait for different sets concurrently

      Comment


      • #4
        I'm using these patches since a while via xanmod kernel + proton-ge-6.5 there are for sure performance uplifts. e.g. AC:Origin benchmark has way less stutter on ultra settings.

        Comment


        • #5
          Originally posted by jacob View Post
          I'm not an expert on this but why does FUTEX2 need special support for waiting on multiple futexes? Isn't that already covered by epoll_wait()?
          epoll / eventfd doesn't scale well to big number of futexes / sync primitives. Also it has major overheads, and the semantic is not exactly what the wine wants to emulate Windows NT. The futex2 addresses many issues to make it all just work instead. futexes that are not being waited on doesn't consume any kernel resources or extra memory, there are no file descriptors, it is just a piece of user space memory, so you can have millions of futexes with no real drawbacks (especially if now it is possible to have 8-bit futexes, instead of 32-bit ones).

          Comment


          • #6
            Just a 4% performance improvement for up to 800 threads and a decrease of 21% for requeue, the numbers don't look that great yet to me. I hope there is potential to improve the performance further.

            Comment


            • #7
              Originally posted by ms178 View Post
              Just a 4% performance improvement for up to 800 threads and a decrease of 21% for requeue, the numbers don't look that great yet to me. I hope there is potential to improve the performance further.
              Throughput (fps) hasn't changed that much in gaming situation but I definitely have less stutter. But even tough 4% is the equivalent of next higher cpu. or the difference between XT and non-XT with AMD cards.
              Last edited by CochainComplex; 28 April 2021, 05:18 AM.

              Comment


              • #8
                Originally posted by CochainComplex View Post

                Throughput (fps) hasn't changed that much in gaming situation but I definitely have less stutter. But even tough 4% is the equivalent of next higher cpu. or the difference between XT and non-XT with AMD cards.
                I welcome every improvement, but I hoped for a bit more than 4% in a micro-benchmark. After all it is quite a substantial change which touches glibc, the kernel and wine. Reading the description of patch 4 makes me hopeful that the regression can be overcome in the future.

                Comment


                • #9
                  Does anyone know if it has any other use cases, except of Wine?

                  Comment


                  • #10
                    Originally posted by marios View Post
                    Does anyone know if it has any other use cases, except of Wine?
                    Game engines, Source 2 will use it; heavily threaded programs

                    Comment

                    Working...
                    X