Re: lmbench ctxsw regression with CFS

From: Nick Piggin
Date: Sun Aug 05 2007 - 23:30:00 EST


On Sat, Aug 04, 2007 at 08:50:37AM +0200, Ingo Molnar wrote:
>
> * Nick Piggin <npiggin@xxxxxxx> wrote:
>
> > Oh good. Thanks for getting to the bottom of it. We have normally
> > disliked too much runtime tunables in the scheduler, so I assume these
> > are mostly going away or under a CONFIG option for 2.6.23? Or...?
>
> yeah, they are all already under CONFIG_SCHED_DEBUG. (it's just that the
> add-on optimization is not upstream yet - the tunings are still being

Ah, OK. So long as that goes upstream I'm happy... and it is good
to see that with that patch, the base context switching performance
_has_ actually gone up like I had hoped. Nice.


> tested) Btw., with SCHED_DEBUG we now also have your domain-tree sysctl
> patch upstream, which has been in -mm for a near eternity.
>
> > What CPU did you get these numbers on? Do the indirect calls hurt much
> > on those without an indirect predictor? (I'll try running some tests).
>
> it was on an older Athlon64 X2. I never saw indirect calls really
> hurting on modern x86 CPUs - dont both CPU makers optimize them pretty
> efficiently? (as long as the target function is always the same - which
> it is here.)

I think a lot of CPUs do. I think ia64 does not. It predicts
based on the contents of a branch target register which has to
be loaded I presume before instructoin fetch reaches the branch.
I don't know if this would hurt or not.


> > I must say that I don't really like the indirect calls a great deal,
> > and they could be eliminated just with a couple of branches and direct
> > calls.
>
> yeah - i'll try that too. We can make the indirect call the uncommon
> case and a NULL pointer be the common case, combined with a 'default',
> direct function call. But i doubt it makes a big (or even measurable)
> difference.

You might be right there.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/