All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	stable@kernel.org, Rik van Riel <riel@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Dave Chinner <david@fromorbit.com>,
	Chris Mason <chris.mason@oracle.com>,
	Nick Piggin <npiggin@suse.de>,
	Johannes Weiner <hannes@cmpxchg.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Minchan Kim <minchan.kim@gmail.com>, Andreas Mohr <andi@lisas.de>,
	Bill Davidsen <davidsen@tmr.com>,
	Ben Gamari <bgamari.foss@gmail.com>
Subject: Re: Why PAGEOUT_IO_SYNC stalls for a long time
Date: Fri, 30 Jul 2010 11:30:18 +0100	[thread overview]
Message-ID: <20100730103018.GE3571@csn.ul.ie> (raw)
In-Reply-To: <20100730115222.4AD8.A69D9226@jp.fujitsu.com>

On Fri, Jul 30, 2010 at 01:54:53PM +0900, KOSAKI Motohiro wrote:
> > > (1) and (8) might be solved
> > > by sleeping awhile, but it's unrelated on io-congestion. but might not be. It only works
> > > by lucky. So I don't like to depned on luck. 
> > 
> > In this case, waiting a while really in the right thing to do. It stalls
> > the caller, but it's a high-order allocation. The alternative is for it
> > to keep scanning which when under memory pressure could result in far
> > too many pages being evicted. How long to wait is a tricky one to answer
> > but I would recommend making this a low priority.
> 
> For case (1), just lock_page() instead trylock is brilliant way than random sleep. 
> Is there any good reason to give up synchrounous lumpy reclaim when trylock_page() failed?
> IOW, briefly lock_page() and wait_on_page_writeback() have the same latency. why should
> we only avoid former?
> 

No reason. Using lock_page() in the synchronous case would be a sensible
choice. As you are realising, there are a number of warts around lumpy
reclaim that are long overdue for a good look :/

> side note: page lock contention is very common case.
> 
> For case (8), I don't think sleeping is right way. get_page() is used in really various place of
> our kernel. so we can't assume it's only temporary reference count increasing.

In what case is a munlocked pages reference count permanently increased and
why is this not a memory leak?

> In the other
> hand, this contention is not so common because shrink_page_list() is excluded from IO
> activity by page-lock and wait_on_page_writeback(). so I think giving up this case don't
> makes too many pages eviction.
> If you disagree, can you please explain your expected bad scinario?
> 

Right now, I can't think of a problem with calling lock_page instead of
trylock for synchronous lumpy reclaim.

> > > > > 3. pageout() is intended anynchronous api. but doesn't works so.
> > > > > 
> > > > > pageout() call ->writepage with wbc->nonblocking=1. because if the system have
> > > > > default vm.dirty_ratio (i.e. 20), we have 80% clean memory. so, getting stuck
> > > > > on one page is stupid, we should scan much pages as soon as possible.
> > > > > 
> > > > > HOWEVER, block layer ignore this argument. if slow usb memory device connect
> > > > > to the system, ->writepage() will sleep long time. because submit_bio() call
> > > > > get_request_wait() unconditionally and it doesn't have any PF_MEMALLOC task
> > > > > bonus.
> > > > 
> > > > Is this not a problem in the writeback layer rather than pageout()
> > > > specifically?
> > > 
> > > Well, outside pageout(), probably only XFS makes PF_MEMALLOC + writeout. 
> > > because PF_MEMALLOC is enabled only very limited situation. but I don't know
> > > XFS detail at all. I can't tell this area...
> > > 
> > 
> > All direct reclaimers have PF_MEMALLOC set so it's not that limited a
> > situation. See here
> 
> Yes, all direct reclaimers have PF_MEMALLOC. but usually all direct reclaimers don't call
> any IO related function except pageout(). As far as I know, current shrink_icache() and 
> shrink_dcache() doesn't make IO. Am I missing something?
> 

Not that I'm aware of but it's not something I would know offhand. Will
go digging.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Wu Fengguang <fengguang.wu@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	stable@kernel.org, Rik van Riel <riel@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-fsdevel@vger.kernel.org" <linux-fsdevel@vger.kernel.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Dave Chinner <david@fromorbit.com>,
	Chris Mason <chris.mason@oracle.com>,
	Nick Piggin <npiggin@suse.de>,
	Johannes Weiner <hannes@cmpxchg.org>,
	KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
	Andrea Arcangeli <aarcange@redhat.com>,
	Minchan Kim <minchan.kim@gmail.com>, Andreas Mohr <andi@lisas.de>,
	Bill Davidsen <davidsen@tmr.com>,
	Ben Gamari <bgamari.foss@gmail.com>
Subject: Re: Why PAGEOUT_IO_SYNC stalls for a long time
Date: Fri, 30 Jul 2010 11:30:18 +0100	[thread overview]
Message-ID: <20100730103018.GE3571@csn.ul.ie> (raw)
In-Reply-To: <20100730115222.4AD8.A69D9226@jp.fujitsu.com>

On Fri, Jul 30, 2010 at 01:54:53PM +0900, KOSAKI Motohiro wrote:
> > > (1) and (8) might be solved
> > > by sleeping awhile, but it's unrelated on io-congestion. but might not be. It only works
> > > by lucky. So I don't like to depned on luck. 
> > 
> > In this case, waiting a while really in the right thing to do. It stalls
> > the caller, but it's a high-order allocation. The alternative is for it
> > to keep scanning which when under memory pressure could result in far
> > too many pages being evicted. How long to wait is a tricky one to answer
> > but I would recommend making this a low priority.
> 
> For case (1), just lock_page() instead trylock is brilliant way than random sleep. 
> Is there any good reason to give up synchrounous lumpy reclaim when trylock_page() failed?
> IOW, briefly lock_page() and wait_on_page_writeback() have the same latency. why should
> we only avoid former?
> 

No reason. Using lock_page() in the synchronous case would be a sensible
choice. As you are realising, there are a number of warts around lumpy
reclaim that are long overdue for a good look :/

> side note: page lock contention is very common case.
> 
> For case (8), I don't think sleeping is right way. get_page() is used in really various place of
> our kernel. so we can't assume it's only temporary reference count increasing.

In what case is a munlocked pages reference count permanently increased and
why is this not a memory leak?

> In the other
> hand, this contention is not so common because shrink_page_list() is excluded from IO
> activity by page-lock and wait_on_page_writeback(). so I think giving up this case don't
> makes too many pages eviction.
> If you disagree, can you please explain your expected bad scinario?
> 

Right now, I can't think of a problem with calling lock_page instead of
trylock for synchronous lumpy reclaim.

> > > > > 3. pageout() is intended anynchronous api. but doesn't works so.
> > > > > 
> > > > > pageout() call ->writepage with wbc->nonblocking=1. because if the system have
> > > > > default vm.dirty_ratio (i.e. 20), we have 80% clean memory. so, getting stuck
> > > > > on one page is stupid, we should scan much pages as soon as possible.
> > > > > 
> > > > > HOWEVER, block layer ignore this argument. if slow usb memory device connect
> > > > > to the system, ->writepage() will sleep long time. because submit_bio() call
> > > > > get_request_wait() unconditionally and it doesn't have any PF_MEMALLOC task
> > > > > bonus.
> > > > 
> > > > Is this not a problem in the writeback layer rather than pageout()
> > > > specifically?
> > > 
> > > Well, outside pageout(), probably only XFS makes PF_MEMALLOC + writeout. 
> > > because PF_MEMALLOC is enabled only very limited situation. but I don't know
> > > XFS detail at all. I can't tell this area...
> > > 
> > 
> > All direct reclaimers have PF_MEMALLOC set so it's not that limited a
> > situation. See here
> 
> Yes, all direct reclaimers have PF_MEMALLOC. but usually all direct reclaimers don't call
> any IO related function except pageout(). As far as I know, current shrink_icache() and 
> shrink_dcache() doesn't make IO. Am I missing something?
> 

Not that I'm aware of but it's not something I would know offhand. Will
go digging.

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

--
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-07-30 10:30 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-28  7:17 [PATCH] vmscan: raise the bar to PAGEOUT_IO_SYNC stalls Wu Fengguang
2010-07-28  7:17 ` Wu Fengguang
2010-07-28  7:49 ` Minchan Kim
2010-07-28  7:49   ` Minchan Kim
2010-07-28  8:46   ` [PATCH] vmscan: remove wait_on_page_writeback() from pageout() Wu Fengguang
2010-07-28  8:46     ` Wu Fengguang
2010-07-28  9:10     ` Mel Gorman
2010-07-28  9:10       ` Mel Gorman
2010-07-28  9:30       ` Wu Fengguang
2010-07-28  9:30         ` Wu Fengguang
2010-07-28  9:45         ` Mel Gorman
2010-07-28  9:45           ` Mel Gorman
2010-07-28  9:43       ` KOSAKI Motohiro
2010-07-28  9:43         ` KOSAKI Motohiro
2010-07-28  9:50         ` Mel Gorman
2010-07-28  9:50           ` Mel Gorman
2010-07-28  9:59           ` KOSAKI Motohiro
2010-07-28  9:59             ` KOSAKI Motohiro
2010-08-01  5:27             ` Wu Fengguang
2010-08-01  5:27               ` Wu Fengguang
2010-08-01  5:49               ` Wu Fengguang
2010-08-01  8:32               ` KOSAKI Motohiro
2010-08-01  8:32                 ` KOSAKI Motohiro
2010-08-01  8:35                 ` Wu Fengguang
2010-08-01  8:35                   ` Wu Fengguang
2010-08-01  8:40                   ` KOSAKI Motohiro
2010-08-01  8:40                     ` KOSAKI Motohiro
2010-08-01  5:17         ` Wu Fengguang
2010-08-01  5:17           ` Wu Fengguang
2010-07-28 16:29     ` Minchan Kim
2010-07-28 16:29       ` Minchan Kim
2010-07-28 11:40 ` Why PAGEOUT_IO_SYNC stalls for a long time KOSAKI Motohiro
2010-07-28 11:40   ` KOSAKI Motohiro
2010-07-28 13:10   ` Mel Gorman
2010-07-28 13:10     ` Mel Gorman
2010-07-29 10:34     ` KOSAKI Motohiro
2010-07-29 10:34       ` KOSAKI Motohiro
2010-07-29 14:24       ` Mel Gorman
2010-07-29 14:24         ` Mel Gorman
2010-07-30  4:54         ` KOSAKI Motohiro
2010-07-30  4:54           ` KOSAKI Motohiro
2010-07-30 10:30           ` Mel Gorman [this message]
2010-07-30 10:30             ` Mel Gorman
2010-08-01  8:47             ` KOSAKI Motohiro
2010-08-01  8:47               ` KOSAKI Motohiro
2010-08-04 11:10               ` Mel Gorman
2010-08-04 11:10                 ` Mel Gorman
2010-08-05  6:20                 ` KOSAKI Motohiro
2010-08-05  6:20                   ` KOSAKI Motohiro
2010-08-05  8:09                   ` Andreas Mohr
2010-08-05  8:09                     ` Andreas Mohr
2010-07-28 17:30   ` Andrew Morton
2010-07-28 17:30     ` Andrew Morton
2010-07-29  1:01     ` KOSAKI Motohiro
2010-07-29  1:01       ` KOSAKI Motohiro
2010-07-30 13:17 ` [PATCH] vmscan: raise the bar to PAGEOUT_IO_SYNC stalls Andrea Arcangeli
2010-07-30 13:17   ` Andrea Arcangeli
2010-07-30 13:31   ` Mel Gorman
2010-07-30 13:31     ` Mel Gorman
2010-07-31 16:13 ` Wu Fengguang
2010-07-31 16:13   ` Wu Fengguang
2010-07-31 17:33   ` Christoph Hellwig
2010-07-31 17:33     ` Christoph Hellwig
2010-07-31 17:55     ` Pekka Enberg
2010-07-31 17:55       ` Pekka Enberg
2010-07-31 17:59       ` Christoph Hellwig
2010-07-31 17:59         ` Christoph Hellwig
2010-07-31 18:09         ` Pekka Enberg
2010-07-31 18:09           ` Pekka Enberg

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=20100730103018.GE3571@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@lisas.de \
    --cc=bgamari.foss@gmail.com \
    --cc=chris.mason@oracle.com \
    --cc=david@fromorbit.com \
    --cc=davidsen@tmr.com \
    --cc=fengguang.wu@intel.com \
    --cc=hannes@cmpxchg.org \
    --cc=hch@infradead.org \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=minchan.kim@gmail.com \
    --cc=npiggin@suse.de \
    --cc=riel@redhat.com \
    --cc=stable@kernel.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.