sched: Make wallclock more accurate

update_task_ravg() in context switch uses wallclock that is updated
before running put_prev_task() and pick_next_task(), both of which can
take some time. Its better to update wallclock after those routines,
leading to more accurate accounting.

Change-Id: I882b1f0e8eddd2cc17d42ca2ab8f7a2841b8d89a
Signed-off-by: Srivatsa Vaddagiri <vatsa@codeaurora.org>
This commit is contained in:
Srivatsa Vaddagiri 2014-06-13 19:05:12 -07:00 committed by David Keitel
parent 6998234564
commit d8b3941313

View file

@ -4024,8 +4024,8 @@ static void __sched notrace __schedule(bool preempt)
if (task_on_rq_queued(prev)) if (task_on_rq_queued(prev))
update_rq_clock(rq); update_rq_clock(rq);
wallclock = sched_clock();
next = pick_next_task(rq, prev); next = pick_next_task(rq, prev);
wallclock = sched_clock();
update_task_ravg(prev, rq, PUT_PREV_TASK, wallclock, NULL); update_task_ravg(prev, rq, PUT_PREV_TASK, wallclock, NULL);
update_task_ravg(next, rq, PICK_NEXT_TASK, wallclock, NULL); update_task_ravg(next, rq, PICK_NEXT_TASK, wallclock, NULL);
clear_tsk_need_resched(prev); clear_tsk_need_resched(prev);