Re: [RFC 0/3] Recursive reclaim (on __PF_MEMALLOC)

From: Peter Zijlstra
Date: Mon Sep 10 2007 - 16:48:20 EST


On Mon, 2007-09-10 at 13:17 -0700, Christoph Lameter wrote:
> On Mon, 10 Sep 2007, Peter Zijlstra wrote:
>
> > > Allright maybe you can get the kernel to be stable in the face of having
> > > no memory and debug all the fallback paths in the kernel when an OOM
> > > condition occurs.
> > >
> > > But system calls will fail? Like fork/exec? etc? There may be daemons
> > > running that are essential for the system to survive and that cannot
> > > easily take an OOM condition? Various reclaim paths also need memory and
> > > if the allocation fails then reclaim cannot continue.
> >
> > I'm not making any of these paths significantly more likely to occur
> > than they already are. Lots and lots of users run swap heavy loads day
> > in day out - they don't get funny systems (well sometimes they do, and
> > theoretically we can easily run out of the PF_MEMALLOC reserves -
> > HOWEVER in practise it seems to work quite reliably).
> >
>
> The patchset increases these failures significantly since there will be a
> longer time period where these allocations can fail.
>
> The swap loads are fine as long as we do not exhaust the reserve pools.

And I'm working hard to guarantee the additional logic does not exhaust
said pools by making it strictly bounded.

> IMHO the right solution is to throttle the networking layer to not do
> unbounded allocations.

Am I not doing exactly that?

> You can likely do this by checking certain VM
> counters like SLAB_UNRECLAIMABLE. If need be we can add a new category of
> SLAB_TEMPORARY for temporary allocs and track these. If they get too large
> then throttle.

I'm utterly confused as to why you propose all these heuristics when I
have a perfectly good solution that is exact.

Attachment: signature.asc
Description: This is a digitally signed message part