From: Huang Ying <ying.huang(a)intel.com>
ANBZ: #80
cherry-picked from
https://git.kernel.org/pub/scm/linux/kernel/git/vishal/tiering.git/commit/?…
To distinguish the file pages promotion from the anonymous pages
promotion.
Signed-off-by: "Huang, Ying" <ying.huang(a)intel.com>
Signed-off-by: Baolin Wang <baolin.wang(a)linux.alibaba.com>
---
include/linux/mmzone.h | 1 +
mm/migrate.c | 8 +++++++-
mm/vmstat.c | 1 +
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 30b42ef..9c2363f 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -210,6 +210,7 @@ enum node_stat_item {
PGPROMOTE_SUCCESS, /* promote successfully */
PGPROMOTE_CANDIDATE, /* candidate pages to promote */
PROMOTE_THRESHOLD,
+ PGPROMOTE_FILE,
#endif
NR_VM_NODE_STAT_ITEMS
};
diff --git a/mm/migrate.c b/mm/migrate.c
index 4a57837..ccb561d 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1201,7 +1201,13 @@ bool promote_file_page(struct page *page, int flags)
if (flags & PFP_LOCKED)
unlock_page(page);
- migrate_misplaced_page(page, NULL, nid);
+ if (migrate_misplaced_page(page, NULL, nid)) {
+#ifdef CONFIG_NUMA_BALANCING
+ mod_node_page_state(NODE_DATA(nid), PGPROMOTE_FILE, 1);
+#else
+ ;
+#endif
+ }
return true;
}
diff --git a/mm/vmstat.c b/mm/vmstat.c
index acd049b..a92a7ad 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -1190,6 +1190,7 @@ int fragmentation_index(struct zone *zone, unsigned int order)
"pgpromote_success",
"pgpromote_candidate",
"promote_threshold",
+ "pgpromote_file",
#endif
/* enum writeback_stat_item counters */
--
1.8.3.1