Re: [PATCH] kswapd shall not sleep during page shortage

Marcelo Tosatti
2004-11-09T17:41:25Z

On Tue, Nov 09, 2004 at 12:19:45PM -0800, Andrew Morton wrote:
> Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote:
> >
> >
> > Andrew,
> >
> > I was wrong last time I read balance_pgdat() when I thought kswapd
> > couldnt sleep under page shortage.
> >
> > It can, because all_zones_ok is set to "1" inside the
> > "priority=DEF_PRIORITY; priority >= 0; priority--" loop.
> >
> > So this patch sets "all_zones_ok" to zero even if all_unreclaimable
> > is set, avoiding it from sleeping when zones are under page short.
> >
>
> Does this solve any observed problem? What testing was done, and what were
> the results??

The observed problem are the page allocation failures!

No testing has been done, but it is an obvious problem if you read the
code.

What your thinking?

> > --- linux-2.6.10-rc1-mm2/mm/vmscan.c.orig 2004-11-09 16:38:04.480873424 -0200
> > +++ linux-2.6.10-rc1-mm2/mm/vmscan.c 2004-11-09 16:38:08.624243536 -0200
> > @@ -1033,15 +1033,17 @@
> > if (zone->present_pages == 0)
> > continue;
> >
> > - if (zone->all_unreclaimable &&
> > - priority != DEF_PRIORITY)
> > - continue;
> > -
> > if (!zone_watermark_ok(zone, order,
> > zone->pages_high, 0, 0, 0)) {
> > end_zone = i;
> > - goto scan;
> > + all_zones_ok = 0;
> > }
> > +
> > + if (zone->all_unreclaimable &&
> > + priority != DEF_PRIORITY)
> > + continue;
> > +
> > + goto scan;
> > }
> > goto out;
> > } else {