On 11/22/2016 09:55 PM, Zi Yan wrote:
> From: Zi Yan <zi....@cs.rutgers.edu>
> 
> From: Zi Yan <z...@nvidia.com>
> 
> 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 <z...@nvidia.com>
> Signed-off-by: Zi Yan <zi....@cs.rutgers.edu>
> ---
>  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;

Hmm, accel_mthread_copy because this is achieved by a multi threaded
copy mechanism.

> +
>  /* 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;
> +

So its enabled by default.

>  /*
>   * 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;

So even if none of the system calls requested for a multi threaded copy,
this setting will override every thing and make it multi threaded.

Reply via email to