• Huang Ying's avatar
    migrate_pages: batch flushing TLB · 7e12beb8
    Huang Ying authored
    The TLB flushing will cost quite some CPU cycles during the folio
    migration in some situations.  For example, when migrate a folio of a
    process with multiple active threads that run on multiple CPUs.  After
    batching the _unmap and _move in migrate_pages(), the TLB flushing can be
    batched easily with the existing TLB flush batching mechanism.  This patch
    implements that.
    
    We use the following test case to test the patch.
    
    On a 2-socket Intel server,
    
    - Run pmbench memory accessing benchmark
    
    - Run `migratepages` to migrate pages of pmbench between node 0 and
      node 1 back and forth.
    
    With the patch, the TLB flushing IPI reduces 99.1% during the test and the
    number of pages migrated successfully per second increases 291.7%.
    
    Haoxin helped to test the patchset on an ARM64 server with 128 cores, 2
    NUMA nodes.  Test results show that the page migration performance
    increases up to 78%.
    
    NOTE: TLB flushing is batched only for normal folios, not for THP folios. 
    Because the overhead of TLB flushing for THP folios is much lower than
    that for normal folios (about 1/512 on x86 platform).
    
    Link: https://lkml.kernel.org/r/20230213123444.155149-9-ying.huang@intel.comSigned-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Tested-by: default avatarXin Hao <xhao@linux.alibaba.com>
    Reviewed-by: default avatarZi Yan <ziy@nvidia.com>
    Reviewed-by: default avatarXin Hao <xhao@linux.alibaba.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Bharata B Rao <bharata@amd.com>
    Cc: Alistair Popple <apopple@nvidia.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    7e12beb8
migrate.c 69.1 KB