• Huang Ying's avatar
    mm/swapfile.c: sort swap entries before free · 155b5f88
    Huang Ying authored
    To reduce the lock contention of swap_info_struct->lock when freeing
    swap entry.  The freed swap entries will be collected in a per-CPU
    buffer firstly, and be really freed later in batch.  During the batch
    freeing, if the consecutive swap entries in the per-CPU buffer belongs
    to same swap device, the swap_info_struct->lock needs to be
    acquired/released only once, so that the lock contention could be
    reduced greatly.  But if there are multiple swap devices, it is possible
    that the lock may be unnecessarily released/acquired because the swap
    entries belong to the same swap device are non-consecutive in the
    per-CPU buffer.
    
    To solve the issue, the per-CPU buffer is sorted according to the swap
    device before freeing the swap entries.
    
    With the patch, the memory (some swapped out) free time reduced 11.6%
    (from 2.65s to 2.35s) in the vm-scalability swap-w-rand test case with
    16 processes.  The test is done on a Xeon E5 v3 system.  The swap device
    used is a RAM simulated PMEM (persistent memory) device.  To test
    swapping, the test case creates 16 processes, which allocate and write
    to the anonymous pages until the RAM and part of the swap device is used
    up, finally the memory (some swapped out) is freed before exit.
    
    [akpm@linux-foundation.org: tweak comment]
    Link: http://lkml.kernel.org/r/20170525005916.25249-1-ying.huang@intel.comSigned-off-by: default avatarHuang Ying <ying.huang@intel.com>
    Acked-by: default avatarTim Chen <tim.c.chen@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Shaohua Li <shli@kernel.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Rik van Riel <riel@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    155b5f88
swapfile.c 88.2 KB