søn, 29.08.2004 kl. 13.31 skrev Mike Hearn:
On Sun, 29 Aug 2004 09:51:30 +0200, Ove Kaaven wrote:
A book I have described how it works...
Hi Ove,
I remember TransGaming had some problems with kernel 2.6 scheduling: did you guys ever get to the bottom of it?
Not in detail, we still consider 2.6 too unstable to support the use of, but the problem is probably related to what's being discussed here, which is why I'm interested.
One interesting problem we've seen is the one of wineserver using a whole lot more CPU now than before. A scenario where this could happen is if the game has a relatively low-priority thread which gets to do a lot of waits on critical sections, and some high-priority threads that does interesting stuff, also usually holding those critical sections, so there's always contention. The game might not care much exactly how often the low-priority thread gets scheduled, as long as the resource protected by the critical section is not in use whenever it does get scheduled (which it probably usually isn't if the Win32 thread priority system is used).
Well, my theory is that in this situation, with the great new interactivity-boosting Linux scheduler, the wineserver is considered very interactive, and gets scheduled a lot more than the high-priority threads, just so it can satisfy the wait requests of the low-priority thread.
This particular situation is a problem which the shared-memory wineserver we have in Cedega now should help somewhat against, I suppose, but that probably doesn't make this problem less interesting for you.
And of course there are threads we use that gets penalized a lot. For example, the DirectSound mixing thread would by no means be considered interactive by the scheduler. We would love to elevate the priority of this thread, for example, but it's not possible because of permissions.
What are you recommending your users do if not?
There's now an option in Point2Play to renice the wineserver to a lower priority if you need to. I'm hoping this thread can help bring answers to the other issues with the scheduler...