Re: [PATCH 0/3] Reduce impact to overall system of SLUB using high-order allocations

Mel Gorman
2011-05-13T11:25:51Z

On Thu, May 12, 2011 at 10:53:44AM -0500, James Bottomley wrote:
> On Thu, 2011-05-12 at 09:04 -0500, James Bottomley wrote:
> > On Thu, 2011-05-12 at 14:13 +0300, Pekka Enberg wrote:
> > > On 5/12/11 1:34 AM, James Bottomley wrote:
> > > > On Wed, 2011-05-11 at 15:28 -0700, David Rientjes wrote:
> > > >> On Wed, 11 May 2011, James Bottomley wrote:
> > > >>
> > > >>> OK, I confirm that I can't seem to break this one. No hangs visible,
> > > >>> even when loading up the system with firefox, evolution, the usual
> > > >>> massive untar, X and even a distribution upgrade.
> > > >>>
> > > >>> You can add my tested-by
> > > >>>
> > > >> Your system still hangs with patches 1 and 2 only?
> > > > Yes, but only once in all the testing. With patches 1 and 2 the hang is
> > > > much harder to reproduce, but it still seems to be present if I hit it
> > > > hard enough.
> > >
> > > Patches 1-2 look reasonable to me. I'm not completely convinced of patch
> > > 3, though. Why are we seeing these problems now? This has been in
> > > mainline for a long time already. Shouldn't we fix kswapd?
> >
> > So I'm open to this. The hang occurs when kswapd races around in
> > shrink_slab and never exits. It looks like there's a massive number of
> > wakeups triggering this, but we haven't been able to diagnose it
> > further. turning on PREEMPT gets rid of the hang, so I could try to
> > reproduce with PREEMPT and turn on tracing. The problem so far has been
> > that the number of events is so huge that the trace buffer only captures
> > a few microseconds of output.
>
> OK, here's the trace from a PREEMPT kernel (2.6.38.6) when kswapd hits
> 99% and stays there. I've only enabled the vmscan tracepoints to try
> and get a longer run. It mosly looks like kswapd waking itself, but
> there might be more in there that mm trained eyes can see.
>

For 2.6.38.6, commit [2876592f: mm: vmscan: stop reclaim/compaction
earlier due to insufficient progress if !__GFP_REPEAT] may also be
needed if CONFIG_COMPACTION if set.

--
Mel Gorman
SUSE Labs