Re: [PATCH 1/4] vmscan: delegate pageout io to flusher thread if current is kswapd

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Suleiman Souhlal
Date: Thursday, April 15, 2010 - 1:05 am

On Apr 14, 2010, at 9:11 PM, KOSAKI Motohiro wrote:


What's your opinion on trying to cluster the writes done by pageout,  
instead of not doing any paging out in kswapd?
Something along these lines:

     Cluster writes to disk due to memory pressure.

     Write out logically adjacent pages to the one we're paging out
     so that we may get better IOs in these situations:
     These pages are likely to be contiguous on disk to the one we're
     writing out, so they should get merged into a single disk IO.

     Signed-off-by: Suleiman Souhlal <suleiman@google.com>

diff --git a/mm/vmscan.c b/mm/vmscan.c
index c26986c..4e5a613 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -48,6 +48,8 @@

  #include "internal.h"

+#define PAGEOUT_CLUSTER_PAGES	16
+
  struct scan_control {
  	/* Incremented by the number of inactive pages that were scanned */
  	unsigned long nr_scanned;
@@ -350,6 +352,8 @@ typedef enum {
  static pageout_t pageout(struct page *page, struct address_space  
*mapping,
  						enum pageout_io sync_writeback)
  {
+	int i;
+
  	/*
  	 * If the page is dirty, only perform writeback if that write
  	 * will be non-blocking.  To prevent this allocation from being
@@ -408,6 +412,37 @@ static pageout_t pageout(struct page *page,  
struct address_space *mapping,
  		}

  		/*
+		 * Try to write out logically adjacent dirty pages too, if
+		 * possible, to get better IOs, as the IO scheduler should
+		 * merge them with the original one, if the file is not too
+		 * fragmented.
+		 */
+		for (i = 1; i < PAGEOUT_CLUSTER_PAGES; i++) {
+			struct page *p2;
+			int err;
+
+			p2 = find_get_page(mapping, page->index + i);
+			if (p2) {
+				if (trylock_page(p2) == 0) {
+					page_cache_release(p2);
+					break;
+				}
+				if (page_mapped(p2))
+					try_to_unmap(p2, 0);
+				if (PageDirty(p2)) {
+					err = write_one_page(p2, 0);
+					page_cache_release(p2);
+					if (err)
+						break;
+				} else {
+					unlock_page(p2);
+					page_cache_release(p2);
+					break;
+				}
+			}
+		}
+
+		/*
  		 * Wait on writeback if requested to. This happens when
  		 * direct reclaiming a large contiguous area and the
  		 * first attempt to free a range of pages fails.

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Mon Apr 12, 5:17 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 1:31 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 3:29 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 4:19 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 4:39 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 7:36 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Mel Gorman, (Tue Apr 13, 12:34 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Chris Mason, (Tue Apr 13, 1:20 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Tue Apr 13, 5:24 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 6:40 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 8:12 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 9:44 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KAMEZAWA Hiroyuki, (Tue Apr 13, 9:59 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Tue Apr 13, 10:41 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 10:54 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Tue Apr 13, 11:13 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 11:52 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 11:52 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 11:52 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Tue Apr 13, 11:52 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 12:06 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Wed Apr 14, 12:19 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 12:28 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 12:36 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Wed Apr 14, 12:54 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, KAMEZAWA Hiroyuki, (Wed Apr 14, 2:42 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Wed Apr 14, 3:01 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Minchan Kim, (Wed Apr 14, 3:16 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Chris Mason, (Wed Apr 14, 4:20 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Chris Mason, (Wed Apr 14, 7:07 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 6:34 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 6:56 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Johannes Weiner, (Wed Apr 14, 7:37 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Wed Apr 14, 7:43 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Wed Apr 14, 9:09 pm)
[PATCH 2/4] vmscan: kill prev_priority completely, KOSAKI Motohiro, (Wed Apr 14, 9:13 pm)
[PATCH 3/4] vmscan: move priority variable into scan_control, KOSAKI Motohiro, (Wed Apr 14, 9:14 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Wed Apr 14, 9:35 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 11:20 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 11:32 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Wed Apr 14, 11:58 pm)
Re: [PATCH 1/4] vmscan: delegate pageout io to flusher thr ..., Suleiman Souhlal, (Thu Apr 15, 1:05 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Thu Apr 15, 1:54 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, KOSAKI Motohiro, (Thu Apr 15, 3:21 am)
[PATCH 1/4] vmscan: simplify shrink_inactive_list(), KOSAKI Motohiro, (Thu Apr 15, 3:23 am)
[PATCH 2/4] [cleanup] mm: introduce free_pages_prepare, KOSAKI Motohiro, (Thu Apr 15, 3:24 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Chris Mason, (Thu Apr 15, 6:42 am)
Re: [PATCH 3/4] mm: introduce free_pages_bulk, Mel Gorman, (Thu Apr 15, 6:46 am)
Re: [PATCH 1/4] vmscan: delegate pageout io to flusher thr ..., Suleiman Souhlal, (Thu Apr 15, 10:24 am)
Re: [PATCH 1/4] vmscan: delegate pageout io to flusher thr ..., Suleiman Souhlal, (Thu Apr 15, 10:27 am)
Re: [PATCH 1/4] vmscan: simplify shrink_inactive_list(), Valdis.Kletnieks, (Thu Apr 15, 11:22 am)
Re: [PATCH 1/4] vmscan: simplify shrink_inactive_list(), Dave Chinner, (Thu Apr 15, 4:40 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KAMEZAWA Hiroyuki, (Thu Apr 15, 6:13 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Thu Apr 15, 9:14 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, KAMEZAWA Hiroyuki, (Thu Apr 15, 9:18 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Johannes Weiner, (Fri Apr 16, 4:56 pm)
Re: [PATCH 1/4] vmscan: simplify shrink_inactive_list(), Dave Chinner, (Fri Apr 16, 7:37 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Andrew Morton, (Sat Apr 17, 5:32 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Andrew Morton, (Sun Apr 18, 9:31 am)
Re: [PATCH] mm: disallow direct reclaim page writeback, Christoph Hellwig, (Sun Apr 18, 12:05 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Sorin Faibish, (Sun Apr 18, 12:10 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Sorin Faibish, (Sun Apr 18, 12:11 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Christoph Hellwig, (Sun Apr 18, 12:35 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Sorin Faibish, (Sun Apr 18, 4:34 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Sun Apr 18, 5:35 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Arjan van de Ven, (Sun Apr 18, 5:49 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Sun Apr 18, 6:08 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Arjan van de Ven, (Sun Apr 18, 9:32 pm)
Re: [PATCH] mm: disallow direct reclaim page writeback, Dave Chinner, (Thu Apr 22, 6:06 pm)