From: Mel Gorman <mel@csn.ul.ie> To: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Cc: Linux Kernel List <linux-kernel@vger.kernel.org>, Rik van Riel <riel@redhat.com>, Johannes Weiner <hannes@cmpxchg.org>, Minchan Kim <minchan.kim@gmail.com>, Wu Fengguang <fengguang.wu@intel.com>, Andrea Arcangeli <aarcange@redhat.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Dave Chinner <david@fromorbit.com>, Chris Mason <chris.mason@oracle.com>, Christoph Hellwig <hch@lst.de>, Andrew Morton <akpm@linux-foundation.org>, Mel Gorman <mel@csn.ul.ie> Subject: [PATCH 08/10] vmscan: isolated_lru_pages() stop neighbour search if neighbour cannot be isolated Date: Mon, 6 Sep 2010 11:47:31 +0100 [thread overview] Message-ID: <1283770053-18833-9-git-send-email-mel@csn.ul.ie> (raw) In-Reply-To: <1283770053-18833-1-git-send-email-mel@csn.ul.ie> From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> isolate_lru_pages() does not just isolate LRU tail pages, but also isolate neighbour pages of the eviction page. The neighbour search does not stop even if neighbours cannot be isolated which is excessive as the lumpy reclaim will no longer result in a successful higher order allocation. This patch stops the PFN neighbour pages if an isolation fails and moves on to the next block. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Mel Gorman <mel@csn.ul.ie> --- mm/vmscan.c | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 64f9ca5..ff52b46 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1047,14 +1047,18 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, continue; /* Avoid holes within the zone. */ - if (unlikely(!pfn_valid_within(pfn))) + if (unlikely(!pfn_valid_within(pfn))) { + nr_lumpy_failed++; break; + } cursor_page = pfn_to_page(pfn); /* Check that we have not crossed a zone boundary. */ - if (unlikely(page_zone_id(cursor_page) != zone_id)) - continue; + if (unlikely(page_zone_id(cursor_page) != zone_id)) { + nr_lumpy_failed++; + break; + } /* * If we don't have enough swap space, reclaiming of @@ -1062,8 +1066,10 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, * pointless. */ if (nr_swap_pages <= 0 && PageAnon(cursor_page) && - !PageSwapCache(cursor_page)) - continue; + !PageSwapCache(cursor_page)) { + nr_lumpy_failed++; + break; + } if (__isolate_lru_page(cursor_page, mode, file) == 0) { list_move(&cursor_page->lru, dst); @@ -1074,9 +1080,11 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, nr_lumpy_dirty++; scan++; } else { - if (mode == ISOLATE_BOTH && - page_count(cursor_page)) - nr_lumpy_failed++; + /* the page is freed already. */ + if (!page_count(cursor_page)) + continue; + nr_lumpy_failed++; + break; } } } -- 1.7.1
WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie> To: linux-mm@kvack.org, linux-fsdevel@vger.kernel.org Cc: Linux Kernel List <linux-kernel@vger.kernel.org>, Rik van Riel <riel@redhat.com>, Johannes Weiner <hannes@cmpxchg.org>, Minchan Kim <minchan.kim@gmail.com>, Wu Fengguang <fengguang.wu@intel.com>, Andrea Arcangeli <aarcange@redhat.com>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Dave Chinner <david@fromorbit.com>, Chris Mason <chris.mason@oracle.com>, Christoph Hellwig <hch@lst.de>, Andrew Morton <akpm@linux-foundation.org>, Mel Gorman <mel@csn.ul.ie> Subject: [PATCH 08/10] vmscan: isolated_lru_pages() stop neighbour search if neighbour cannot be isolated Date: Mon, 6 Sep 2010 11:47:31 +0100 [thread overview] Message-ID: <1283770053-18833-9-git-send-email-mel@csn.ul.ie> (raw) In-Reply-To: <1283770053-18833-1-git-send-email-mel@csn.ul.ie> From: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> isolate_lru_pages() does not just isolate LRU tail pages, but also isolate neighbour pages of the eviction page. The neighbour search does not stop even if neighbours cannot be isolated which is excessive as the lumpy reclaim will no longer result in a successful higher order allocation. This patch stops the PFN neighbour pages if an isolation fails and moves on to the next block. Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: Mel Gorman <mel@csn.ul.ie> --- mm/vmscan.c | 24 ++++++++++++++++-------- 1 files changed, 16 insertions(+), 8 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 64f9ca5..ff52b46 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -1047,14 +1047,18 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, continue; /* Avoid holes within the zone. */ - if (unlikely(!pfn_valid_within(pfn))) + if (unlikely(!pfn_valid_within(pfn))) { + nr_lumpy_failed++; break; + } cursor_page = pfn_to_page(pfn); /* Check that we have not crossed a zone boundary. */ - if (unlikely(page_zone_id(cursor_page) != zone_id)) - continue; + if (unlikely(page_zone_id(cursor_page) != zone_id)) { + nr_lumpy_failed++; + break; + } /* * If we don't have enough swap space, reclaiming of @@ -1062,8 +1066,10 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, * pointless. */ if (nr_swap_pages <= 0 && PageAnon(cursor_page) && - !PageSwapCache(cursor_page)) - continue; + !PageSwapCache(cursor_page)) { + nr_lumpy_failed++; + break; + } if (__isolate_lru_page(cursor_page, mode, file) == 0) { list_move(&cursor_page->lru, dst); @@ -1074,9 +1080,11 @@ static unsigned long isolate_lru_pages(unsigned long nr_to_scan, nr_lumpy_dirty++; scan++; } else { - if (mode == ISOLATE_BOTH && - page_count(cursor_page)) - nr_lumpy_failed++; + /* the page is freed already. */ + if (!page_count(cursor_page)) + continue; + nr_lumpy_failed++; + break; } } } -- 1.7.1 -- 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>
next prev parent reply other threads:[~2010-09-06 10:48 UTC|newest] Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top 2010-09-06 10:47 [PATCH 0/9] Reduce latencies and improve overall reclaim efficiency v1 Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-06 10:47 ` [PATCH 01/10] tracing, vmscan: Add trace events for LRU list shrinking Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-06 10:47 ` [PATCH 02/10] writeback: Account for time spent congestion_waited Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-06 10:47 ` [PATCH 03/10] writeback: Do not congestion sleep if there are no congested BDIs or significant writeback Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-07 15:25 ` Minchan Kim 2010-09-07 15:25 ` Minchan Kim 2010-09-08 11:04 ` Mel Gorman 2010-09-08 11:04 ` Mel Gorman 2010-09-08 14:52 ` Minchan Kim 2010-09-08 14:52 ` Minchan Kim 2010-09-09 8:54 ` Mel Gorman 2010-09-09 8:54 ` Mel Gorman 2010-09-12 15:37 ` Minchan Kim 2010-09-12 15:37 ` Minchan Kim 2010-09-13 8:55 ` Mel Gorman 2010-09-13 8:55 ` Mel Gorman 2010-09-13 9:48 ` Minchan Kim 2010-09-13 9:48 ` Minchan Kim 2010-09-13 10:07 ` Mel Gorman 2010-09-13 10:07 ` Mel Gorman 2010-09-13 10:20 ` Minchan Kim 2010-09-13 10:20 ` Minchan Kim 2010-09-13 10:30 ` Mel Gorman 2010-09-13 10:30 ` Mel Gorman 2010-09-08 21:23 ` Andrew Morton 2010-09-08 21:23 ` Andrew Morton 2010-09-09 10:43 ` Mel Gorman 2010-09-09 10:43 ` Mel Gorman 2010-09-09 3:02 ` KAMEZAWA Hiroyuki 2010-09-09 3:02 ` KAMEZAWA Hiroyuki 2010-09-09 8:58 ` Mel Gorman 2010-09-09 8:58 ` Mel Gorman 2010-09-06 10:47 ` [PATCH 04/10] vmscan: Synchronous lumpy reclaim should not call congestion_wait() Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-07 15:26 ` Minchan Kim 2010-09-07 15:26 ` Minchan Kim 2010-09-08 6:15 ` Johannes Weiner 2010-09-08 6:15 ` Johannes Weiner 2010-09-08 11:25 ` Wu Fengguang 2010-09-08 11:25 ` Wu Fengguang 2010-09-09 3:03 ` KAMEZAWA Hiroyuki 2010-09-09 3:03 ` KAMEZAWA Hiroyuki 2010-09-06 10:47 ` [PATCH 05/10] vmscan: Synchrounous lumpy reclaim use lock_page() instead trylock_page() Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-07 15:28 ` Minchan Kim 2010-09-07 15:28 ` Minchan Kim 2010-09-08 6:16 ` Johannes Weiner 2010-09-08 6:16 ` Johannes Weiner 2010-09-08 11:28 ` Wu Fengguang 2010-09-08 11:28 ` Wu Fengguang 2010-09-09 3:04 ` KAMEZAWA Hiroyuki 2010-09-09 3:04 ` KAMEZAWA Hiroyuki 2010-09-09 3:15 ` KAMEZAWA Hiroyuki 2010-09-09 3:15 ` KAMEZAWA Hiroyuki 2010-09-09 3:25 ` Wu Fengguang 2010-09-09 3:25 ` Wu Fengguang 2010-09-09 4:13 ` KOSAKI Motohiro 2010-09-09 4:13 ` KOSAKI Motohiro 2010-09-09 9:22 ` Mel Gorman 2010-09-09 9:22 ` Mel Gorman 2010-09-10 10:25 ` KOSAKI Motohiro 2010-09-10 10:25 ` KOSAKI Motohiro 2010-09-10 10:33 ` KOSAKI Motohiro 2010-09-10 10:33 ` KOSAKI Motohiro 2010-09-10 10:33 ` KOSAKI Motohiro 2010-09-13 9:14 ` Mel Gorman 2010-09-13 9:14 ` Mel Gorman 2010-09-14 10:14 ` KOSAKI Motohiro 2010-09-14 10:14 ` KOSAKI Motohiro 2010-09-06 10:47 ` [PATCH 06/10] vmscan: Narrow the scenarios lumpy reclaim uses synchrounous reclaim Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-09 3:14 ` KAMEZAWA Hiroyuki 2010-09-09 3:14 ` KAMEZAWA Hiroyuki 2010-09-06 10:47 ` [PATCH 07/10] vmscan: Remove dead code in shrink_inactive_list() Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-07 15:33 ` Minchan Kim 2010-09-07 15:33 ` Minchan Kim 2010-09-06 10:47 ` Mel Gorman [this message] 2010-09-06 10:47 ` [PATCH 08/10] vmscan: isolated_lru_pages() stop neighbour search if neighbour cannot be isolated Mel Gorman 2010-09-07 15:37 ` Minchan Kim 2010-09-07 15:37 ` Minchan Kim 2010-09-08 11:12 ` Mel Gorman 2010-09-08 11:12 ` Mel Gorman 2010-09-08 14:58 ` Minchan Kim 2010-09-08 14:58 ` Minchan Kim 2010-09-08 11:37 ` Wu Fengguang 2010-09-08 11:37 ` Wu Fengguang 2010-09-08 12:50 ` Mel Gorman 2010-09-08 12:50 ` Mel Gorman 2010-09-08 13:14 ` Wu Fengguang 2010-09-08 13:14 ` Wu Fengguang 2010-09-08 13:27 ` Mel Gorman 2010-09-08 13:27 ` Mel Gorman 2010-09-09 3:17 ` KAMEZAWA Hiroyuki 2010-09-09 3:17 ` KAMEZAWA Hiroyuki 2010-09-06 10:47 ` [PATCH 09/10] vmscan: Do not writeback filesystem pages in direct reclaim Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-13 13:31 ` Wu Fengguang 2010-09-13 13:31 ` Wu Fengguang 2010-09-13 13:55 ` Mel Gorman 2010-09-13 13:55 ` Mel Gorman 2010-09-13 14:33 ` Wu Fengguang 2010-09-13 14:33 ` Wu Fengguang 2010-10-28 21:50 ` Christoph Hellwig 2010-10-28 21:50 ` Christoph Hellwig 2010-10-29 10:26 ` Mel Gorman 2010-10-29 10:26 ` Mel Gorman 2010-09-06 10:47 ` [PATCH 10/10] vmscan: Kick flusher threads to clean pages when reclaim is encountering dirty pages Mel Gorman 2010-09-06 10:47 ` Mel Gorman 2010-09-09 3:22 ` KAMEZAWA Hiroyuki 2010-09-09 3:22 ` KAMEZAWA Hiroyuki 2010-09-09 9:32 ` Mel Gorman 2010-09-09 9:32 ` Mel Gorman 2010-09-13 0:53 ` KAMEZAWA Hiroyuki 2010-09-13 0:53 ` KAMEZAWA Hiroyuki 2010-09-13 13:48 ` Wu Fengguang 2010-09-13 13:48 ` Wu Fengguang 2010-09-13 14:10 ` Mel Gorman 2010-09-13 14:10 ` Mel Gorman 2010-09-13 14:41 ` Wu Fengguang 2010-09-13 14:41 ` Wu Fengguang 2010-09-06 10:49 ` [PATCH 0/9] Reduce latencies and improve overall reclaim efficiency v1 Mel Gorman 2010-09-06 10:49 ` Mel Gorman 2010-09-08 3:14 ` KOSAKI Motohiro 2010-09-08 3:14 ` KOSAKI Motohiro 2010-09-08 8:38 ` Mel Gorman 2010-09-08 8:38 ` Mel Gorman 2010-09-13 23:10 ` Minchan Kim 2010-09-13 23:10 ` Minchan Kim
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=1283770053-18833-9-git-send-email-mel@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@lst.de \ --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=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: linkBe 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.