All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-ext4@vger.kernel.org, cmm@us.ibm.com
Subject: Re: [PATCH] vmscan: set try_to_release_page's gfp_mask to 0
Date: Wed, 15 Oct 2008 15:36:41 -0700	[thread overview]
Message-ID: <20081015153641.afcc94e5.akpm@linux-foundation.org> (raw)
In-Reply-To: <6.0.0.20.2.20080813150454.03b13e30@172.19.0.2>

On Wed, 13 Aug 2008 15:24:40 +0900
Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp> wrote:

> At 12:21 08/08/13, Andrew Morton wrote:
> >On Wed, 13 Aug 2008 11:21:16 +0900 Hisashi Hifumi 
> ><hifumi.hisashi@oss.ntt.co.jp> wrote:
> >
> >> Hi.
> >> 
> >> shrink_page_list passes gfp_mask to try_to_release_page.
> >> When shrink_page_list is called from kswapd or buddy system, gfp_mask is set
> >> and (gfp_mask & __GFP_WAIT) and (gfp_mask & __GFP_FS) check is positive.
> >> releasepage of jbd/jbd2(ext3/4, ocfs2) and XFS use this parameter. 
> >> If try_to_free_page fails due to bh busy in jbd/jbd2, jbd/jbd2 lets a 
> >thread wait for 
> >> committing transaction. I think this has big performance impacts for vmscan.
> >> So I modified shrink_page_list not to pass gfp_mask to try_to_release_page
> >> in ordered to improve vmscan performance.
> >> 
> >> Thanks.
> >> 
> >> Signed-off-by: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
> >> 
> >> diff -Nrup linux-2.6.27-rc2.org/mm/vmscan.c linux-2.6.27-rc2.vmscan/mm/vmscan.c
> >> --- linux-2.6.27-rc2.org/mm/vmscan.c	2008-08-11 14:33:24.000000000 +0900
> >> +++ linux-2.6.27-rc2.vmscan/mm/vmscan.c	2008-08-12 18:57:05.000000000 +0900
> >> @@ -614,7 +614,7 @@ static unsigned long shrink_page_list(st
> >>  		* Otherwise, leave the page on the LRU so it is swappable.
> >>  		*/
> >>  		if (PagePrivate(page)) {
> >> -			if (!try_to_release_page(page, sc->gfp_mask))
> >> +			if (!try_to_release_page(page, 0))
> >>  				goto activate_locked;
> >>  			if (!mapping && page_count(page) == 1) {
> >>  				unlock_page(page);
> >
> >I think the change makes sense.
> >
> >Has this change been shown to improve any workloads?  If so, please
> >provide full information for the changelog.  If not, please mention
> >this and explain why benefits were not demonstrable.  This information
> >should _always_ be present in a "performance" patch's changelog!
> 
> Sorry, I do not have performance number yet. I'll try this.
> 

This patch remains in a stalled state...

And then there's this:

: Probably a better fix would be to explicitly tell
: journal_try_to_free_buffers() when it need to block on journal commit,
: rather than (mis)interpreting the gfp_t in this fashion.  I assume the
: only caller who really cares is direct-io.  That would be quite a bit
: of churn, and the asynchronous behaviour perhaps makes sense _anyway_
: when called from page reclaim.
: 
: otoh, there is a risk that this change will cause page reclaim to sit
: there burning huge amounts of CPU time and not achieving anything,
: because all it is doing is scanning over busy pages.  In that case,
: blocking behind a commit which would make those pages reclaimable is
: correct behaviour.  But given that the offending code in
: journal_try_to_free_buffers() has only been there for a few weeks, I
: guess this isn't a concern.
: 
: 
: Really, I think what this patch tells us is that 3f31fddf ("jbd: fix
: race between free buffer and commit transaction") was an unpleasant
: hack which had undesirable and unexpected side-effects.  I think - that
: depends upon your as-yet-undisclosed testing results?
: 
: Perhaps we should revert 3f31fddf and have another think about how to
: fix the direct-io -EIO problem.  One option would be to hold our noses
: and add a new gfp_t flag for this specific purpose?
:

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@linux-foundation.org>
To: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	linux-ext4@vger.kernel.org, cmm@us.ibm.com
Subject: Re: [PATCH] vmscan: set try_to_release_page's gfp_mask to 0
Date: Wed, 15 Oct 2008 15:36:41 -0700	[thread overview]
Message-ID: <20081015153641.afcc94e5.akpm@linux-foundation.org> (raw)
In-Reply-To: <6.0.0.20.2.20080813150454.03b13e30@172.19.0.2>

On Wed, 13 Aug 2008 15:24:40 +0900
Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp> wrote:

> At 12:21 08/08/13, Andrew Morton wrote:
> >On Wed, 13 Aug 2008 11:21:16 +0900 Hisashi Hifumi 
> ><hifumi.hisashi@oss.ntt.co.jp> wrote:
> >
> >> Hi.
> >> 
> >> shrink_page_list passes gfp_mask to try_to_release_page.
> >> When shrink_page_list is called from kswapd or buddy system, gfp_mask is set
> >> and (gfp_mask & __GFP_WAIT) and (gfp_mask & __GFP_FS) check is positive.
> >> releasepage of jbd/jbd2(ext3/4, ocfs2) and XFS use this parameter. 
> >> If try_to_free_page fails due to bh busy in jbd/jbd2, jbd/jbd2 lets a 
> >thread wait for 
> >> committing transaction. I think this has big performance impacts for vmscan.
> >> So I modified shrink_page_list not to pass gfp_mask to try_to_release_page
> >> in ordered to improve vmscan performance.
> >> 
> >> Thanks.
> >> 
> >> Signed-off-by: Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
> >> 
> >> diff -Nrup linux-2.6.27-rc2.org/mm/vmscan.c linux-2.6.27-rc2.vmscan/mm/vmscan.c
> >> --- linux-2.6.27-rc2.org/mm/vmscan.c	2008-08-11 14:33:24.000000000 +0900
> >> +++ linux-2.6.27-rc2.vmscan/mm/vmscan.c	2008-08-12 18:57:05.000000000 +0900
> >> @@ -614,7 +614,7 @@ static unsigned long shrink_page_list(st
> >>  		* Otherwise, leave the page on the LRU so it is swappable.
> >>  		*/
> >>  		if (PagePrivate(page)) {
> >> -			if (!try_to_release_page(page, sc->gfp_mask))
> >> +			if (!try_to_release_page(page, 0))
> >>  				goto activate_locked;
> >>  			if (!mapping && page_count(page) == 1) {
> >>  				unlock_page(page);
> >
> >I think the change makes sense.
> >
> >Has this change been shown to improve any workloads?  If so, please
> >provide full information for the changelog.  If not, please mention
> >this and explain why benefits were not demonstrable.  This information
> >should _always_ be present in a "performance" patch's changelog!
> 
> Sorry, I do not have performance number yet. I'll try this.
> 

This patch remains in a stalled state...

And then there's this:

: Probably a better fix would be to explicitly tell
: journal_try_to_free_buffers() when it need to block on journal commit,
: rather than (mis)interpreting the gfp_t in this fashion.  I assume the
: only caller who really cares is direct-io.  That would be quite a bit
: of churn, and the asynchronous behaviour perhaps makes sense _anyway_
: when called from page reclaim.
: 
: otoh, there is a risk that this change will cause page reclaim to sit
: there burning huge amounts of CPU time and not achieving anything,
: because all it is doing is scanning over busy pages.  In that case,
: blocking behind a commit which would make those pages reclaimable is
: correct behaviour.  But given that the offending code in
: journal_try_to_free_buffers() has only been there for a few weeks, I
: guess this isn't a concern.
: 
: 
: Really, I think what this patch tells us is that 3f31fddf ("jbd: fix
: race between free buffer and commit transaction") was an unpleasant
: hack which had undesirable and unexpected side-effects.  I think - that
: depends upon your as-yet-undisclosed testing results?
: 
: Perhaps we should revert 3f31fddf and have another think about how to
: fix the direct-io -EIO problem.  One option would be to hold our noses
: and add a new gfp_t flag for this specific purpose?
:

--
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-15 22:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-13  2:21 [PATCH] vmscan: set try_to_release_page's gfp_mask to 0 Hisashi Hifumi
2008-08-13  2:21 ` Hisashi Hifumi
2008-08-13  3:21 ` Andrew Morton
2008-08-13  3:21   ` Andrew Morton
2008-08-13  6:24   ` Hisashi Hifumi
2008-08-13  6:24     ` Hisashi Hifumi
2008-10-15 22:36     ` Andrew Morton [this message]
2008-10-15 22:36       ` Andrew Morton
2008-10-16  2:44       ` Hisashi Hifumi
2008-10-16  2:44         ` Hisashi Hifumi
2008-10-16  2:54         ` Andrew Morton
2008-10-16  2:54           ` Andrew Morton
2008-10-16  3:06           ` Hisashi Hifumi
2008-10-16  3:06             ` Hisashi Hifumi

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=20081015153641.afcc94e5.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=cmm@us.ibm.com \
    --cc=hifumi.hisashi@oss.ntt.co.jp \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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.