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

Andrew Morton
2004-11-09T20:19:45Z

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

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