From: Zi Yan <zi.yan@xxxxxxxxxxxxxx> From: Zi Yan <ziy@xxxxxxxxxx> Since base page migration did not gain any speedup from multi-threaded methods, we only accelerate the huge page case. Signed-off-by: Zi Yan <ziy@xxxxxxxxxx> Signed-off-by: Zi Yan <zi.yan@xxxxxxxxxxxxxx> --- kernel/sysctl.c | 11 +++++++++++ mm/migrate.c | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index d54ce12..6c79444 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -98,6 +98,8 @@ #if defined(CONFIG_SYSCTL) +extern int accel_page_copy; + /* External variables not in a header file. */ extern int suid_dumpable; #ifdef CONFIG_COREDUMP @@ -1361,6 +1363,15 @@ static struct ctl_table vm_table[] = { .proc_handler = &hugetlb_mempolicy_sysctl_handler, }, #endif + { + .procname = "accel_page_copy", + .data = &accel_page_copy, + .maxlen = sizeof(accel_page_copy), + .mode = 0644, + .proc_handler = proc_dointvec, + .extra1 = &zero, + .extra2 = &one, + }, { .procname = "hugetlb_shm_group", .data = &sysctl_hugetlb_shm_group, diff --git a/mm/migrate.c b/mm/migrate.c index 244ece6..e64b490 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -48,6 +48,8 @@ #include "internal.h" +int accel_page_copy = 1; + /* * migrate_prep() needs to be called before we start compiling a list of pages * to be migrated using isolate_lru_page(). If scheduling work on other CPUs is @@ -651,6 +653,10 @@ static void copy_huge_page(struct page *dst, struct page *src, nr_pages = hpage_nr_pages(src); } + /* Try to accelerate page migration if it is not specified in mode */ + if (accel_page_copy) + mode |= MIGRATE_MT; + if (mode & MIGRATE_MT) rc = copy_page_mt(dst, src, nr_pages); -- 2.10.2 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>