• Huang Ying's avatar
    mm: free idle swap cache page after COW · f4c4a3f4
    Huang Ying authored
    With commit 09854ba9 ("mm: do_wp_page() simplification"), after COW,
    the idle swap cache page (neither the page nor the corresponding swap
    entry is mapped by any process) will be left in the LRU list, even if it's
    in the active list or the head of the inactive list.  So, the page
    reclaimer may take quite some overhead to reclaim these actually unused
    pages.
    
    To help the page reclaiming, in this patch, after COW, the idle swap cache
    page will be tried to be freed.  To avoid to introduce much overhead to
    the hot COW code path,
    
    a) there's almost zero overhead for non-swap case via checking
       PageSwapCache() firstly.
    
    b) the page lock is acquired via trylock only.
    
    To test the patch, we used pmbench memory accessing benchmark with
    working-set larger than available memory on a 2-socket Intel server with a
    NVMe SSD as swap device.  Test results shows that the pmbench score
    increases up to 23.8% with the decreased size of swap cache and swapin
    throughput.
    
    Link: https://lkml.kernel.org/r/20210601053143.1380078-1-ying.huang@intel.comSigned-off-by: default avatar"Huang, Ying" <ying.huang@intel.com>
    Suggested-by: Johannes Weiner <hannes@cmpxchg.org>	[use free_swap_cache()]
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Tim Chen <tim.c.chen@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    f4c4a3f4
swap_state.c 24 KB