Skip to content

NTsync (aka Winesync+Fastsync) - feedback topic #936

@Iglu47

Description

@Iglu47

NTsync (title not approved) is more "Correctness" and "Robustness" alternative implementation of synchronization primitives in Wine from Zebediah Figura (the author of "Esync" and "Fsync").

This requires changes on the Wine side (usually patches are called - fastsync ) and corresponding changes on the kernel side (implemented as a kernel module - winesync. Unlike Fsync, the winesync functionality cannot be used anywhere except Wine).

More details about what problem NTsync solves and what is "implementation of synchronization primitives in Wine" can be found here: https://lkml.org/lkml/2021/1/17/312 and here: sync2022.pdf

Some plans and wishes for tests from @zfigura:

  • Find or get good, convincing data vs server sync. Benchmarks of esync are hard to find and a lot of them are not exactly very convincing (on the order of 50 -> 54 FPS).

  • Test ntsync with applications that break with fsync or esync:

    • [21142] Planet Zoo crashes when selecting a friend's avatar
    • [20155] Ubisoft launcher hangs on "looking for patches"
    • [17625] Yakuza 0 hangs on exit
    • [19072] Yakuza 0/Kiwami manual save fails
    • [21194] GTAV hangs or something. This issue: Grand Theft Auto V (271590) ValveSoftware/Proton#37
    • [20444] System Shock: Enhanced Edition hangs on exit
  • Add this information to the document. I intend to submit this upstream along with the cover letter.

  • Submit kernel patches upstream.

CALL FOR TESTS: anyone who can test games from the "breaks with esync/fsync" list, that would be quite appreciated. Note there's a lot more that break simply because of PulseEvent(), and we've had a couple tested already and they work so I'm not worried about those. All of the above break because of subtler timing problems and I'd like to see if they work with ntsync.

ALSO CALL FOR TESTS: I need good, convincing data comparing winesync vs server side sync. I don't have application names because in the 3-4 years since I wrote esync I've completely forgotten what the most important applications even are.

How to get NTsync working on TkG builds?

  1. you need set _winesync="true" in .cfg for linux-tkg, build, install and loading on it
  2. when you need set _use_fastsync="true" in .cfg for wine-tkg and build it
  3. if you did everything correctly, then when you start the game in the output of the terminal or in the logs will appear
    wine: using fast synchronization.
  4. to disable NTsync, set env var WINE_DISABLE_FAST_SYNC=1.
*Please don't post conflicts with other patches, versions of Wine, or other things related to building or installing kernel or Wine in THIS thread - this is a place intended for developers and other players to see other people's NTsync test results and determine if there are any significant performance deviations (both up and down) compared to wineserver-sync, esync, fsync. And any issues are saved or added compared to esync/fsync/wineserver-sync only.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions