All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, Dave Chinner <david@fromorbit.com>,
	Chris Mason <chris.mason@oracle.com>,
	Nick Piggin <npiggin@suse.de>, Rik van Riel <riel@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	Wu Fengguang <fengguang.wu@intel.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>
Subject: Re: [PATCH 4/8] vmscan: Do not writeback filesystem pages in direct reclaim
Date: Thu, 22 Jul 2010 10:19:30 +0100	[thread overview]
Message-ID: <20100722091930.GD13117@csn.ul.ie> (raw)
In-Reply-To: <20100722085734.ff252542.kamezawa.hiroyu@jp.fujitsu.com>

On Thu, Jul 22, 2010 at 08:57:34AM +0900, KAMEZAWA Hiroyuki wrote:
> On Wed, 21 Jul 2010 15:27:10 +0100
> Mel Gorman <mel@csn.ul.ie> wrote:
> 
> > On Wed, Jul 21, 2010 at 09:01:11PM +0900, KAMEZAWA Hiroyuki wrote:
>  
> > > But, hmm, memcg will have to select to enter this rounine based on
> > > the result of 1st memory reclaim.
> > > 
> > 
> > It has the option of igoring pages being dirtied but I worry that the
> > container could be filled with dirty pages waiting for flushers to do
> > something.
> 
> I'll prepare dirty_ratio for memcg. It's not easy but requested by I/O cgroup
> guys, too...
> 

I can see why it might be difficult. Dirty pages are not being counted
on a per-container basis. It would require additional infrastructure to
count it or a lot of scanning.

> 
> > 
> > > >  
> > > > -		/*
> > > > -		 * The attempt at page out may have made some
> > > > -		 * of the pages active, mark them inactive again.
> > > > -		 */
> > > > -		nr_active = clear_active_flags(&page_list, NULL);
> > > > -		count_vm_events(PGDEACTIVATE, nr_active);
> > > > +		while (nr_reclaimed < nr_taken && nr_dirty && dirty_retry--) {
> > > > +			wakeup_flusher_threads(laptop_mode ? 0 : nr_dirty);
> > > > +			congestion_wait(BLK_RW_ASYNC, HZ/10);
> > > >  
> > >
> > > Congestion wait is required ?? Where the congestion happens ?
> > > I'm sorry you already have some other trick in other patch.
> > > 
> > 
> > It's to wait for the IO to occur.
> > 
>
> 1 tick penalty seems too large. I hope we can have some waitqueue in future.
> 

congestion_wait() if congestion occurs goes onto a waitqueue that is
woken if congestion clears. I didn't measure it this time around but I
doubt it waits for HZ/10 much of the time.

> > > > -		nr_reclaimed += shrink_page_list(&page_list, sc, PAGEOUT_IO_SYNC);
> > > > +			/*
> > > > +			 * The attempt at page out may have made some
> > > > +			 * of the pages active, mark them inactive again.
> > > > +			 */
> > > > +			nr_active = clear_active_flags(&page_list, NULL);
> > > > +			count_vm_events(PGDEACTIVATE, nr_active);
> > > > +	
> > > > +			nr_reclaimed += shrink_page_list(&page_list, sc,
> > > > +						PAGEOUT_IO_SYNC, &nr_dirty);
> > > > +		}
> > > 
> > > Just a question. This PAGEOUT_IO_SYNC has some meanings ?
> > > 
> > 
> > Yes, in pageout it will wait on pages currently being written back to be
> > cleaned before trying to reclaim them.
> > 
> Hmm. IIUC, this routine is called only when !current_is_kswapd() and
> pageout is done only whne current_is_kswapd(). So, this seems ....
> Wrong ?
> 

Both direct reclaim and kswapd can reach shrink_inactive_list

Direct reclaim
do_try_to_free_pages
  -> shrink_zones
    -> shrink_zone
      -> shrink_list
        -> shrink_inactive list <--- the routine in question

Kswapd
balance_pgdat
  -> shrink_zone
    -> shrink_list
      -> shrink_inactive_list

pageout() is still called by direct reclaim if the page is anon so it
will synchronously wait on those if PAGEOUT_IO_SYNC is set. For either
anon or file pages, if they are being currently written back, they will
be waited on in shrink_page_list() if PAGEOUT_IO_SYNC.

So it still has meaning. Did I miss something?

-- 
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: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>,
	linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org,
	linux-mm@kvack.org, Dave Chinner <david@fromorbit.com>,
	Chris Mason <chris.mason@oracle.com>,
	Nick Piggin <npiggin@suse.de>, Rik van Riel <riel@redhat.com>,
	Christoph Hellwig <hch@infradead.org>,
	Wu Fengguang <fengguang.wu@intel.com>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Andrea Arcangeli <aarcange@redhat.com>
Subject: Re: [PATCH 4/8] vmscan: Do not writeback filesystem pages in direct reclaim
Date: Thu, 22 Jul 2010 10:19:30 +0100	[thread overview]
Message-ID: <20100722091930.GD13117@csn.ul.ie> (raw)
In-Reply-To: <20100722085734.ff252542.kamezawa.hiroyu@jp.fujitsu.com>

On Thu, Jul 22, 2010 at 08:57:34AM +0900, KAMEZAWA Hiroyuki wrote:
> On Wed, 21 Jul 2010 15:27:10 +0100
> Mel Gorman <mel@csn.ul.ie> wrote:
> 
> > On Wed, Jul 21, 2010 at 09:01:11PM +0900, KAMEZAWA Hiroyuki wrote:
>  
> > > But, hmm, memcg will have to select to enter this rounine based on
> > > the result of 1st memory reclaim.
> > > 
> > 
> > It has the option of igoring pages being dirtied but I worry that the
> > container could be filled with dirty pages waiting for flushers to do
> > something.
> 
> I'll prepare dirty_ratio for memcg. It's not easy but requested by I/O cgroup
> guys, too...
> 

I can see why it might be difficult. Dirty pages are not being counted
on a per-container basis. It would require additional infrastructure to
count it or a lot of scanning.

> 
> > 
> > > >  
> > > > -		/*
> > > > -		 * The attempt at page out may have made some
> > > > -		 * of the pages active, mark them inactive again.
> > > > -		 */
> > > > -		nr_active = clear_active_flags(&page_list, NULL);
> > > > -		count_vm_events(PGDEACTIVATE, nr_active);
> > > > +		while (nr_reclaimed < nr_taken && nr_dirty && dirty_retry--) {
> > > > +			wakeup_flusher_threads(laptop_mode ? 0 : nr_dirty);
> > > > +			congestion_wait(BLK_RW_ASYNC, HZ/10);
> > > >  
> > >
> > > Congestion wait is required ?? Where the congestion happens ?
> > > I'm sorry you already have some other trick in other patch.
> > > 
> > 
> > It's to wait for the IO to occur.
> > 
>
> 1 tick penalty seems too large. I hope we can have some waitqueue in future.
> 

congestion_wait() if congestion occurs goes onto a waitqueue that is
woken if congestion clears. I didn't measure it this time around but I
doubt it waits for HZ/10 much of the time.

> > > > -		nr_reclaimed += shrink_page_list(&page_list, sc, PAGEOUT_IO_SYNC);
> > > > +			/*
> > > > +			 * The attempt at page out may have made some
> > > > +			 * of the pages active, mark them inactive again.
> > > > +			 */
> > > > +			nr_active = clear_active_flags(&page_list, NULL);
> > > > +			count_vm_events(PGDEACTIVATE, nr_active);
> > > > +	
> > > > +			nr_reclaimed += shrink_page_list(&page_list, sc,
> > > > +						PAGEOUT_IO_SYNC, &nr_dirty);
> > > > +		}
> > > 
> > > Just a question. This PAGEOUT_IO_SYNC has some meanings ?
> > > 
> > 
> > Yes, in pageout it will wait on pages currently being written back to be
> > cleaned before trying to reclaim them.
> > 
> Hmm. IIUC, this routine is called only when !current_is_kswapd() and
> pageout is done only whne current_is_kswapd(). So, this seems ....
> Wrong ?
> 

Both direct reclaim and kswapd can reach shrink_inactive_list

Direct reclaim
do_try_to_free_pages
  -> shrink_zones
    -> shrink_zone
      -> shrink_list
        -> shrink_inactive list <--- the routine in question

Kswapd
balance_pgdat
  -> shrink_zone
    -> shrink_list
      -> shrink_inactive_list

pageout() is still called by direct reclaim if the page is anon so it
will synchronously wait on those if PAGEOUT_IO_SYNC is set. For either
anon or file pages, if they are being currently written back, they will
be waited on in shrink_page_list() if PAGEOUT_IO_SYNC.

So it still has meaning. Did I miss something?

-- 
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-22  9:19 UTC|newest]

Thread overview: 177+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-19 13:11 [PATCH 0/8] Reduce writeback from page reclaim context V4 Mel Gorman
2010-07-19 13:11 ` Mel Gorman
2010-07-19 13:11 ` [PATCH 1/8] vmscan: tracing: Roll up of patches currently in mmotm Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 13:11 ` [PATCH 2/8] vmscan: tracing: Update trace event to track if page reclaim IO is for anon or file pages Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 13:24   ` Rik van Riel
2010-07-19 13:24     ` Rik van Riel
2010-07-19 14:15   ` Christoph Hellwig
2010-07-19 14:15     ` Christoph Hellwig
2010-07-19 14:24     ` Mel Gorman
2010-07-19 14:24       ` Mel Gorman
2010-07-19 14:26       ` Christoph Hellwig
2010-07-19 14:26         ` Christoph Hellwig
2010-07-19 13:11 ` [PATCH 3/8] vmscan: tracing: Update post-processing script to distinguish between anon and file IO from page reclaim Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 13:32   ` Rik van Riel
2010-07-19 13:32     ` Rik van Riel
2010-07-19 13:11 ` [PATCH 4/8] vmscan: Do not writeback filesystem pages in direct reclaim Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 14:19   ` Christoph Hellwig
2010-07-19 14:19     ` Christoph Hellwig
2010-07-19 14:26     ` Mel Gorman
2010-07-19 14:26       ` Mel Gorman
2010-07-19 18:25   ` Rik van Riel
2010-07-19 18:25     ` Rik van Riel
2010-07-19 22:14   ` Johannes Weiner
2010-07-19 22:14     ` Johannes Weiner
2010-07-20 13:45     ` Mel Gorman
2010-07-20 13:45       ` Mel Gorman
2010-07-20 22:02       ` Johannes Weiner
2010-07-20 22:02         ` Johannes Weiner
2010-07-21 11:36         ` Johannes Weiner
2010-07-21 11:36           ` Johannes Weiner
2010-07-21 11:52         ` Mel Gorman
2010-07-21 11:52           ` Mel Gorman
2010-07-21 12:01           ` KAMEZAWA Hiroyuki
2010-07-21 12:01             ` KAMEZAWA Hiroyuki
2010-07-21 14:27             ` Mel Gorman
2010-07-21 14:27               ` Mel Gorman
2010-07-21 23:57               ` KAMEZAWA Hiroyuki
2010-07-21 23:57                 ` KAMEZAWA Hiroyuki
2010-07-22  9:19                 ` Mel Gorman [this message]
2010-07-22  9:19                   ` Mel Gorman
2010-07-22  9:22                   ` KAMEZAWA Hiroyuki
2010-07-22  9:22                     ` KAMEZAWA Hiroyuki
2010-07-21 13:04           ` Johannes Weiner
2010-07-21 13:04             ` Johannes Weiner
2010-07-21 13:38             ` Mel Gorman
2010-07-21 13:38               ` Mel Gorman
2010-07-21 14:28               ` Johannes Weiner
2010-07-21 14:28                 ` Johannes Weiner
2010-07-21 14:31                 ` Mel Gorman
2010-07-21 14:31                   ` Mel Gorman
2010-07-21 14:39                   ` Johannes Weiner
2010-07-21 14:39                     ` Johannes Weiner
2010-07-21 15:06                     ` Mel Gorman
2010-07-21 15:06                       ` Mel Gorman
2010-07-26  8:29               ` Wu Fengguang
2010-07-26  8:29                 ` Wu Fengguang
2010-07-26  9:12                 ` Mel Gorman
2010-07-26  9:12                   ` Mel Gorman
2010-07-26 11:19                   ` Wu Fengguang
2010-07-26 11:19                     ` Wu Fengguang
2010-07-26 12:53                     ` Mel Gorman
2010-07-26 12:53                       ` Mel Gorman
2010-07-26 13:03                       ` Wu Fengguang
2010-07-26 13:03                         ` Wu Fengguang
2010-07-19 13:11 ` [PATCH 5/8] fs,btrfs: Allow kswapd to writeback pages Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 18:27   ` Rik van Riel
2010-07-19 18:27     ` Rik van Riel
2010-07-19 13:11 ` [PATCH 6/8] fs,xfs: " Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 14:20   ` Christoph Hellwig
2010-07-19 14:20     ` Christoph Hellwig
2010-07-19 14:43     ` Mel Gorman
2010-07-19 14:43       ` Mel Gorman
2010-07-19 13:11 ` [PATCH 7/8] writeback: sync old inodes first in background writeback Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 14:21   ` Christoph Hellwig
2010-07-19 14:21     ` Christoph Hellwig
2010-07-19 14:40     ` Mel Gorman
2010-07-19 14:40       ` Mel Gorman
2010-07-19 14:48       ` Christoph Hellwig
2010-07-19 14:48         ` Christoph Hellwig
2010-07-22  8:52       ` Wu Fengguang
2010-07-22  8:52         ` Wu Fengguang
2010-07-22  9:02         ` Wu Fengguang
2010-07-22  9:02           ` Wu Fengguang
2010-07-22  9:21         ` Wu Fengguang
2010-07-22  9:21           ` Wu Fengguang
2010-07-22 10:48           ` Mel Gorman
2010-07-22 10:48             ` Mel Gorman
2010-07-23  9:45             ` Wu Fengguang
2010-07-23  9:45               ` Wu Fengguang
2010-07-23 10:57               ` Mel Gorman
2010-07-23 10:57                 ` Mel Gorman
2010-07-23 11:49                 ` Wu Fengguang
2010-07-23 11:49                   ` Wu Fengguang
2010-07-23 12:20                   ` Wu Fengguang
2010-07-23 12:20                     ` Wu Fengguang
2010-07-25 10:43                 ` KOSAKI Motohiro
2010-07-25 10:43                   ` KOSAKI Motohiro
2010-07-25 12:03                   ` Minchan Kim
2010-07-25 12:03                     ` Minchan Kim
2010-07-26  3:27                     ` Wu Fengguang
2010-07-26  3:27                       ` Wu Fengguang
2010-07-26  4:11                       ` Minchan Kim
2010-07-26  4:11                         ` Minchan Kim
2010-07-26  4:37                         ` Wu Fengguang
2010-07-26  4:37                           ` Wu Fengguang
2010-07-26  4:37                           ` Wu Fengguang
2010-07-26 16:30                           ` Minchan Kim
2010-07-26 16:30                             ` Minchan Kim
2010-07-26 16:30                             ` Minchan Kim
2010-07-26 22:48                             ` Wu Fengguang
2010-07-26 22:48                               ` Wu Fengguang
2010-07-26 22:48                               ` Wu Fengguang
2010-07-26  3:08                   ` Wu Fengguang
2010-07-26  3:08                     ` Wu Fengguang
2010-07-26  3:11                     ` Rik van Riel
2010-07-26  3:11                       ` Rik van Riel
2010-07-26  3:17                       ` Wu Fengguang
2010-07-26  3:17                         ` Wu Fengguang
2010-07-22 15:34           ` Minchan Kim
2010-07-22 15:34             ` Minchan Kim
2010-07-23 11:59             ` Wu Fengguang
2010-07-23 11:59               ` Wu Fengguang
2010-07-22  9:42         ` Mel Gorman
2010-07-22  9:42           ` Mel Gorman
2010-07-23  8:33           ` Wu Fengguang
2010-07-23  8:33             ` Wu Fengguang
2010-07-22  1:13     ` Wu Fengguang
2010-07-22  1:13       ` Wu Fengguang
2010-07-19 18:43   ` Rik van Riel
2010-07-19 18:43     ` Rik van Riel
2010-07-19 13:11 ` [PATCH 8/8] vmscan: Kick flusher threads to clean pages when reclaim is encountering dirty pages Mel Gorman
2010-07-19 13:11   ` Mel Gorman
2010-07-19 14:23   ` Christoph Hellwig
2010-07-19 14:23     ` Christoph Hellwig
2010-07-19 14:37     ` Mel Gorman
2010-07-19 14:37       ` Mel Gorman
2010-07-19 22:48       ` Johannes Weiner
2010-07-19 22:48         ` Johannes Weiner
2010-07-20 14:10         ` Mel Gorman
2010-07-20 14:10           ` Mel Gorman
2010-07-20 22:05           ` Johannes Weiner
2010-07-20 22:05             ` Johannes Weiner
2010-07-19 18:59   ` Rik van Riel
2010-07-19 18:59     ` Rik van Riel
2010-07-19 22:26   ` Johannes Weiner
2010-07-19 22:26     ` Johannes Weiner
2010-07-26  7:28   ` Wu Fengguang
2010-07-26  7:28     ` Wu Fengguang
2010-07-26  9:26     ` Mel Gorman
2010-07-26  9:26       ` Mel Gorman
2010-07-26 11:27       ` Wu Fengguang
2010-07-26 11:27         ` Wu Fengguang
2010-07-26 12:57         ` Mel Gorman
2010-07-26 12:57           ` Mel Gorman
2010-07-26 13:10           ` Wu Fengguang
2010-07-26 13:10             ` Wu Fengguang
2010-07-27 13:35             ` Mel Gorman
2010-07-27 13:35               ` Mel Gorman
2010-07-27 14:24               ` Wu Fengguang
2010-07-27 14:24                 ` Wu Fengguang
2010-07-27 14:34                 ` Wu Fengguang
2010-07-27 14:34                   ` Wu Fengguang
2010-07-27 14:40                   ` Mel Gorman
2010-07-27 14:40                     ` Mel Gorman
2010-07-27 14:55                     ` Wu Fengguang
2010-07-27 14:55                       ` Wu Fengguang
2010-07-27 14:38                 ` Mel Gorman
2010-07-27 14:38                   ` Mel Gorman
2010-07-27 15:21                   ` Wu Fengguang
2010-07-27 15:21                     ` Wu Fengguang

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=20100722091930.GD13117@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=chris.mason@oracle.com \
    --cc=david@fromorbit.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=npiggin@suse.de \
    --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.