Skip to content
  • Steven Rostedt's avatar
    sched: Balance RT tasks when forked as well · c37495fd
    Steven Rostedt authored
    When a new task is woken, the code to balance the RT task is currently
    skipped in the select_task_rq() call. But it will be pushed if the rq
    is currently overloaded with RT tasks anyway. The issue is that we
    already queued the task, and if it does get pushed, it will have to
    be dequeued and requeued on the new run queue. The advantage with
    pushing it first is that we avoid this requeuing as we are pushing it
    off before the task is ever queued.
    
    See commit 318e0893
    
     ("sched: pre-route RT tasks on wakeup")
    for more details.
    
    The return of select_task_rq() when it is not a wake up has also been
    changed to return task_cpu() instead of smp_processor_id(). This is more
    of a sanity because the current only other user of select_task_rq()
    besides wake ups, is an exec, where task_cpu() should also be the same
    as smp_processor_id(). But if it is used for other purposes, lets keep
    the task on the same CPU. Why would we mant to migrate it to the current
    CPU?
    
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Hillf Danton <dhillf@gmail.com>
    Link: http://lkml.kernel.org/r/20110617015919.832743148@goodmis.org
    
    
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    c37495fd