• Johannes Weiner's avatar
    mm: workingset: let cache workingset challenge anon · 34e58cac
    Johannes Weiner authored
    We activate cache refaults with reuse distances in pages smaller than the
    size of the total cache.  This allows new pages with competitive access
    frequencies to establish themselves, as well as challenge and potentially
    displace pages on the active list that have gone cold.
    
    However, that assumes that active cache can only replace other active
    cache in a competition for the hottest memory.  This is not a great
    default assumption.  The page cache might be thrashing while there are
    enough completely cold and unused anonymous pages sitting around that we'd
    only have to write to swap once to stop all IO from the cache.
    
    Activate cache refaults when their reuse distance in pages is smaller than
    the total userspace workingset, including anonymous pages.
    
    Reclaim can still decide how to balance pressure among the two LRUs
    depending on the IO situation.  Rotational drives will prefer avoiding
    random IO from swap and go harder after cache.  But fundamentally, hot
    cache should be able to compete with anon pages for a place in RAM.
    Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Rik van Riel <riel@surriel.com>
    Link: http://lkml.kernel.org/r/20200520232525.798933-6-hannes@cmpxchg.orgSigned-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    34e58cac
workingset.c 20.8 KB