• A
    ksm: optimize refile of stable_node_dup at the head of the chain · 80b18dfa
    Andrea Arcangeli 提交于
    If a candidate stable_node_dup has been found and it can accept further
    merges it can be refiled to the head of the list to speedup next
    searches without altering which dup is found and how the dups accumulate
    in the chain.
    
    We already refiled it back to the head in the prune_stale_stable_nodes
    case, but we didn't refile it if not pruning (which is more common).
    And we also refiled it when it was already at the head which is
    unnecessary (in the prune_stale_stable_nodes case, nr > 1 means there's
    more than one dup in the chain, it doesn't mean it's not already at the
    head of the chain).
    
    The stable_node_chain list is single threaded and there's no SMP locking
    contention so it should be faster to refile it to the head of the list
    also if prune_stale_stable_nodes is false.
    
    Profiling shows the refile happens 1.9% of the time when a dup is found
    with a max_page_sharing limit setting of 3 (with max_page_sharing of 2
    the refile never happens of course as there's never space for one more
    merge) which is reasonably low.  At higher max_page_sharing values it
    should be much less frequent.
    
    This is just an optimization.
    
    Link: http://lkml.kernel.org/r/20170518173721.22316-4-aarcange@redhat.comSigned-off-by: NAndrea Arcangeli <aarcange@redhat.com>
    Cc: Evgheni Dereveanchin <ederevea@redhat.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Petr Holasek <pholasek@redhat.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Arjan van de Ven <arjan@linux.intel.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Gavin Guo <gavin.guo@canonical.com>
    Cc: Jay Vosburgh <jay.vosburgh@canonical.com>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    80b18dfa
ksm.c 85.5 KB