Re: Poor PostgreSQL scaling on Linux 2.6.25-rc5 (vs 2.6.22)

Nick Piggin
2008-03-11T08:29:20Z

On Tuesday 11 March 2008 18:58, Ingo Molnar wrote:
> * Nick Piggin <nickpiggin@yahoo.com.au> wrote:
> > PostgreSQL is different. It has zero idle time when running this
> > workload. It actually scaled "super linearly" on my system here, from
> > single threaded performance to 8 cores (giving an 8.2x performance
> > increase)!
> >
> > So PostgreSQL performance profile is actually much more interesting.
> > To my dismay, I found that Linux 2.6.25-rc5 performs really badly
> > after saturating the runqueues and subsequently increasing threads.
> > 2.6.22 drops a little bit, but basically settles near the peak
> > performance. With 2.6.25-rc5, throughput seems to be falling off
> > linearly with the number of threads.
>
> thanks Nick, i'll check this

Thanks.

> - and i agree that this very much looks
> like a scheduler regression.

I'd say it is. Quite a nasty one too: if your server gets nudged over
the edge of the cliff, it goes into a feedback loop and goes splat at
the bottom somewhere ;)

> Just a quick suggestion, does a simple
> runtime tune like this fix the workload:
>
> for N in /proc/sys/kernel/sched_domain/*/*/flags; do
> echo $[`cat $N`|16] > N
> done
>
> this sets SD_WAKE_IDLE for all the nodes in the scheduler domains tree.
> (doing this results in over-agressive idle balancing - but if this fixes
> your testcase it shows that we were balancing under-agressively for this
> workload.) Thanks,

It doesn't change anything.

There is no idle time for this workload, btw.