• Christoph Lameter's avatar
    [PATCH] slab: cache_reap(): further reduction in interrupt holdoff · 35386e3b
    Christoph Lameter authored
    cache_reap takes the l3->list_lock (disabling interrupts) unconditionally
    and then does a few checks and maybe does some cleanup.  This patch makes
    cache_reap() only take the lock if there is work to do and then the lock is
    taken and released for each cleaning action.
    
    The checking of when to do the next reaping is done without any locking and
    becomes racy.  Should not matter since reaping can also be skipped if the
    slab mutex cannot be acquired.
    
    The same is true for the touched processing.  If we get this wrong once in
    awhile then we will mistakenly clean or not clean the shared cache.  This
    will impact performance slightly.
    
    Note that the additional drain_array() function introduced here will fall
    out in a subsequent patch since array cleaning will now be very similar
    from all callers.
    Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
    Cc: Pekka Enberg <penberg@cs.helsinki.fi>
    Cc: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    35386e3b
slab.c 102 KB