• Suleiman Souhlal's avatar
    mm: only force scan in reclaim when none of the LRUs are big enough. · 6f04f48d
    Suleiman Souhlal authored
    Prior to this change, we would decide whether to force scan a LRU during
    reclaim if that LRU itself was too small for the current priority.
    However, this can lead to the file LRU getting force scanned even if
    there are a lot of anonymous pages we can reclaim, leading to hot file
    pages getting needlessly reclaimed.
    
    To address this, we instead only force scan when none of the reclaimable
    LRUs are big enough.
    
    Gives huge improvements with zswap.  For example, when doing -j20 kernel
    build in a 500MB container with zswap enabled, runtime (in seconds) is
    greatly reduced:
    
    x without this change
    + with this change
        N           Min           Max        Median           Avg        Stddev
    x   5       700.997       790.076       763.928        754.05      39.59493
    +   5       141.634       197.899       155.706         161.9     21.270224
    Difference at 95.0% confidence
            -592.15 +/- 46.3521
            -78.5293% +/- 6.14709%
            (Student's t, pooled s = 31.7819)
    
    Should also give some improvements in regular (non-zswap) swap cases.
    
    Yes, hughd found significant speedup using regular swap, with several
    memcgs under pressure; and it should also be effective in the non-memcg
    case, whenever one or another zone LRU is forced too small.
    Signed-off-by: default avatarSuleiman Souhlal <suleiman@google.com>
    Signed-off-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Suleiman Souhlal <suleiman@google.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarRafael Aquini <aquini@redhat.com>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Yuanhan Liu <yuanhan.liu@linux.intel.com>
    Cc: Seth Jennings <sjennings@variantweb.net>
    Cc: Bob Liu <bob.liu@oracle.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Luigi Semenzato <semenzato@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    6f04f48d
vmscan.c 108 KB