Jupyung Lee a65ac745e4 sched: Move update_curr() in check_preempt_wakeup() to avoid redundant call
If a RT task is woken up while a non-RT task is running,
check_preempt_wakeup() is called to check whether the new task can
preempt the old task. The function returns quickly without going deeper
because it is apparent that a RT task can always preempt a non-RT task.

In this situation, check_preempt_wakeup() always calls update_curr() to
update vruntime value of the currently running task. However, the
function call is unnecessary and redundant at that moment because (1) a
non-RT task can always be preempted by a RT task regardless of its
vruntime value, and (2) update_curr() will be called shortly when the
context switch between two occurs.

By moving update_curr() in check_preempt_wakeup(), we can avoid
redundant call to update_curr(), slightly reducing the time taken to
wake up RT tasks.

Signed-off-by: Jupyung Lee <jupyung@gmail.com>
[ Place update_curr() right before the wake_preempt_entity() call, which
  is the only thing that relies on the updated vruntime ]
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <1258451500-6714-1-git-send-email-jupyung@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-12-09 10:03:06 +01:00
..
2009-09-21 14:29:21 +02:00
2009-06-24 00:02:38 -04:00
2009-10-29 07:39:25 -07:00
2009-12-06 21:10:56 +01:00
2009-12-06 21:10:56 +01:00
2009-09-18 09:48:52 -07:00
2009-06-16 19:47:48 -07:00
2009-08-29 14:10:07 +02:00
2009-09-19 13:13:17 -07:00
2009-07-24 10:53:29 +02:00
2009-06-18 13:03:56 -07:00
2009-10-29 08:56:20 +10:30
2009-09-23 07:39:41 -07:00
2009-11-04 19:13:48 +01:00
2009-12-09 10:03:05 +01:00
2009-11-18 14:52:25 +01:00
2009-10-26 09:40:30 +01:00
2009-12-09 10:03:01 +01:00
2009-07-12 14:03:27 -07:00
2009-11-26 12:59:20 +01:00
2009-09-23 18:13:10 -07:00
2009-11-02 16:02:39 +01:00
2009-06-18 13:03:55 -07:00