lkml.org 
[lkml]   [2012]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[sched/rt] Optimization of function pull_rt_task()
    From
    Date
    The condition (src_rq->rt.rt_nr_running) is weak because it doesn't
    consider the cases when src_rq has only processes bound to it (when
    single cpu is allowed). It may be running kernel thread like
    migration/x etc.

    So it's better to use more stronger condition which is able to exclude
    above conditions. The function has_pushable_tasks() complitely does
    this. A task may be pullable for another cpu rq only if he is pushable
    for his own queue.

    Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
    ---
    kernel/sched/rt.c | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)
    diff --git a/kernel/sched/rt.c b/kernel/sched/rt.c
    index c5565c3..61e3086 100644
    --- a/kernel/sched/rt.c
    +++ b/kernel/sched/rt.c
    @@ -1729,7 +1729,7 @@ static int pull_rt_task(struct rq *this_rq)
    /*
    * Are there still pullable RT tasks?
    */
    - if (src_rq->rt.rt_nr_running <= 1)
    + if (!has_pushable_tasks(src_rq))
    goto skip;

    p = pick_next_highest_task_rt(src_rq, this_cpu);



    \
     
     \ /
      Last update: 2012-04-15 21:47    [W:3.086 / U:0.604 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site