On Wed, 2010-12-01 at 22:59 +0530, Srivatsa Vaddagiri wrote: > > yield_task_fair(...) > { > > + ideal_runtime = sched_slice(cfs_rq, curr); > + delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime; > + rem_time_slice = ideal_runtime - delta_exec; > + > + current->donate_time += rem_time_slice > some_threshold ? > + some_threshold : rem_time_slice; > > ... > } > > > sched_slice(...) > { > slice = ... > > + slice += current->donate_time; > > } > > or something close to it. I am bit reluctant to go that route myself, unless the > fairness issue with plain yield is quite bad. That really won't do anything. You need to adjust both tasks their vruntime. Also, I really wouldn't touch the yield() implementation, nor would I expose any such time donation crap to userspace. -- 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