linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2] mm: exclude isolated non-lru pages from NR_ISOLATED_ANON or NR_ISOLATED_FILE.
@ 2016-10-13  6:39 ming.ling
  2016-10-13  8:09 ` Michal Hocko
  0 siblings, 1 reply; 16+ messages in thread
From: ming.ling @ 2016-10-13  6:39 UTC (permalink / raw)
  To: akpm, mgorman, vbabka, hannes, mhocko, baiyaowei, iamjoonsoo.kim,
	minchan, rientjes, hughd, kirill.shutemov
  Cc: riel, mgorman, aquini, corbet, linux-mm, linux-kernel, orson.zhai,
	geng.ren, chunyan.zhang, zhizhou.tian, yuming.han, xiajing,
	Ming Ling

From: Ming Ling <ming.ling@spreadtrum.com>

Non-lru pages don't belong to any lru, so counting them to
NR_ISOLATED_ANON or NR_ISOLATED_FILE doesn't make any sense.
It may misguide functions such as pgdat_reclaimable_pages and
too_many_isolated.
On mobile devices such as 512M ram android Phone, it may use
a big zram swap. In some cases zram(zsmalloc) uses too many
non-lru pages, such as:
	MemTotal: 468148 kB
	Normal free:5620kB
	Free swap:4736kB
	Total swap:409596kB
	ZRAM: 164616kB(zsmalloc non-lru pages)
	active_anon:60700kB
	inactive_anon:60744kB
	active_file:34420kB
	inactive_file:37532kB
More non-lru pages which used by zram for swap, it influences
pgdat_reclaimable_pages and too_many_isolated more.
This patch excludes isolated non-lru pages from NR_ISOLATED_ANON
or NR_ISOLATED_FILE to ensure their counts are right.

Signed-off-by: Ming ling <ming.ling@spreadtrum.com>
---
 mm/compaction.c | 6 ++++--
 mm/migrate.c    | 9 +++++----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/mm/compaction.c b/mm/compaction.c
index 0409a4a..ed4c553 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -643,8 +643,10 @@ static void acct_isolated(struct zone *zone, struct compact_control *cc)
 	if (list_empty(&cc->migratepages))
 		return;
 
-	list_for_each_entry(page, &cc->migratepages, lru)
-		count[!!page_is_file_cache(page)]++;
+	list_for_each_entry(page, &cc->migratepages, lru) {
+		if (likely(!__PageMovable(page)))
+			count[!!page_is_file_cache(page)]++;
+	}
 
 	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_ANON, count[0]);
 	mod_node_page_state(zone->zone_pgdat, NR_ISOLATED_FILE, count[1]);
diff --git a/mm/migrate.c b/mm/migrate.c
index 99250ae..abe48cc 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -168,8 +168,6 @@ void putback_movable_pages(struct list_head *l)
 			continue;
 		}
 		list_del(&page->lru);
-		dec_node_page_state(page, NR_ISOLATED_ANON +
-				page_is_file_cache(page));
 		/*
 		 * We isolated non-lru movable page so here we can use
 		 * __PageMovable because LRU page's mapping cannot have
@@ -185,6 +183,8 @@ void putback_movable_pages(struct list_head *l)
 			unlock_page(page);
 			put_page(page);
 		} else {
+			dec_node_page_state(page, NR_ISOLATED_ANON +
+					page_is_file_cache(page));
 			putback_lru_page(page);
 		}
 	}
@@ -1121,8 +1121,9 @@ static ICE_noinline int unmap_and_move(new_page_t get_new_page,
 		 * restored.
 		 */
 		list_del(&page->lru);
-		dec_node_page_state(page, NR_ISOLATED_ANON +
-				page_is_file_cache(page));
+		if (likely(!__PageMovable(page)))
+			dec_node_page_state(page, NR_ISOLATED_ANON +
+					page_is_file_cache(page));
 	}
 
 	/*
-- 
1.9.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>

^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2016-10-19  2:41 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-10-13  6:39 [PATCH v2] mm: exclude isolated non-lru pages from NR_ISOLATED_ANON or NR_ISOLATED_FILE ming.ling
2016-10-13  8:09 ` Michal Hocko
2016-10-14  8:32   ` Ming Ling
2016-10-14 11:30     ` Michal Hocko
2016-10-14 13:46       ` Minchan Kim
2016-10-14 13:53         ` Michal Hocko
2016-10-14 14:44           ` Minchan Kim
2016-10-14 15:03             ` Michal Hocko
2016-10-14 15:26               ` Minchan Kim
2016-10-15  7:10                 ` Michal Hocko
2016-10-16 23:06                   ` Minchan Kim
2016-10-17  8:42                     ` Michal Hocko
2016-10-17 11:10                       ` Michal Hocko
2016-10-18  6:29                       ` Minchan Kim
2016-10-18 12:52                         ` Michal Hocko
2016-10-19  2:32                           ` Ming Ling

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).