Announcement

Collapse
No announcement yet.

Wine 3.10 vs. Ubuntu 18.04 vs. Windows 10 Desktop Performance

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

  • #51
    Originally posted by sdack View Post
    Is this with a specific game?
    It's not a fault of any game, it's the way that CSMT was designed to constantly be stuck in a spinlock on every core. It doesn't matter what games are tested. Al;though some games are already properly threaded and don't have synchronization problems and when you use CSMT in those apps and games it literally cripples them. On single threaded and lightly threaded games it's not so bad, it still stuck literally doing nothing tho. And Also some graphics drivers are already multithreading the command stream without making this same problem and in those cases CSMT even manages to cripple the graphics driver too!
    Last edited by duby229; 25 June 2018, 06:54 AM.

    Comment


    • #52
      Originally posted by duby229 View Post
      It's not a fault of any game, it's the way that CSMT was designed to constantly be stuck in a spinlock on every core. It doesn't matter what games are tested. Al;though some games are already properly threaded and don't have synchronization problems and when you use CSMT in those apps and games it literally cripples them. On single threaded and lightly threaded games it's not so bad, it still stuck literally doing nothing tho. And Also some graphics drivers are already multithreading the command stream without making this same problem and in those cases CSMT even manages to cripple the graphics driver too!
      I don't share your experience. CSMT to me improves performance in every single game I tested (yes it also causes higher CPU usage). My guess is that your game utilizes all your cores and the CSMT spinlock over-utilizes your CPU resulting in poor performance. Do you have at least 4 cores?

      Note that I'm using wine-staging's CSMT, I don't know about wine-devel's implementation.

      Comment


      • #53
        Originally posted by Weasel View Post
        I don't share your experience. CSMT to me improves performance in every single game I tested (yes it also causes higher CPU usage). My guess is that your game utilizes all your cores and the CSMT spinlock over-utilizes your CPU resulting in poor performance. Do you have at least 4 cores?

        Note that I'm using wine-staging's CSMT, I don't know about wine-devel's implementation.
        You're not understanding at all. What you're seeing is not higher CPU usage, what you are seeing is the CPU literally flushing and refilling the cores over and over again completely pointlessly. And while it's doing that it is incapable of doing anything else, including game threads or graphics driver threads. A context switch literally means a core is incapable of doing anything at all. You think you're seeing a performance improvement, but really all you're seeing is the CPU cores of your processor getting thrashed extremely badly. What you see is the same threads getting flushed and refilled endlessly without ever getting a chance to complete. And it does this on every game and every app. As I said lightly threaded stuff doesn't feel so bad even tho it's still happening just as badly.
        Last edited by duby229; 25 June 2018, 08:47 AM.

        Comment


        • #54
          Dude, I don't measure performance by CPU usage. I measure it by the FPS I'm getting in the game.

          Comment


          • #55
            Originally posted by duby229 View Post

            You're not understanding at all. What you're seeing is not higher CPU usage, what you are seeing is the CPU literally flushing and refilling the cores over and over again completely pointlessly. And while it's doing that it is incapable of doing anything else, including game threads or graphics driver threads. A context switch literally means a core is incapable of doing anything at all. You think you're seeing a performance improvement, but really all you're seeing is the CPU cores of your processor getting thrashed extremely badly. What you see is the same threads getting flushed and refilled endlessly without ever getting a chance to complete. And it does this on every game and every app. As I said lightly threaded stuff doesn't feel so bad even tho it's still happening just as badly.
            Spinlocking reduces the number of user-to-kernel context switches, it usually does not increase them unless there are multiple spinlocking threads on too few cores. This is a strategy used in C#'s mutex implementation to improve contention latency in multi-threaded apps by not immediately giving control back to the kernel, instead entering a spin-wait loop while waiting for the mutex to become available for a small amount of time. It's recommended by the Intel Optimization guide for thread synchronization that's over a short period. Assuming CSMT is using a spinlock-like mutex for its synchronization, the cost of the CPU pipeline flush (which is minimized by use of the PAUSE instruction) is inconsequential compared to the increase of work being done in some/most games especially on higher thread-count systems.

            Comment


            • #56
              Originally posted by coder111 View Post
              Oh, and by the way, Stars in Shadow runs fine-ish, with some non-game-breaking graphics artifacts (r600+AMD CPU). Someone should add it to appdb...
              Never heard of that game, but it's cool that it runs under WINE. Since you already own it and have it working, why not add it yourself along with your experience and WINE version? It'd probably take all of 10 minutes.

              Comment


              • #57
                Originally posted by Dar13 View Post

                Spinlocking reduces the number of user-to-kernel context switches, it usually does not increase them unless there are multiple spinlocking threads on too few cores. This is a strategy used in C#'s mutex implementation to improve contention latency in multi-threaded apps by not immediately giving control back to the kernel, instead entering a spin-wait loop while waiting for the mutex to become available for a small amount of time. It's recommended by the Intel Optimization guide for thread synchronization that's over a short period. Assuming CSMT is using a spinlock-like mutex for its synchronization, the cost of the CPU pipeline flush (which is minimized by use of the PAUSE instruction) is inconsequential compared to the increase of work being done in some/most games especially on higher thread-count systems.
                Profile wine then.... What you'll see is definitely not what you describe....

                Comment


                • #58
                  Originally posted by Michael View Post

                  I guess you didn't read the text of the article to understand the point of these benchmarks.
                  Please consider benchmarks with WINE ESYNC and DXVK benchmarks.

                  Comment

                  Working...
                  X