Re: [PATCH] 1/4: rework alloc_pages

Andrew Morton
2004-08-06T05:37:25Z

Nick Piggin <nickpiggin@yahoo.com.au> wrote:
>
> Andrew Morton wrote:
> > Nick Piggin <nickpiggin@yahoo.com.au> wrote:
> >
> >>Previously the ->protection[] logic was broken. It was difficult to follow
> >> and basically didn't use the asynch reclaim watermarks properly.
> >
> >
> > eh?
> >
> > Broken how?
> >
>
> min = (1<<order) + z->protection[alloc_type];
>
> This value is used both as the condition for waking kswapd, and
> whether or not to enter synch reclaim.
>
> What should happen is kswapd gets woken at pages_low, and synch
> reclaim is started at pages_min.

Are you aware of this:

void wakeup_kswapd(struct zone *zone)
{
if (zone->free_pages > zone->pages_low)
return;

?

>
> pages_low + protection and pages_min + protection, etc.

Nick, sorry, but I shouldn't have to expend these many braincells
decrypting your work. Please: much better explanations, more testing
results. This stuff is fiddly, sensitive and has a habit of blowing up in
our faces weeks later. We need to be cautious. The barriers are higher
nowadays.