* Performance regression of specjbb2005/aim7 with 2.6.29-rc1
@ 2009-01-13 8:57 Zhang, Yanmin
2009-01-13 9:37 ` Mike Galbraith
0 siblings, 1 reply; 10+ messages in thread
From: Zhang, Yanmin @ 2009-01-13 8:57 UTC (permalink / raw)
To: Mike Galbraith; +Cc: LKML, ming.m.lin, Peter Zijlstra
Comparing with 2.6.28's results, specjbb2005 has about 7% regression with 2.6.29-rc1
on my a couple of x86_64 machines. aim7 has about 1.7% regression.
Ming did a quick bisect with aim7 and located below patch.
commit 0a582440ff546e2c6610d1acec325e91b4efd313
Author: Mike Galbraith <efault@gmx.de>
Date: Fri Jan 2 12:16:42 2009 +0100
sched: fix sched_slice()
Impact: fix bad-interactivity buglet
Fix sched_slice() to emit a sane result whether a task is currently
enqueued or not.
Signed-off-by: Mike Galbraith <efault@gmx.de>
Tested-by: Jayson King <dev@jaysonking.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
After we revert the patch, aim7 regression disappeared. specjbb2005 regression becomes
less than 1.5% on 8-core stokley and disappears on 16-core tigerton. I don't know what
causes the last 1.5% regression.
As tbench has about 5% improvement and oltp(mysql+sysbench) has 5% improvement, we also tested
to make sure such improvement isn't related to above patch. volanoMark's improvement is also not
related to the patch. So it seems safe to revert it.
yanmin
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-13 8:57 Performance regression of specjbb2005/aim7 with 2.6.29-rc1 Zhang, Yanmin @ 2009-01-13 9:37 ` Mike Galbraith 2009-01-15 2:30 ` Lin Ming 0 siblings, 1 reply; 10+ messages in thread From: Mike Galbraith @ 2009-01-13 9:37 UTC (permalink / raw) To: Zhang, Yanmin; +Cc: LKML, ming.m.lin, Peter Zijlstra On Tue, 2009-01-13 at 16:57 +0800, Zhang, Yanmin wrote: > Comparing with 2.6.28's results, specjbb2005 has about 7% regression with 2.6.29-rc1 > on my a couple of x86_64 machines. aim7 has about 1.7% regression. > > Ming did a quick bisect with aim7 and located below patch. > > commit 0a582440ff546e2c6610d1acec325e91b4efd313 > Author: Mike Galbraith <efault@gmx.de> > Date: Fri Jan 2 12:16:42 2009 +0100 > > sched: fix sched_slice() > > Impact: fix bad-interactivity buglet > > Fix sched_slice() to emit a sane result whether a task is currently > enqueued or not. > > Signed-off-by: Mike Galbraith <efault@gmx.de> > Tested-by: Jayson King <dev@jaysonking.com> > Signed-off-by: Ingo Molnar <mingo@elte.hu> > > > After we revert the patch, aim7 regression disappeared. specjbb2005 regression becomes > less than 1.5% on 8-core stokley and disappears on 16-core tigerton. I don't know what > causes the last 1.5% regression. > > As tbench has about 5% improvement and oltp(mysql+sysbench) has 5% improvement, we also tested > to make sure such improvement isn't related to above patch. volanoMark's improvement is also not > related to the patch. So it seems safe to revert it. No, it's not safe to just revert. You can replace it with something else, but as long as sched_slice() is called for unqueued tasks, it must emit sane slices, otherwise you can experience a latency-hit-from-hell. See thread: problem with "sched: revert back to per-rq vruntime"? -Mike ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-13 9:37 ` Mike Galbraith @ 2009-01-15 2:30 ` Lin Ming 2009-01-15 7:36 ` Peter Zijlstra ` (2 more replies) 0 siblings, 3 replies; 10+ messages in thread From: Lin Ming @ 2009-01-15 2:30 UTC (permalink / raw) To: Mike Galbraith; +Cc: Zhang, Yanmin, dev, LKML, Peter Zijlstra On Tue, 2009-01-13 at 17:37 +0800, Mike Galbraith wrote: > On Tue, 2009-01-13 at 16:57 +0800, Zhang, Yanmin wrote: > > Comparing with 2.6.28's results, specjbb2005 has about 7% regression with 2.6.29-rc1 > > on my a couple of x86_64 machines. aim7 has about 1.7% regression. > > > > Ming did a quick bisect with aim7 and located below patch. > > > > commit 0a582440ff546e2c6610d1acec325e91b4efd313 > > Author: Mike Galbraith <efault@gmx.de> > > Date: Fri Jan 2 12:16:42 2009 +0100 > > > > sched: fix sched_slice() > > > > Impact: fix bad-interactivity buglet > > > > Fix sched_slice() to emit a sane result whether a task is currently > > enqueued or not. > > > > Signed-off-by: Mike Galbraith <efault@gmx.de> > > Tested-by: Jayson King <dev@jaysonking.com> > > Signed-off-by: Ingo Molnar <mingo@elte.hu> > > > > > > After we revert the patch, aim7 regression disappeared. specjbb2005 regression becomes > > less than 1.5% on 8-core stokley and disappears on 16-core tigerton. I don't know what > > causes the last 1.5% regression. > > > > As tbench has about 5% improvement and oltp(mysql+sysbench) has 5% improvement, we also tested > > to make sure such improvement isn't related to above patch. volanoMark's improvement is also not > > related to the patch. So it seems safe to revert it. > > No, it's not safe to just revert. You can replace it with something > else, but as long as sched_slice() is called for unqueued tasks, it must > emit sane slices, otherwise you can experience a latency-hit-from-hell. > > See thread: problem with "sched: revert back to per-rq vruntime"? Below patch fixes aim7 regression and specjbb2005 regression becomes less than 1.5% on 8-core stokley. Jayson, Mike's patch fixed the latency problem you reported would you please help to test this patch to see if it still works fine now? diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index 8e1352c..617e54c 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c @@ -429,10 +429,10 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); for_each_sched_entity(se) { - struct load_weight *load = &cfs_rq->load; + struct load_weight *load = &cfs_rq_of(se)->load; if (unlikely(!se->on_rq)) { - struct load_weight lw = cfs_rq->load; + struct load_weight lw = cfs_rq_of(se)->load; update_load_add(&lw, se->load.weight); load = &lw; Thanks, Lin Ming > > -Mike > ^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 2:30 ` Lin Ming @ 2009-01-15 7:36 ` Peter Zijlstra 2009-01-15 15:10 ` Peter Zijlstra 2009-01-15 16:17 ` Peter Zijlstra 2 siblings, 0 replies; 10+ messages in thread From: Peter Zijlstra @ 2009-01-15 7:36 UTC (permalink / raw) To: Lin Ming; +Cc: Mike Galbraith, Zhang, Yanmin, dev, LKML On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > On Tue, 2009-01-13 at 17:37 +0800, Mike Galbraith wrote: > > On Tue, 2009-01-13 at 16:57 +0800, Zhang, Yanmin wrote: > > > Comparing with 2.6.28's results, specjbb2005 has about 7% regression with 2.6.29-rc1 > > > on my a couple of x86_64 machines. aim7 has about 1.7% regression. > > > > > > Ming did a quick bisect with aim7 and located below patch. > > > > > > commit 0a582440ff546e2c6610d1acec325e91b4efd313 > > > Author: Mike Galbraith <efault@gmx.de> > > > Date: Fri Jan 2 12:16:42 2009 +0100 > > > > > > sched: fix sched_slice() > > > > > > Impact: fix bad-interactivity buglet > > > > > > Fix sched_slice() to emit a sane result whether a task is currently > > > enqueued or not. > > > > > > Signed-off-by: Mike Galbraith <efault@gmx.de> > > > Tested-by: Jayson King <dev@jaysonking.com> > > > Signed-off-by: Ingo Molnar <mingo@elte.hu> > > > > > > > > > After we revert the patch, aim7 regression disappeared. specjbb2005 regression becomes > > > less than 1.5% on 8-core stokley and disappears on 16-core tigerton. I don't know what > > > causes the last 1.5% regression. > > > > > > As tbench has about 5% improvement and oltp(mysql+sysbench) has 5% improvement, we also tested > > > to make sure such improvement isn't related to above patch. volanoMark's improvement is also not > > > related to the patch. So it seems safe to revert it. > > > > No, it's not safe to just revert. You can replace it with something > > else, but as long as sched_slice() is called for unqueued tasks, it must > > emit sane slices, otherwise you can experience a latency-hit-from-hell. > > > > See thread: problem with "sched: revert back to per-rq vruntime"? > > Below patch fixes aim7 regression and specjbb2005 regression becomes > less than 1.5% on 8-core stokley. > > Jayson, > Mike's patch fixed the latency problem you reported > would you please help to test this patch to see if it still works fine now? > > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c > index 8e1352c..617e54c 100644 > --- a/kernel/sched_fair.c > +++ b/kernel/sched_fair.c > @@ -429,10 +429,10 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) > u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); > > for_each_sched_entity(se) { > - struct load_weight *load = &cfs_rq->load; > + struct load_weight *load = &cfs_rq_of(se)->load; > > if (unlikely(!se->on_rq)) { > - struct load_weight lw = cfs_rq->load; > + struct load_weight lw = cfs_rq_of(se)->load; > > update_load_add(&lw, se->load.weight); > load = &lw; > Ugh, that's not making sense, the thing is, if !se->on_rq it doesn't yet have a sensible cfs_rq_of(). ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 2:30 ` Lin Ming 2009-01-15 7:36 ` Peter Zijlstra @ 2009-01-15 15:10 ` Peter Zijlstra 2009-01-15 16:17 ` Peter Zijlstra 2 siblings, 0 replies; 10+ messages in thread From: Peter Zijlstra @ 2009-01-15 15:10 UTC (permalink / raw) To: Lin Ming; +Cc: Mike Galbraith, Zhang, Yanmin, dev, LKML On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c > index 8e1352c..617e54c 100644 > --- a/kernel/sched_fair.c > +++ b/kernel/sched_fair.c > @@ -429,10 +429,10 @@ static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) > u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); > > for_each_sched_entity(se) { > - struct load_weight *load = &cfs_rq->load; > + struct load_weight *load = &cfs_rq_of(se)->load; > > if (unlikely(!se->on_rq)) { > - struct load_weight lw = cfs_rq->load; > + struct load_weight lw = cfs_rq_of(se)->load; > > update_load_add(&lw, se->load.weight); > load = &lw; > I was wrong, this does look good. Thanks ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 2:30 ` Lin Ming 2009-01-15 7:36 ` Peter Zijlstra 2009-01-15 15:10 ` Peter Zijlstra @ 2009-01-15 16:17 ` Peter Zijlstra 2009-01-15 17:54 ` Ingo Molnar ` (2 more replies) 2 siblings, 3 replies; 10+ messages in thread From: Peter Zijlstra @ 2009-01-15 16:17 UTC (permalink / raw) To: Lin Ming; +Cc: Mike Galbraith, Zhang, Yanmin, dev, LKML On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > Below patch fixes aim7 regression and specjbb2005 regression becomes > less than 1.5% on 8-core stokley. Ingo, please apply the below. Ming, would you also provide a S-o-b line? --- Subject: sched_slice fixlet From: Lin Ming <ming.m.lin@intel.com> Date: Thu Jan 15 17:10:02 CET 2009 Mike's change: 0a582440f -- sched: fix sched_slice()) Broke group scheduling by forgetting to reload cfs_rq on each loop. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> --- kernel/sched_fair.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) Index: linux-2.6/kernel/sched_fair.c =================================================================== --- linux-2.6.orig/kernel/sched_fair.c +++ linux-2.6/kernel/sched_fair.c @@ -429,7 +429,10 @@ static u64 sched_slice(struct cfs_rq *cf u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); for_each_sched_entity(se) { - struct load_weight *load = &cfs_rq->load; + struct load_weight *load; + + cfs_rq = cfs_rq_of(se); + load = &cfs_rq->load; if (unlikely(!se->on_rq)) { struct load_weight lw = cfs_rq->load; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 16:17 ` Peter Zijlstra @ 2009-01-15 17:54 ` Ingo Molnar 2009-01-15 18:53 ` Jayson King 2009-01-16 0:49 ` Lin Ming 2 siblings, 0 replies; 10+ messages in thread From: Ingo Molnar @ 2009-01-15 17:54 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Lin Ming, Mike Galbraith, Zhang, Yanmin, dev, LKML * Peter Zijlstra <peterz@infradead.org> wrote: > On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > > > Below patch fixes aim7 regression and specjbb2005 regression becomes > > less than 1.5% on 8-core stokley. > > Ingo, please apply the below. Applied to tip/sched/urgent, thanks! Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 16:17 ` Peter Zijlstra 2009-01-15 17:54 ` Ingo Molnar @ 2009-01-15 18:53 ` Jayson King 2009-01-15 20:09 ` Ingo Molnar 2009-01-16 0:49 ` Lin Ming 2 siblings, 1 reply; 10+ messages in thread From: Jayson King @ 2009-01-15 18:53 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Lin Ming, Mike Galbraith, Zhang, Yanmin, LKML Peter Zijlstra wrote: > On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > >> Below patch fixes aim7 regression and specjbb2005 regression becomes >> less than 1.5% on 8-core stokley. > > Ingo, please apply the below. > > Ming, would you also provide a S-o-b line? > > --- > Subject: sched_slice fixlet > From: Lin Ming <ming.m.lin@intel.com> > Date: Thu Jan 15 17:10:02 CET 2009 > > Mike's change: 0a582440f -- sched: fix sched_slice()) > Broke group scheduling by forgetting to reload cfs_rq on each loop. > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > --- > kernel/sched_fair.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > Index: linux-2.6/kernel/sched_fair.c > =================================================================== > --- linux-2.6.orig/kernel/sched_fair.c > +++ linux-2.6/kernel/sched_fair.c > @@ -429,7 +429,10 @@ static u64 sched_slice(struct cfs_rq *cf > u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); > > for_each_sched_entity(se) { > - struct load_weight *load = &cfs_rq->load; > + struct load_weight *load; > + > + cfs_rq = cfs_rq_of(se); > + load = &cfs_rq->load; > > if (unlikely(!se->on_rq)) { > struct load_weight lw = cfs_rq->load; > > > That still works for me. You may add: Tested-by: Jayson King <dev@jaysonking.com> ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 18:53 ` Jayson King @ 2009-01-15 20:09 ` Ingo Molnar 0 siblings, 0 replies; 10+ messages in thread From: Ingo Molnar @ 2009-01-15 20:09 UTC (permalink / raw) To: Jayson King; +Cc: Peter Zijlstra, Lin Ming, Mike Galbraith, Zhang, Yanmin, LKML * Jayson King <dev@jaysonking.com> wrote: >> - struct load_weight *load = &cfs_rq->load; >> + struct load_weight *load; >> + >> + cfs_rq = cfs_rq_of(se); >> + load = &cfs_rq->load; >> if (unlikely(!se->on_rq)) { >> struct load_weight lw = cfs_rq->load; >> >> >> > > > That still works for me. You may add: > > Tested-by: Jayson King <dev@jaysonking.com> I have added it to the commit - thanks Jayson for the testing, Ingo ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: Performance regression of specjbb2005/aim7 with 2.6.29-rc1 2009-01-15 16:17 ` Peter Zijlstra 2009-01-15 17:54 ` Ingo Molnar 2009-01-15 18:53 ` Jayson King @ 2009-01-16 0:49 ` Lin Ming 2 siblings, 0 replies; 10+ messages in thread From: Lin Ming @ 2009-01-16 0:49 UTC (permalink / raw) To: Peter Zijlstra; +Cc: Mike Galbraith, Zhang, Yanmin, dev@jaysonking.com, LKML On Fri, 2009-01-16 at 00:17 +0800, Peter Zijlstra wrote: > On Thu, 2009-01-15 at 10:30 +0800, Lin Ming wrote: > > > Below patch fixes aim7 regression and specjbb2005 regression becomes > > less than 1.5% on 8-core stokley. > > Ingo, please apply the below. > > Ming, would you also provide a S-o-b line? Yes, Signed-off-by: Lin Ming <ming.m.lin@intel.com> Lin Ming > > --- > Subject: sched_slice fixlet > From: Lin Ming <ming.m.lin@intel.com> > Date: Thu Jan 15 17:10:02 CET 2009 > > Mike's change: 0a582440f -- sched: fix sched_slice()) > Broke group scheduling by forgetting to reload cfs_rq on each loop. > > Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> > --- > kernel/sched_fair.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > Index: linux-2.6/kernel/sched_fair.c > =================================================================== > --- linux-2.6.orig/kernel/sched_fair.c > +++ linux-2.6/kernel/sched_fair.c > @@ -429,7 +429,10 @@ static u64 sched_slice(struct cfs_rq *cf > u64 slice = __sched_period(cfs_rq->nr_running + !se->on_rq); > > for_each_sched_entity(se) { > - struct load_weight *load = &cfs_rq->load; > + struct load_weight *load; > + > + cfs_rq = cfs_rq_of(se); > + load = &cfs_rq->load; > > if (unlikely(!se->on_rq)) { > struct load_weight lw = cfs_rq->load; > > ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-01-16 0:52 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-01-13 8:57 Performance regression of specjbb2005/aim7 with 2.6.29-rc1 Zhang, Yanmin 2009-01-13 9:37 ` Mike Galbraith 2009-01-15 2:30 ` Lin Ming 2009-01-15 7:36 ` Peter Zijlstra 2009-01-15 15:10 ` Peter Zijlstra 2009-01-15 16:17 ` Peter Zijlstra 2009-01-15 17:54 ` Ingo Molnar 2009-01-15 18:53 ` Jayson King 2009-01-15 20:09 ` Ingo Molnar 2009-01-16 0:49 ` Lin Ming
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).