• Naoya Horiguchi's avatar
    mm: mempolicy: add queue_pages_required() · 88aaa2a1
    Naoya Horiguchi authored
    Patch series "mm: page migration enhancement for thp", v9.
    
    Motivations:
    
    1. THP migration becomes important in the upcoming heterogeneous memory
       systems. As David Nellans from NVIDIA pointed out from other threads
       (http://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1349227.html),
       future GPUs or other accelerators will have their memory managed by
       operating systems. Moving data into and out of these memory nodes
       efficiently is critical to applications that use GPUs or other
       accelerators. Existing page migration only supports base pages, which
       has a very low memory bandwidth utilization. My experiments (see
       below) show THP migration can migrate pages more efficiently.
    
    2. Base page migration vs THP migration throughput.
    
       Here are cross-socket page migration results from calling
       move_pages() syscall:
    
       In x86_64, a Intel two-socket E5-2640v3 box,
        - single 4KB base page migration takes 62.47 us, using 0.06 GB/s BW,
        - single 2MB THP migration takes 658.54 us, using 2.97 GB/s BW,
        - 512 4KB base page migration takes 1987.38 us, using 0.98 GB/s BW.
    
       In ppc64, a two-socket Power8 box,
        - single 64KB base page migration takes 49.3 us, using 1.24 GB/s BW,
        - single 16MB THP migration takes 2202.17 us, using 7.10 GB/s BW,
        - 256 64KB base page migration takes 2543.65 us, using 6.14 GB/s BW.
    
       THP migration can give us 3x and 1.15x throughput over base page
       migration in x86_64 and ppc64 respectivley.
    
       You can test it out by using the code here:
          https://github.com/x-y-z/thp-migration-bench
    
    3. Existing page migration splits THP before migration and cannot
       guarantee the migrated pages are still contiguous. Contiguity is
       always what GPUs and accelerators look for. Without THP migration,
       khugepaged needs to do extra work to reassemble the migrated pages
       back to THPs.
    
    This patch (of 10):
    
    Introduce a separate check routine related to MPOL_MF_INVERT flag.  This
    patch just does cleanup, no behavioral change.
    
    Link: http://lkml.kernel.org/r/20170717193955.20207-2-zi.yan@sent.comSigned-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Signed-off-by: default avatarZi Yan <zi.yan@cs.rutgers.edu>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Nellans <dnellans@nvidia.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    88aaa2a1
mempolicy.c 68.4 KB