• M
    mm, compaction: keep migration source private to a single compaction instance · 87f9b9a3
    Mel Gorman 提交于
    to #26255339
    
    commit e380bebe4771548df9bece8b7ad9dab07d9158a6 upstream
    
    Due to either a fast search of the free list or a linear scan, it is
    possible for multiple compaction instances to pick the same pageblock
    for migration.  This is lucky for one scanner and increased scanning for
    all the others.  It also allows a race between requests on which first
    allocates the resulting free block.
    
    This patch tests and updates the pageblock skip for the migration
    scanner carefully.  When isolating a block, it will check and skip if
    the block is already in use.  Once the zone lock is acquired, it will be
    rechecked so that only one scanner can set the pageblock skip for
    exclusive use.  Any scanner contending will continue with a linear scan.
    The skip bit is still set if no pages can be isolated in a range.  While
    this may result in redundant scanning, it avoids unnecessarily acquiring
    the zone lock when there are no suitable migration sources.
    
    1-socket thpscale
    Amean     fault-both-1         0.00 (   0.00%)        0.00 *   0.00%*
    Amean     fault-both-3      3390.40 (   0.00%)     3024.41 (  10.80%)
    Amean     fault-both-5      5082.28 (   0.00%)     4749.30 (   6.55%)
    Amean     fault-both-7      7012.51 (   0.00%)     6454.95 (   7.95%)
    Amean     fault-both-12    11346.63 (   0.00%)    10324.83 (   9.01%)
    Amean     fault-both-18    15324.19 (   0.00%)    12896.82 *  15.84%*
    Amean     fault-both-24    16088.50 (   0.00%)    13470.60 *  16.27%*
    Amean     fault-both-30    18723.42 (   0.00%)    17143.99 (   8.44%)
    Amean     fault-both-32    18612.01 (   0.00%)    17743.91 (   4.66%)
    
                                    5.0.0-rc1              5.0.0-rc1
                                findmig-v3r15          isolmig-v3r15
    Percentage huge-3        89.83 (   0.00%)       92.96 (   3.48%)
    Percentage huge-5        91.96 (   0.00%)       93.26 (   1.41%)
    Percentage huge-7        92.85 (   0.00%)       93.63 (   0.84%)
    Percentage huge-12       92.74 (   0.00%)       92.80 (   0.07%)
    Percentage huge-18       91.71 (   0.00%)       91.62 (  -0.10%)
    Percentage huge-24       92.13 (   0.00%)       91.50 (  -0.69%)
    Percentage huge-30       93.79 (   0.00%)       92.73 (  -1.13%)
    Percentage huge-32       91.27 (   0.00%)       91.94 (   0.74%)
    
    This shows a reasonable reduction in latency as multiple compaction
    scanners do not operate on the same blocks with a similar allocation
    success rate.
    
    Compaction migrate scanned    41093126    25646769
    
    Migration scan rates are reduced by 38%.
    
    Link: http://lkml.kernel.org/r/20190118175136.31341-11-mgorman@techsingularity.netSigned-off-by: NMel Gorman <mgorman@techsingularity.net>
    Acked-by: NVlastimil Babka <vbabka@suse.cz>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: YueHaibing <yuehaibing@huawei.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: NYang Shi <yang.shi@linux.alibaba.com>
    Reviewed-by: NXunlei Pang <xlpang@linux.alibaba.com>
    87f9b9a3
compaction.c 65.3 KB