Re: PostgreSQL pgbench performance regression in 2.6.23+

Mike Galbraith
2008-05-23T13:35:48Z

On Fri, 2008-05-23 at 15:05 +0200, Mike Galbraith wrote:
> On Fri, 2008-05-23 at 12:10 +0200, Ingo Molnar wrote:
>
> > if it's other tweaks as well then could you perhaps try to make
> > SCHED_BATCH batch more agressively?
>
> Running SCHED_BATCH with only the below put a large dent in the problem.
>
> You can have tl <= current->se.load.weight. Nothing good happens in
> either case, at least with this load.
>
> --- kernel/sched_fair.c.org 2008-05-23 14:59:39.000000000 +0200
> +++ kernel/sched_fair.c 2008-05-23 14:49:05.000000000 +0200
> @@ -1081,7 +1081,7 @@ wake_affine(struct rq *rq, struct sched_
> * effect of the currently running task from the load
> * of the current CPU:
> */
> - if (sync)
> + if (sync && tl > current->se.load.weight)
> tl -= current->se.load.weight;
>
> if ((tl <= load && tl + target_load(prev_cpu, idx) <= tl_per_task) ||
>
>
>
> 2.6.26-smp x86_64
> 1 9209.503213
> 2 15792.406916
> 3 23369.199181
> 4 23140.108032
> 5 24556.515470
> 6 24926.457776
> 8 26896.607558
> 10 27350.988396
> 15 29005.426298
> 20 28558.267290
> 30 27002.328374
> 40 25809.202374
> 50 24589.478654

And without SCHED_BATCH

2.6.26-smp x86_64
1 8417.511252
2 15559.741472
3 23417.911087
4 21982.631084
5 24212.518114
6 21870.640050
8 25178.186022
10 27350.449792
15 27958.758943
20 28011.989131
30 26668.779045
40 24871.625107
50 23687.757456

So the primary low end problem is sync afine wakeups it seems.

-Mike