All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Rik van Riel <riel@redhat.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 1/3] vmscan: factor out page reference checks
Date: Tue, 23 Feb 2010 16:40:16 +0100	[thread overview]
Message-ID: <20100223154016.GC29762@cmpxchg.org> (raw)
In-Reply-To: <1266936254.2723.33.camel@barrios-desktop>

Hello Minchan,

On Tue, Feb 23, 2010 at 11:44:14PM +0900, Minchan Kim wrote:
> On Tue, 2010-02-23 at 15:21 +0100, Johannes Weiner wrote:
> > Hello Minchan,
> > 
> > On Tue, Feb 23, 2010 at 10:38:23PM +0900, Minchan Kim wrote:
> 
> <snip>
> 
> > > >  
> > > >  		if (PageDirty(page)) {
> > > > -			if (sc->order <= PAGE_ALLOC_COSTLY_ORDER && referenced)
> > > > +			if (references == PAGEREF_RECLAIM_CLEAN)
> > > 
> > > How equal PAGEREF_RECLAIM_CLEAN and sc->order <= PAGE_ALLOC_COSTLY_ORDER
> > > && referenced by semantic?
> > 
> > It is encoded in page_check_references().  When
> > 	sc->order <= PAGE_ALLOC_COSTLY_ORDER && referenced
> > it returns PAGEREF_RECLAIM_CLEAN.
> > 
> > So
> > 
> > 	- PageDirty() && order < COSTLY && referenced
> > 	+ PageDirty() && references == PAGEREF_RECLAIM_CLEAN
> > 
> > is an equivalent transformation.  Does this answer your question?
> 
> Hmm. I knew it. My point was PAGEREF_RECLAIM_CLEAN seems to be a little
> awkward. I thought PAGEREF_RECLAIM_CLEAN means if the page was clean, it
> can be reclaimed.

But you were thinking right, it is exactly what it means!  If
the state is PAGEREF_RECLAIM_CLEAN, reclaim the page if it is clean:

	if (PageDirty(page)) {
		if (references == PAGEREF_RECLAIM_CLEAN)
			goto keep_locked;	/* do not reclaim */
		...
	}

> I think it would be better to rename it with represent "Although it's
> referenced page recently, we can reclaim it if VM try to reclaim high
> order page".

I changed it to PAGEREF_RECLAIM_LUMPY and PAGEREF_RECLAIM, but I felt
it made it worse.  It's awkward that we have to communicate that state
at all, maybe it would be better to do

        if (PageDirty(page) && referenced_page)
                return PAGEREF_KEEP;

in page_check_references()?  But doing PageDirty() twice is also kinda
lame.

I don't know.  Can we leave it like that for now?

        Hannes

WARNING: multiple messages have this Message-ID (diff)
From: Johannes Weiner <hannes@cmpxchg.org>
To: Minchan Kim <minchan.kim@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Rik van Riel <riel@redhat.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch 1/3] vmscan: factor out page reference checks
Date: Tue, 23 Feb 2010 16:40:16 +0100	[thread overview]
Message-ID: <20100223154016.GC29762@cmpxchg.org> (raw)
In-Reply-To: <1266936254.2723.33.camel@barrios-desktop>

Hello Minchan,

On Tue, Feb 23, 2010 at 11:44:14PM +0900, Minchan Kim wrote:
> On Tue, 2010-02-23 at 15:21 +0100, Johannes Weiner wrote:
> > Hello Minchan,
> > 
> > On Tue, Feb 23, 2010 at 10:38:23PM +0900, Minchan Kim wrote:
> 
> <snip>
> 
> > > >  
> > > >  		if (PageDirty(page)) {
> > > > -			if (sc->order <= PAGE_ALLOC_COSTLY_ORDER && referenced)
> > > > +			if (references == PAGEREF_RECLAIM_CLEAN)
> > > 
> > > How equal PAGEREF_RECLAIM_CLEAN and sc->order <= PAGE_ALLOC_COSTLY_ORDER
> > > && referenced by semantic?
> > 
> > It is encoded in page_check_references().  When
> > 	sc->order <= PAGE_ALLOC_COSTLY_ORDER && referenced
> > it returns PAGEREF_RECLAIM_CLEAN.
> > 
> > So
> > 
> > 	- PageDirty() && order < COSTLY && referenced
> > 	+ PageDirty() && references == PAGEREF_RECLAIM_CLEAN
> > 
> > is an equivalent transformation.  Does this answer your question?
> 
> Hmm. I knew it. My point was PAGEREF_RECLAIM_CLEAN seems to be a little
> awkward. I thought PAGEREF_RECLAIM_CLEAN means if the page was clean, it
> can be reclaimed.

But you were thinking right, it is exactly what it means!  If
the state is PAGEREF_RECLAIM_CLEAN, reclaim the page if it is clean:

	if (PageDirty(page)) {
		if (references == PAGEREF_RECLAIM_CLEAN)
			goto keep_locked;	/* do not reclaim */
		...
	}

> I think it would be better to rename it with represent "Although it's
> referenced page recently, we can reclaim it if VM try to reclaim high
> order page".

I changed it to PAGEREF_RECLAIM_LUMPY and PAGEREF_RECLAIM, but I felt
it made it worse.  It's awkward that we have to communicate that state
at all, maybe it would be better to do

        if (PageDirty(page) && referenced_page)
                return PAGEREF_KEEP;

in page_check_references()?  But doing PageDirty() twice is also kinda
lame.

I don't know.  Can we leave it like that for now?

        Hannes

--
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:[~2010-02-23 15:40 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-22 19:49 mm: used-once mapped file page detection Johannes Weiner
2010-02-22 19:49 ` Johannes Weiner
2010-02-22 19:49 ` [patch 1/3] vmscan: factor out page reference checks Johannes Weiner
2010-02-22 19:49   ` Johannes Weiner
2010-02-22 20:27   ` Rik van Riel
2010-02-22 20:27     ` Rik van Riel
2010-02-23 13:38   ` Minchan Kim
2010-02-23 13:38     ` Minchan Kim
2010-02-23 14:21     ` Johannes Weiner
2010-02-23 14:21       ` Johannes Weiner
2010-02-23 14:31       ` Rik van Riel
2010-02-23 14:31         ` Rik van Riel
2010-02-23 14:44       ` Minchan Kim
2010-02-23 14:44         ` Minchan Kim
2010-02-23 15:40         ` Johannes Weiner [this message]
2010-02-23 15:40           ` Johannes Weiner
2010-02-23 16:04           ` Minchan Kim
2010-02-23 16:04             ` Minchan Kim
2010-02-22 19:49 ` [patch 2/3] vmscan: drop page_mapping_inuse() Johannes Weiner
2010-02-22 19:49   ` Johannes Weiner
2010-02-22 20:28   ` Rik van Riel
2010-02-22 20:28     ` Rik van Riel
2010-02-23 14:03   ` Minchan Kim
2010-02-23 14:03     ` Minchan Kim
2010-02-23 14:32     ` Johannes Weiner
2010-02-23 14:32       ` Johannes Weiner
2010-02-23 14:48       ` Minchan Kim
2010-02-23 14:48         ` Minchan Kim
2010-02-22 19:49 ` [patch 3/3] vmscan: detect mapped file pages used only once Johannes Weiner
2010-02-22 19:49   ` Johannes Weiner
2010-02-22 20:34   ` Rik van Riel
2010-02-22 20:34     ` Rik van Riel
2010-02-23 15:03   ` Minchan Kim
2010-02-23 15:03     ` Minchan Kim
2010-02-23 15:45     ` Johannes Weiner
2010-02-23 15:45       ` Johannes Weiner
2010-02-24 21:39 ` mm: used-once mapped file page detection Andrew Morton
2010-02-24 21:39   ` Andrew Morton
2010-02-26 14:32   ` Johannes Weiner
2010-02-26 14:32     ` Johannes Weiner
2010-02-28 17:49     ` Rik van Riel
2010-02-28 17:49       ` Rik van Riel
2010-02-28 20:36       ` Johannes Weiner
2010-02-28 20:36         ` Johannes Weiner

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=20100223154016.GC29762@cmpxchg.org \
    --to=hannes@cmpxchg.org \
    --cc=akpm@linux-foundation.org \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=riel@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.