Re: [VM PATCH] rotate_reclaimable_page fails frequently

From: Andrew Morton
Date: Sun Feb 05 2006 - 23:55:50 EST


Rik van Riel <riel@xxxxxxxxxxx> wrote:
>
> On Sun, 5 Feb 2006, Shantanu Goel wrote:
>
> > It seems rotate_reclaimable_page fails most of the
> > time due the page not being on the LRU when kswapd
> > calls writepage().
>
> The question is, why is the page not yet back on the
> LRU by the time the data write completes ?

Could be they're ext3 pages which were written out by kjournald. Such
pages are marked dirty but have clean buffers. ext3_writepage() will
discover that the page is actually clean and will mark it thus without
performing any I/O.

In which case this code in shrink_list():

/*
* A synchronous write - probably a ramdisk. Go
* ahead and try to reclaim the page.
*/
if (TestSetPageLocked(page))
goto keep;
if (PageDirty(page) || PageWriteback(page))
goto keep_locked;
mapping = page_mapping(page);
case PAGE_CLEAN:
; /* try to free the page below */

should just go and reclaim the page immediately.

Shantanu, I suggest you add some instrumentation there too, see if it's
working. (That'll be non-trivial. Just because we hit PAGE_CLEAN: here
doesn't necessarily mean that the page will be reclaimed).

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/