Skip to content
  • Johannes Weiner's avatar
    vmscan: detect mapped file pages used only once · 64574746
    Johannes Weiner authored
    
    
    The VM currently assumes that an inactive, mapped and referenced file page
    is in use and promotes it to the active list.
    
    However, every mapped file page starts out like this and thus a problem
    arises when workloads create a stream of such pages that are used only for
    a short time.  By flooding the active list with those pages, the VM
    quickly gets into trouble finding eligible reclaim canditates.  The result
    is long allocation latencies and eviction of the wrong pages.
    
    This patch reuses the PG_referenced page flag (used for unmapped file
    pages) to implement a usage detection that scales with the speed of LRU
    list cycling (i.e.  memory pressure).
    
    If the scanner encounters those pages, the flag is set and the page cycled
    again on the inactive list.  Only if it returns with another page table
    reference it is activated.  Otherwise it is reclaimed as 'not recently
    used cache'.
    
    This effectively changes the minimum lifetime of a used-once mapped file
    page from a full memory cycle to an inactive list cycle, which allows it
    to occur in linear streams without affecting the stable working set of the
    system.
    
    Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Reviewed-by: default avatarRik van Riel <riel@redhat.com>
    Cc: Minchan Kim <minchan.kim@gmail.com>
    Cc: OSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Lee Schermerhorn <lee.schermerhorn@hp.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    64574746