• Rik van Riel's avatar
    mm: make swapin readahead skip over holes · 67f96aa2
    Rik van Riel authored
    Ever since abandoning the virtual scan of processes, for scalability
    reasons, swap space has been a little more fragmented than before.  This
    can lead to the situation where a large memory user is killed, swap space
    ends up full of "holes" and swapin readahead is totally ineffective.
    
    On my home system, after killing a leaky firefox it took over an hour to
    page just under 2GB of memory back in, slowing the virtual machines down
    to a crawl.
    
    This patch makes swapin readahead simply skip over holes, instead of
    stopping at them.  This allows the system to swap things back in at rates
    of several MB/second, instead of a few hundred kB/second.
    
    The checks done in valid_swaphandles are already done in
    read_swap_cache_async as well, allowing us to remove a fair amount of
    code.
    
    [akpm@linux-foundation.org: fix it for page_cluster >= 32]
    Signed-off-by: default avatarRik van Riel <riel@redhat.com>
    Cc: Minchan Kim <minchan.kim@gmail.com>
    Cc: KOSAKI Motohiro <kosaki.motohiro@gmail.com>
    Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarMel Gorman <mgorman@suse.de>
    Cc: Adrian Drzewiecki <z@drze.net>
    Cc: Hugh Dickins <hughd@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    67f96aa2
swap_state.c 10.2 KB