Closed nine7nine closed 1 year ago
there are going to be a number of cleanups in server/thread.c RT/nice code, as well.
I do plan on ditching all of the sched_setscheduler() code everywhere and rebasing everything (clean patches) for Wine-NSAP-8.0.
Began the rebase/cleanup of my patches: https://github.com/nine7nine/Wine-NSPA/commit/a7d3b4ed7f6c9298a71fbb09d93b0ac9095e390c
This will make working on the rewrite much easier. ;-)
I've taken another step with this: https://github.com/nine7nine/Wine-NSPA/commit/95754dd1775adf31281757d34af9a1065d5d8ec4
the above commit fixes the Wineserver shmem threads - they now are set with their pthread attributes properly.
Worked out fixing the bleeding rtprios issue, here: https://github.com/nine7nine/Wine-NSPA/commit/95754dd1775adf31281757d34af9a1065d5d8ec4 and here: https://github.com/nine7nine/Wine-NSPA/commit/5d3f3c7a7d1f0aea169a877c1d001012fcd04cab
that also addresses wrongly set/bleeding niceness values
the main rewrites are done.
closing.
This is partially complete, as of commit: https://github.com/nine7nine/Wine-NSPA/commit/1614c65ec41088a3846874b6c1900cd9414e4eea
The above commits replaces the sched_setscheduler() code with pthread functions, it also extends wineserver to support scheduling policy changes at runtime, and finally implement support for adjusting nice values (I'm sitting on code to adjust it at runtime).
the above will also require performance analysis within Wine. it would be interesting to see if this could help improve performance and/or reduce overhead, depending on how it's implemented.
NOTES:
By switching everything over to pthread-based RT support; it opens up a lot of opportunity in fine-tuning thread behaviour within Wineserver, Ntdll and user/application threads.
Likewise, as Linux-NSPA supports latency.nice I can fine-tune non-RT and RT thread latency tuning alike.
the hope is that I can do the same with ionice, cgroups, etc too => My manual scripts cover most of this now - and it makes a big difference, especially with things like Ableton Live 11. It's the difference between issues with xruns or almost zero xruns.