linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: kosaki.motohiro@jp.fujitsu.com, nickpiggin@yahoo.com.au,
	linux-mm@kvack.org, lee.schermerhorn@hp.com
Subject: Re: vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch
Date: Fri, 10 Oct 2008 21:53:59 -0400	[thread overview]
Message-ID: <48F00737.1080707@redhat.com> (raw)
In-Reply-To: <20081010184217.f689f493.akpm@linux-foundation.org>

Andrew Morton wrote:

> I implemented this as a fix against
> vmscan-fix-pagecache-reclaim-referenced-bit-check.patch, but that patch
> says 

> which isn't true any more.

> Sorry about this mess.

I'm not sure what else is still in the -mm tree and what got
removed, so I'm not sure what the new comment for the patch
should be.

Maybe the patch could just be folded into an earlier split
LRU patch now since there no longer is a special case for
page cache pages?

Btw, a few more cleanups to shrink_active_list are possible
now that every page always goes to the inactive list.

> static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
> 			struct scan_control *sc, int priority, int file)
> {
> 	unsigned long pgmoved;
> 	int pgdeactivate = 0;
> 	unsigned long pgscanned;
> 	LIST_HEAD(l_hold);	/* The pages which were snipped off */
> 	LIST_HEAD(l_active);

We no longer need l_active.

> 	/*
> 	 * Count the referenced pages as rotated, even when they are moved
> 	 * to the inactive list.  This helps balance scan pressure between
> 	 * file and anonymous pages in get_scan_ratio.
>  	 */
> 	zone->recent_rotated[!!file] += pgmoved;

This can be rewritten as

	/*
	 * Count referenced pages from currently used mappings as
	 * rotated, even though they are moved to the inactive list.
	 * This helps balance scan pressure between file and anonymous
	 * pages in get_scan_ratio.
	 */

> 	/*
> 	 * Now put the pages back on the appropriate [file or anon] inactive
> 	 * and active lists.
> 	 */

	/*
	 * Move the pages to the [file or anon] inactive list.
	 */

We keep the code that moves pages from l_inactive to the inactive
list.

We can throw away the loop that moves pages from l_active to the
active list, because we no longer do that:

> 	pgmoved = 0;
> 	lru = LRU_ACTIVE + file * LRU_FILE;
> 	while (!list_empty(&l_active)) {
> 		page = lru_to_page(&l_active);
> 		prefetchw_prev_lru_page(page, &l_active, flags);
> 		VM_BUG_ON(PageLRU(page));
> 		SetPageLRU(page);
> 		VM_BUG_ON(!PageActive(page));
> 
> 		list_move(&page->lru, &zone->lru[lru].list);
> 		mem_cgroup_move_lists(page, lru);
> 		pgmoved++;
> 		if (!pagevec_add(&pvec, page)) {
> 			__mod_zone_page_state(zone, NR_LRU_BASE + lru, pgmoved);
> 			pgmoved = 0;
> 			spin_unlock_irq(&zone->lru_lock);
> 			if (vm_swap_full())
> 				pagevec_swap_free(&pvec);
> 			__pagevec_release(&pvec);
> 			spin_lock_irq(&zone->lru_lock);
> 		}
> 	}
> 	__mod_zone_page_state(zone, NR_LRU_BASE + lru, pgmoved);

These last few lines are useful and should be kept:

> 	__count_zone_vm_events(PGREFILL, zone, pgscanned);
> 	__count_vm_events(PGDEACTIVATE, pgdeactivate);
> 	spin_unlock_irq(&zone->lru_lock);
> 	if (vm_swap_full())
> 		pagevec_swap_free(&pvec);
> 
> 	pagevec_release(&pvec);
> }


-- 
All rights reversed.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2008-10-11  1:53 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-08  5:55 vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Nick Piggin
2008-10-08 10:03 ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch KOSAKI Motohiro
2008-10-10 22:17   ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Andrew Morton
2008-10-10 22:25     ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Andrew Morton
2008-10-10 22:33       ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Andrew Morton
2008-10-10 23:59         ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Rik van Riel
2008-10-11  1:42           ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Andrew Morton
2008-10-11  1:53             ` Rik van Riel [this message]
2008-10-11  2:21               ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Andrew Morton
2008-10-11 20:46                 ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Rik van Riel
2008-10-12 13:31                   ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch KOSAKI Motohiro
2008-10-10 23:56       ` vmscan-give-referenced-active-and-unmapped-pages-a-second-trip-around-the-lru.patch Rik van Riel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48F00737.1080707@redhat.com \
    --to=riel@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=lee.schermerhorn@hp.com \
    --cc=linux-mm@kvack.org \
    --cc=nickpiggin@yahoo.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox