lkml.org 
[lkml]   [2010]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [performance bug] volanomark regression on 37-rc1
    forgot to add cc-list in previous mail.

    On Wed, Nov 17, 2010 at 11:42 AM, Nikhil Rao <ncrao@google.com> wrote:
    > On Tue, Nov 16, 2010 at 5:17 PM, Alex,Shi <alex.shi@intel.com> wrote:
    >>
    >> In the original source (.36 kernel) the rq->idle_stamp is set as zero
    >> after task was pulled to this cpu in load_balance(). Nikhil move this
    >> setting to pull_task(), that has same effect.
    >> I don't know what the details effect of removing idle_stamp setting
    >> instead of recovered it on idle_balance(). :)
    >>
    >> My machines are doing rc2 performance testing. I may try this patch
    >> after testing finish.
    >>
    >> The following is part of Nikhil's old patch.
    >> ===
    >> @@ -3162,10 +3186,8 @@ static void idle_balance(int this_cpu, struct rq
    >> *this_rq)
    >>                interval = msecs_to_jiffies(sd->balance_interval);
    >>                if (time_after(next_balance, sd->last_balance +
    >> interval))
    >>                        next_balance = sd->last_balance + interval;
    >> -               if (pulled_task) {
    >> -                       this_rq->idle_stamp = 0;
    >> +               if (pulled_task)
    >>                        break;
    >> -               }
    >>        }
    >>
    >> Regards
    >> Alex
    >>
    >
    > Ah, should have caught this when reviewing Mike's patch. :-(
    >
    > Thanks for catching that. We need to reset idle_stamp to 0 or else the avg_idle
    > calculations are incorrect. I've attached a patch below that resets idle_stamp
    > in the newidle path when we pull.
    >
    > ---
    > sched: volanomark regression fix (part 2)
    >
    > An earlier commit reverts idle balancing throttling reset to fix a 30%
    > regression in volanomark throughput. We still need to reset idle_stamp when we
    > pull a task in newidle balance.
    >
    > Reported-by: Alex Shi <alex.shi@intel.com>
    > Signed-off-by: Nikhil Rao <ncrao@google.com>
    > ---
    >  kernel/sched_fair.c |    4 +++-
    >  1 files changed, 3 insertions(+), 1 deletions(-)
    >
    > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
    > index 83f65dd..e6e7d4b 100644
    > --- a/kernel/sched_fair.c
    > +++ b/kernel/sched_fair.c
    > @@ -3193,8 +3193,10 @@ static void idle_balance(int this_cpu, struct rq *this_rq)
    >                interval = msecs_to_jiffies(sd->balance_interval);
    >                if (time_after(next_balance, sd->last_balance + interval))
    >                        next_balance = sd->last_balance + interval;
    > -               if (pulled_task)
    > +               if (pulled_task) {
    > +                       this_rq->idle_stamp = 0;
    >                        break;
    > +               }
    >        }
    >
    >        raw_spin_lock(&this_rq->lock);
    > --
    > 1.7.3.1
    >
    >
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-11-17 20:47    [W:0.028 / U:88.532 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site