Re: Scheduler(?) regression from 2.6.22 to 2.6.24 for short-lived threads

From: Willy Tarreau
Date: Sat Feb 09 2008 - 12:12:00 EST


On Sat, Feb 09, 2008 at 02:37:39PM +0100, Mike Galbraith wrote:
>
> On Sat, 2008-02-09 at 12:40 +0100, Willy Tarreau wrote:
> > On Sat, Feb 09, 2008 at 11:58:25AM +0100, Mike Galbraith wrote:
> > >
> > > On Sat, 2008-02-09 at 09:03 +0100, Willy Tarreau wrote:
> > >
> > > > How many CPUs do you have ?
> > >
> > > It's a P4/HT, so 1 plus $CHUMP_CHANGE_MAYBE
> > >
> > > > > 2.6.25-smp (git today)
> > > > > time 29 ms
> > > > > time 61 ms
> > > > > time 72 ms
> > > >
> > > > These ones look rather strange. What type of workload is it ? Can you
> > > > publish the program for others to test it ?
> > >
> > > It's the proglet posted in this thread.
> >
> > OK sorry, I did not notice it when I first read the report.
>
> Hm. The 2.6.25-smp kernel is the only one that looks like it's doing
> what proggy wants to do, massive context switching. Bump threads to
> larger number so you can watch: the supposedly good kernel (22) is doing
> everything on one CPU. Everybody else sucks differently (idleness), and
> the clear throughput winner, via mad over-schedule (!?!), is git today.

For me, 2.6.25-smp gives pretty irregular results :

time 6548 ms
time 7272 ms
time 1188 ms
time 3772 ms

The CPU usage is quite irregular too and never goes beyond 50% (this is a
dual-athlon). If I start two of these processes, 100% of the CPU is used,
the context switch rate is more regular (about 700/s) and the total time
is more regular too (between 14.8 and 18.5 seconds).

Increasing the parallel run time of the two threads by changing the upper
limit of the for(j) loop correctly saturates both processors. I think that
this program simply does not have enough work to do for each thread to run
for a full timeslice, thus showing a random behaviour.

However, I fail to understand the goal of the reproducer. Granted it shows
irregularities in the scheduler under such conditions, but what *real*
workload would spend its time sequentially creating then immediately killing
threads, never using more than 2 at a time ?

If this could be turned into a DoS, I could understand, but here it looks
a bit pointless :-/

Regards,
Willy

--
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/