Re: [patch] vm early reclaim orphaned pages

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Nick Piggin <[email protected]> wrote:
>
>  We have workloads where orphaned pages build up and appear to slow
>  the system down when it starts reclaiming memory.
> 
>  Stripping the referenced bit from orphaned pages and putting them
>  on the end of the inactive list should help improve reclaim.

Presumably if do_invalidatepage() failed, there's some reason why this page
is not reclaimable (eg, JBD is still dinking with it).  Hence there's a
very good chance that kswapd won't be able to reclaim it either.

Adding some instrumentation would be useful: set some new page flag on
these pages and then accumulate the success/failure stats in vmscan.c, see
what they say.

>  Signed-off-by: Nick Piggin <[email protected]>
> 
>  Index: linux-2.6/mm/truncate.c
>  ===================================================================
>  --- linux-2.6.orig/mm/truncate.c	2005-06-01 16:09:34.000000000 +1000
>  +++ linux-2.6/mm/truncate.c	2005-06-17 13:01:01.090334444 +1000
>  @@ -45,11 +45,30 @@
>   static void
>   truncate_complete_page(struct address_space *mapping, struct page *page)
>   {
>  +	int orphaned = 0;
>  +	
>   	if (page->mapping != mapping)
>   		return;
>   
>   	if (PagePrivate(page))
>  -		do_invalidatepage(page, 0);
>  +		orphaned = !(do_invalidatepage(page, 0));
>  +
>  +	if (orphaned) {
>  +		/*
>  +		 * Put orphaned pagecache on the end of the inactive
>  +		 * list so it can get reclaimed quickly.
>  +		 */
>  +		unsigned long flags;
>  +		struct zone *zone = page_zone(page);
>  +		spin_lock_irqsave(&zone->lru_lock, flags);
>  +		ClearPageReferenced(page);
>  +		if (PageLRU(page)) {
>  +			list_move_tail(&page->lru, &zone->inactive_list);
>  +			if (PageActive(page))
>  +				ClearPageActive(page);
>  +		}
>  +		spin_unlock_irqrestore(&zone->lru_lock, flags);
>  +	}

A standalone function in swap.c would be nicer.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux