On Wed, 2010-12-01 at 12:26 -0500, Rik van Riel wrote: > On 12/01/2010 12:22 PM, Peter Zijlstra wrote: > > On Wed, 2010-12-01 at 09:17 -0800, Chris Wright wrote: > >> Directed yield and fairness don't mix well either. You can end up > >> feeding the other tasks more time than you'll ever get back. > > > > If the directed yield is always to another task in your cgroup then > > inter-guest scheduling fairness should be maintained. > > > > Yes, but not the inter-vcpu fairness. > > The pause loop exiting & directed yield patches I am working on > preserve inter-vcpu fairness by round robining among the vcpus > inside one KVM guest.
I don't necessarily think that's enough. Suppose you've got 4 vcpus, one is holding a lock and 3 are spinning. They'll end up all three donating some time to the 4th. The only way to make that fair again is if due to future contention the 4th cpu donates an equal amount of time back to the resp. cpus it got time from. Guest lock patterns and host scheduling don't provide this guarantee.