• Joonsoo Kim's avatar
    mm/vmscan: protect the workingset on anonymous LRU · b518154e
    Joonsoo Kim authored
    
    
    In current implementation, newly created or swap-in anonymous page is
    started on active list.  Growing active list results in rebalancing
    active/inactive list so old pages on active list are demoted to inactive
    list.  Hence, the page on active list isn't protected at all.
    
    Following is an example of this situation.
    
    Assume that 50 hot pages on active list.  Numbers denote the number of
    pages on active/inactive list (active | inactive).
    
    1. 50 hot pages on active list
    50(h) | 0
    
    2. workload: 50 newly created (used-once) pages
    50(uo) | 50(h)
    
    3. workload: another 50 newly created (used-once) pages
    50(uo) | 50(uo), swap-out 50(h)
    
    This patch tries to fix this issue.  Like as file LRU, newly created or
    swap-in anonymous pages will be inserted to the inactive list.  They are
    promoted to active list if enough reference happens.  This simple
    modification changes the above example as following.
    
    1. 50 hot pages on active list
    50(h) | 0
    
    2. workload: 50 newly created (used-once) pages
    50(h) | 50(uo)
    
    3. workload: another 50 newly created (used-once) pages
    50(h) | 50(uo), swap-out 50(uo)
    
    As you can see, hot pages on active list would be protected.
    
    Note that, this implementation has a drawback that the page cannot be
    promoted and will be swapped-out if re-access interval is greater than the
    size of inactive list but less than the size of total(active+inactive).
    To solve this potential issue, following patch will apply workingset
    detection similar to the one that's already applied to file LRU.
    
    Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Link: http://lkml.kernel.org/r/1595490560-15117-3-git-send-email-iamjoonsoo.kim@lge.com
    
    
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b518154e