• Mel Gorman's avatar
    mm: vmscan: flatten kswapd priority loop · b8e83b94
    Mel Gorman authored
    kswapd stops raising the scanning priority when at least
    SWAP_CLUSTER_MAX pages have been reclaimed or the pgdat is considered
    balanced.  It then rechecks if it needs to restart at DEF_PRIORITY and
    whether high-order reclaim needs to be reset.  This is not wrong per-se
    but it is confusing to follow and forcing kswapd to stay at DEF_PRIORITY
    may require several restarts before it has scanned enough pages to meet
    the high watermark even at 100% efficiency.  This patch irons out the
    logic a bit by controlling when priority is raised and removing the
    "goto loop_again".
    
    This patch has kswapd raise the scanning priority until it is scanning
    enough pages that it could meet the high watermark in one shrink of the
    LRU lists if it is able to reclaim at 100% efficiency.  It will not
    raise the scanning prioirty higher unless it is failing to reclaim any
    pages.
    
    To avoid infinite looping for high-order allocation requests kswapd will
    not reclaim for high-order allocations when it has reclaimed at least
    twice the number of pages as the allocation request.
    Signed-off-by: default avatarMel Gorman <mgorman@suse.de>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Reviewed-by: default avatarMichal Hocko <mhocko@suse.cz>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Jiri Slaby <jslaby@suse.cz>
    Cc: Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
    Tested-by: default avatarZlatko Calusic <zcalusic@bitsync.net>
    Cc: dormando <dormando@rydia.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    b8e83b94
vmscan.c 102 KB