• Mel Gorman's avatar
    mm, compaction: keep migration source private to a single compaction instance · e380bebe
    Mel Gorman authored
    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: default avatarMel Gorman <mgorman@techsingularity.net>
    Acked-by: default avatarVlastimil 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: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e380bebe
compaction.c 65.2 KB