On Fri, Jan 14, 2011 at 03:03:57AM -0500, Rik van Riel wrote: > From: Mike Galbraith <efault@xxxxxx> > > Currently only implemented for fair class tasks. > > Add a yield_to_task method() to the fair scheduling class. allowing the > caller of yield_to() to accelerate another thread in it's thread group, > task group. > > Implemented via a scheduler hint, using cfs_rq->next to encourage the > target being selected. We can rely on pick_next_entity to keep things > fair, so noone can accelerate a thread that has already used its fair > share of CPU time. If I recall correctly, one of the motivations for yield_to_task (rather than a simple yield) was to avoid leaking bandwidth to other guests i.e we don't want the remaining timeslice of spinning vcpu to be given away to other guests but rather donate it to another (lock-holding) vcpu and thus retain the bandwidth allocated to the guest. I am not sure whether we are meeting that objective via this patch, as lock-spinning vcpu would simply yield after setting next buddy to preferred vcpu on target pcpu, thereby leaking some amount of bandwidth on the pcpu where it is spinning. Would be nice to see what kind of fairness impact this has under heavy contention scenario. - vatsa -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html