• Dave Chinner's avatar
    list_lru: per-node list infrastructure · 3b1d58a4
    Dave Chinner authored
    Now that we have an LRU list API, we can start to enhance the
    implementation.  This splits the single LRU list into per-node lists and
    locks to enhance scalability.  Items are placed on lists according to the
    node the memory belongs to.  To make scanning the lists efficient, also
    track whether the per-node lists have entries in them in a active
    nodemask.
    
    Note: We use a fixed-size array for the node LRU, this struct can be very
    big if MAX_NUMNODES is big.  If this becomes a problem this is fixable by
    turning this into a pointer and dynamically allocating this to
    nr_node_ids.  This quantity is firwmare-provided, and still would provide
    room for all nodes at the cost of a pointer lookup and an extra
    allocation.  Because that allocation will most likely come from a may very
    well fail.
    
    [glommer@openvz.org: fix warnings, added note about node lru]
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Signed-off-by: default avatarGlauber Costa <glommer@openvz.org>
    Reviewed-by: default avatarGreg Thelen <gthelen@google.com>
    Acked-by: default avatarMel Gorman <mgorman@suse.de>
    Cc: "Theodore Ts'o" <tytso@mit.edu>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
    Cc: Arve Hjønnevåg <arve@android.com>
    Cc: Carlos Maiolino <cmaiolino@redhat.com>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Chuck Lever <chuck.lever@oracle.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Gleb Natapov <gleb@redhat.com>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: J. Bruce Fields <bfields@redhat.com>
    Cc: Jan Kara <jack@suse.cz>
    Cc: Jerome Glisse <jglisse@redhat.com>
    Cc: John Stultz <john.stultz@linaro.org>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Kent Overstreet <koverstreet@google.com>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Marcelo Tosatti <mtosatti@redhat.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Steven Whitehouse <swhiteho@redhat.com>
    Cc: Thomas Hellstrom <thellstrom@vmware.com>
    Cc: Trond Myklebust <Trond.Myklebust@netapp.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    3b1d58a4
list_lru.c 4.33 KB