Re: Kernel 2.6.8.1: swap storm of death - nr_requests > 1024 on swap partition

Hugh Dickins
2004-08-30T07:41:21Z

On Sun, 29 Aug 2004, Andrew Morton wrote:
> William Lee Irwin III <wli@holomorphy.com> wrote:
> > On Sun, Aug 29, 2004 at 01:59:17PM -0700, Andrew Morton wrote:
> > > The changlog wasn't that detailed ;)
> > > But yes, it's the large nr_requests which is tripping up swapout. I'm
> > > assuming that when a process exits with its anonymous memory still under
> > > swap I/O we're forgetting to actually free the pages when the I/O
> > > completes. So we end up with a ton of zero-ref swapcache pages on the LRU.
> > > I assume. Something odd's happening, that's for sure.
> >
> > Maybe we need to be checking for this in end_swap_bio_write() or
> > rotate_reclaimable_page()?
>
> Maybe. I thought a get_page() in swap_writepage() and a put_page() in
> end_swap_bio_write() would cause the page to be freed. But not. It needs
> some actual real work done on it.

There are quite a few limitations on when page can be freed from SwapCache.
Involves locks you wouldn't want to take from just anywhere. If the right
conditions don't happen to be met at the time a process exits, it's quite
normal for the SwapCache pages to hang around awhile, until eventually the
__delete_from_swap_cache towards the end of shrink_list removes them.

Hugh