@@ -62,6 +62,7 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
THP_MIGRATION_SUCCESS,
THP_MIGRATION_FAIL,
THP_MIGRATION_SPLIT,
+ PGMIGRATE_SPECULATION,
#endif
#ifdef CONFIG_COMPACTION
COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED,
@@ -4572,6 +4572,8 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
if (migrate_misplaced_page(page, vma, target_nid)) {
page_nid = target_nid;
flags |= TNF_MIGRATED;
+ if (vmf->address != fault_address)
+ count_vm_events(PGMIGRATE_SPECULATION, 1);
} else {
flags |= TNF_MIGRATE_FAIL;
vmf->pte = pte_offset_map(vmf->pmd, fault_address);
@@ -1314,6 +1314,7 @@ const char * const vmstat_text[] = {
"thp_migration_success",
"thp_migration_fail",
"thp_migration_split",
+ "pgmigrate_speculation",
#endif
#ifdef CONFIG_COMPACTION
"compact_migrate_scanned",
Add a new statistic to help to tune the speculative numa fault window. Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com> --- include/linux/vm_event_item.h | 1 + mm/memory.c | 2 ++ mm/vmstat.c | 1 + 3 files changed, 4 insertions(+)