Re: [rfc][patch] swap: virtual swap readahead

From: Johannes Weiner
Date: Mon Jun 08 2009 - 14:00:30 EST


On Mon, Jun 08, 2009 at 03:52:46PM +0800, Wu Fengguang wrote:
> On Wed, May 27, 2009 at 05:05:46PM +0200, Johannes Weiner wrote:
> > The current swap readahead implementation reads a physically
> > contiguous group of swap slots around the faulting page to take
> > advantage of the disk head's position and in the hope that the
> > surrounding pages will be needed soon as well.
> >
> > This works as long as the physical swap slot order approximates the
> > LRU order decently, otherwise it wastes memory and IO bandwidth to
> > read in pages that are unlikely to be needed soon.
> >
> > However, the physical swap slot layout diverges from the LRU order
> > with increasing swap activity, i.e. high memory pressure situations,
> > and this is exactly the situation where swapin should not waste any
> > memory or IO bandwidth as both are the most contended resources at
> > this point.
> >
> > This patch makes swap-in base its readaround window on the virtual
> > proximity of pages in the faulting VMA, as an indicator for pages
> > needed in the near future, while still taking physical locality of
> > swap slots into account.
> >
> > This has the advantage of reading in big batches when the LRU order
> > matches the swap slot order while automatically throttling readahead
> > when the system is thrashing and swap slots are no longer nicely
> > grouped by LRU order.
>
> Hi Johannes,
>
> You may want to test the patch against a real desktop :)
> The attached scripts can do that. I also have the setup to
> test it out conveniently, so if you send me the latest patch..

Thanks a bunch for the offer! I'm just now incorporating Hugh's
feedback and hope I will be back soon with the next version. I will
let you know, for sure.

Hannes
--
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/