From: Mel Gorman <mgorman@techsingularity.net> To: Andrew Morton <akpm@linux-foundation.org>, Linux-MM <linux-mm@kvack.org> Cc: Rik van Riel <riel@surriel.com>, Vlastimil Babka <vbabka@suse.cz>, Johannes Weiner <hannes@cmpxchg.org>, LKML <linux-kernel@vger.kernel.org>, Mel Gorman <mgorman@techsingularity.net> Subject: [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node Date: Thu, 9 Jun 2016 19:04:25 +0100 [thread overview] Message-ID: <1465495483-11855-10-git-send-email-mgorman@techsingularity.net> (raw) In-Reply-To: <1465495483-11855-1-git-send-email-mgorman@techsingularity.net> Direct reclaim iterates over all zones in the zonelist and shrinking them but this is in conflict with node-based reclaim. In the default case, only shrink once per node. Signed-off-by: Mel Gorman <mgorman@techsingularity.net> Acked-by: Johannes Weiner <hannes@cmpxchg.org> --- mm/vmscan.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 14b34eebedff..dd68e3154732 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2522,14 +2522,6 @@ static inline bool compaction_ready(struct zone *zone, int order, int classzone_ * try to reclaim pages from zones which will satisfy the caller's allocation * request. * - * We reclaim from a zone even if that zone is over high_wmark_pages(zone). - * Because: - * a) The caller may be trying to free *extra* pages to satisfy a higher-order - * allocation or - * b) The target zone may be at high_wmark_pages(zone) but the lower zones - * must go *over* high_wmark_pages(zone) to satisfy the `incremental min' - * zone defense algorithm. - * * If a zone is deemed to be full of pinned pages then just give it a light * scan then give up on it. */ @@ -2541,6 +2533,7 @@ static void shrink_zones(struct zonelist *zonelist, struct scan_control *sc, unsigned long nr_soft_reclaimed; unsigned long nr_soft_scanned; gfp_t orig_mask; + pg_data_t *last_pgdat = NULL; /* * If the number of buffer_heads in the machine exceeds the maximum @@ -2560,10 +2553,19 @@ static void shrink_zones(struct zonelist *zonelist, struct scan_control *sc, classzone_idx)) { sc->reclaim_idx--; classzone_idx--; - continue; } /* + * Shrink each node in the zonelist once. If the zonelist is + * ordered by zone (not the default) then a node may be + * shrunk multiple times but in that case the user prefers + * lower zones being preserved + */ + if (zone->zone_pgdat == last_pgdat) + continue; + last_pgdat = zone->zone_pgdat; + + /* * Take care memory controller reclaiming has small influence * to global LRU. */ -- 2.6.4
next prev parent reply other threads:[~2016-06-09 18:12 UTC|newest] Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-06-09 18:04 [PATCH 00/27] Move LRU page reclaim from zones to nodes v6 Mel Gorman 2016-06-09 18:04 ` [PATCH 01/27] mm, vmstat: Add infrastructure for per-node vmstats Mel Gorman 2016-06-10 13:31 ` Vlastimil Babka 2016-06-10 13:47 ` Mel Gorman 2016-06-13 17:26 ` Christoph Lameter 2016-06-14 14:25 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 02/27] mm, vmscan: Move lru_lock to the node Mel Gorman 2016-06-10 16:39 ` Vlastimil Babka 2016-06-10 17:48 ` Peter Zijlstra 2016-06-14 14:41 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 03/27] mm, vmscan: Move LRU lists to node Mel Gorman 2016-06-10 18:00 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 04/27] mm, vmscan: Begin reclaiming pages on a per-node basis Mel Gorman 2016-06-15 12:52 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 05/27] mm, vmscan: Have kswapd only scan based on the highest requested zone Mel Gorman 2016-06-15 13:13 ` Vlastimil Babka 2016-06-16 7:44 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 06/27] mm, vmscan: Make kswapd reclaim in terms of nodes Mel Gorman 2016-06-15 14:23 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 07/27] mm, vmscan: Remove balance gap Mel Gorman 2016-06-15 14:28 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 08/27] mm, vmscan: Simplify the logic deciding whether kswapd sleeps Mel Gorman 2016-06-15 15:18 ` Vlastimil Babka 2016-06-16 8:30 ` Mel Gorman 2016-06-16 9:16 ` Mel Gorman 2016-06-09 18:04 ` Mel Gorman [this message] 2016-06-16 8:59 ` [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node Vlastimil Babka 2016-06-09 18:04 ` [PATCH 10/27] mm, vmscan: Clear congestion, dirty and need for compaction on a per-node basis Mel Gorman 2016-06-16 9:29 ` Vlastimil Babka 2016-06-16 10:29 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 11/27] mm: vmscan: Do not reclaim from kswapd if there is any eligible zone Mel Gorman 2016-06-16 10:08 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 12/27] mm, vmscan: Make shrink_node decisions more node-centric Mel Gorman 2016-06-16 13:35 ` Vlastimil Babka 2016-06-16 14:47 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 13/27] mm, memcg: Move memcg limit enforcement from zones to nodes Mel Gorman 2016-06-16 15:06 ` Vlastimil Babka 2016-06-16 15:53 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 14/27] mm, workingset: Make working set detection node-aware Mel Gorman 2016-06-16 15:13 ` Vlastimil Babka 2016-06-16 15:56 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 15/27] mm, page_alloc: Consider dirtyable memory in terms of nodes Mel Gorman 2016-06-16 15:45 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 16/27] mm: Move page mapped accounting to the node Mel Gorman 2016-06-16 15:52 ` Vlastimil Babka 2016-06-16 16:04 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 17/27] mm: Rename NR_ANON_PAGES to NR_ANON_MAPPED Mel Gorman 2016-06-17 8:28 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 18/27] mm: Move most file-based accounting to the node Mel Gorman 2016-06-17 8:35 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 19/27] mm: Move vmscan writes and file write " Mel Gorman 2016-06-17 8:51 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 20/27] mm, vmscan: Update classzone_idx if buffer_heads_over_limit Mel Gorman 2016-06-17 8:53 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 21/27] mm, vmscan: Only wakeup kswapd once per node for the requested classzone Mel Gorman 2016-06-17 10:46 ` Vlastimil Babka 2016-06-17 12:03 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 22/27] mm: Convert zone_reclaim to node_reclaim Mel Gorman 2016-06-17 10:55 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 23/27] mm, vmscan: Add classzone information to tracepoints Mel Gorman 2016-06-17 10:57 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 24/27] mm, page_alloc: Remove fair zone allocation policy Mel Gorman 2016-06-17 11:27 ` Vlastimil Babka 2016-06-17 12:07 ` Mel Gorman 2016-06-09 18:04 ` [PATCH 25/27] mm: page_alloc: Cache the last node whose dirty limit is reached Mel Gorman 2016-06-17 11:31 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 26/27] mm: vmstat: Replace __count_zone_vm_events with a zone id equivalent Mel Gorman 2016-06-17 11:36 ` Vlastimil Babka 2016-06-09 18:04 ` [PATCH 27/27] mm: vmstat: Account per-zone stalls and pages skipped during reclaim Mel Gorman 2016-06-17 12:39 ` Vlastimil Babka -- strict thread matches above, loose matches on Subject: below -- 2016-06-21 14:15 [PATCH 00/27] Move LRU page reclaim from zones to nodes v7 Mel Gorman 2016-06-21 14:15 ` [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node Mel Gorman 2016-04-15 9:13 [PATCH 00/27] Move LRU page reclaim from zones to nodes v5 Mel Gorman 2016-04-15 9:13 ` [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node Mel Gorman 2016-04-06 11:19 [RFC PATCH 00/27] Move LRU page reclaim from zones to nodes v3 Mel Gorman 2016-04-06 11:20 ` [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node Mel Gorman
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=1465495483-11855-10-git-send-email-mgorman@techsingularity.net \ --to=mgorman@techsingularity.net \ --cc=akpm@linux-foundation.org \ --cc=hannes@cmpxchg.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=riel@surriel.com \ --cc=vbabka@suse.cz \ --subject='Re: [PATCH 09/27] mm, vmscan: By default have direct reclaim only shrink once per node' \ /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
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).