diff options
author | Mel Gorman <mgorman@techsingularity.net> | 2016-07-28 18:46:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-28 19:07:41 -0400 |
commit | a9dd0a83104c01269ea36a9b4ec42b51edf85427 (patch) | |
tree | 2d3329f49b0c91376945e96838bab1307e33b57d /mm/page_alloc.c | |
parent | 86c79f6b5426ce118d32c73fa9e328f0a86ab590 (diff) |
mm, vmscan: make shrink_node decisions more node-centric
Earlier patches focused on having direct reclaim and kswapd use data
that is node-centric for reclaiming but shrink_node() itself still uses
too much zone information. This patch removes unnecessary zone-based
information with the most important decision being whether to continue
reclaim or not. Some memcg APIs are adjusted as a result even though
memcg itself still uses some zone information.
[mgorman@techsingularity.net: optimization]
Link: http://lkml.kernel.org/r/1468588165-12461-2-git-send-email-mgorman@techsingularity.net
Link: http://lkml.kernel.org/r/1467970510-21195-14-git-send-email-mgorman@techsingularity.net
Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Rik van Riel <riel@surriel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r-- | mm/page_alloc.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 81586410c59c..749b3c358ead 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -5911,6 +5911,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat) | |||
5911 | #endif | 5911 | #endif |
5912 | pgdat_page_ext_init(pgdat); | 5912 | pgdat_page_ext_init(pgdat); |
5913 | spin_lock_init(&pgdat->lru_lock); | 5913 | spin_lock_init(&pgdat->lru_lock); |
5914 | lruvec_init(node_lruvec(pgdat)); | ||
5914 | 5915 | ||
5915 | for (j = 0; j < MAX_NR_ZONES; j++) { | 5916 | for (j = 0; j < MAX_NR_ZONES; j++) { |
5916 | struct zone *zone = pgdat->node_zones + j; | 5917 | struct zone *zone = pgdat->node_zones + j; |
@@ -5973,7 +5974,6 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat) | |||
5973 | /* For bootup, initialized properly in watermark setup */ | 5974 | /* For bootup, initialized properly in watermark setup */ |
5974 | mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages); | 5975 | mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages); |
5975 | 5976 | ||
5976 | lruvec_init(zone_lruvec(zone)); | ||
5977 | if (!size) | 5977 | if (!size) |
5978 | continue; | 5978 | continue; |
5979 | 5979 | ||