On 03/27/2013 12:33 PM, Preeti U Murthy wrote:
Hi Peter,
On 03/26/2013 06:07 PM, Peter Zijlstra wrote:
On Fri, 2013-03-22 at 13:25 +0100, Vincent Guittot wrote:
+static bool is_light_task(struct task_struct *p) +{
/* A light task runs less than 20% in average */
return ((p->se.avg.runnable_avg_sum * 5) <
(p->se.avg.runnable_avg_period));
+}
OK, so we have a 'problem' here, we initialize runnable_avg_* to 0, but we want to 'assume' a fresh task is fully 'loaded'. IIRC Alex ran into this as well.
PJT, do you have any sane solution for this, I forgot what the result of the last discussion was -- was there any?
The conclusion after last discussion between PJT and Alex was that the load contribution of a fresh task be set to "full" during "__sched_fork()".
task->se.avg.load_avg_contrib = task->se.load.weight during __sched_fork() is reflected in the latest power aware scheduler patchset by Alex.
Yes, the new forked runnable load was set as full utilisation in V5 power aware scheduling. PJT, Mike and I both agree on this. PJT just discussion how to give the full load to new forked task. and we get agreement in my coming V6 power aware scheduling patchset.
Thanks
Regards Preeti U Murthy