Messages in this thread | | | Date | Fri, 10 Dec 2010 09:55:59 -0500 | From | Rik van Riel <> | Subject | Re: [RFC PATCH 2/3] sched: add yield_to function |
| |
On 12/10/2010 03:39 AM, Srivatsa Vaddagiri wrote: > On Thu, Dec 09, 2010 at 11:34:46PM -0500, Rik van Riel wrote: >> On 12/03/2010 09:06 AM, Srivatsa Vaddagiri wrote: >>> On Fri, Dec 03, 2010 at 03:03:30PM +0100, Peter Zijlstra wrote: >>>> No, because they do receive service (they spend some time spinning >>>> before being interrupted), so the respective vruntimes will increase, at >>>> some point they'll pass B0 and it'll get scheduled. >>> >>> Is that sufficient to ensure that B0 receives its fair share (1/3 cpu in this >>> case)? >> >> I have a rough idea for a simpler way to ensure >> fairness. >> >> At yield_to time, we could track in the runqueue >> structure that a task received CPU time (and on >> the other runqueue that a task donated CPU time). >> >> The balancer can count time-given-to CPUs as >> busier, and donated-time CPUs as less busy, >> moving tasks away in the unlikely event that >> the same task gets keeping CPU time given to >> it. > > I think just capping donation (either on send side or receive side) may be more > simpler here than to mess with load balancer logic.
Do you have any ideas on how to implement this in a simple enough way that it may be acceptable upstream? :)
-- All rights reversed
| |