• Minchan Kim's avatar
    mm: reclaim invalidated page ASAP · 278df9f4
    Minchan Kim authored
    invalidate_mapping_pages is very big hint to reclaimer.  It means user
    doesn't want to use the page any more.  So in order to prevent working set
    page eviction, this patch move the page into tail of inactive list by
    PG_reclaim.
    
    Please, remember that pages in inactive list are working set as well as
    active list.  If we don't move pages into inactive list's tail, pages near
    by tail of inactive list can be evicted although we have a big clue about
    useless pages.  It's totally bad.
    
    Now PG_readahead/PG_reclaim is shared.  fe3cba17 added ClearPageReclaim
    into clear_page_dirty_for_io for preventing fast reclaiming readahead
    marker page.
    
    In this series, PG_reclaim is used by invalidated page, too.  If VM find
    the page is invalidated and it's dirty, it sets PG_reclaim to reclaim
    asap.  Then, when the dirty page will be writeback,
    clear_page_dirty_for_io will clear PG_reclaim unconditionally.  It
    disturbs this serie's goal.
    
    I think it's okay to clear PG_readahead when the page is dirty, not
    writeback time.  So this patch moves ClearPageReadahead.  In v4,
    ClearPageReadahead in set_page_dirty has a problem which is reported by
    Steven Barrett.  It's due to compound page.  Some driver(ex, audio) calls
    set_page_dirty with compound page which isn't on LRU.  but my patch does
    ClearPageRelcaim on compound page.  In non-CONFIG_PAGEFLAGS_EXTENDED, it
    breaks PageTail flag.
    
    I think it doesn't affect THP and pass my test with THP enabling but Cced
    Andrea for double check.
    Signed-off-by: default avatarMinchan Kim <minchan.kim@gmail.com>
    Reported-by: default avatarSteven Barrett <damentz@liquorix.net>
    Reviewed-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarRik van Riel <riel@redhat.com>
    Acked-by: default avatarMel Gorman <mel@csn.ul.ie>
    Cc: Wu Fengguang <fengguang.wu@intel.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    Cc: Nick Piggin <npiggin@kernel.dk>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    278df9f4
swap.c 19.1 KB