Skip to content
  • Laura Abbott's avatar
    slub: drop lock at the end of free_debug_processing · 282acb43
    Laura Abbott authored
    
    
    This series takes the suggestion of Christoph Lameter and only focuses
    on optimizing the slow path where the debug processing runs.  The two
    main optimizations in this series are letting the consistency checks be
    skipped and relaxing the cmpxchg restrictions when we are not doing
    consistency checks.  With hackbench -g 20 -l 1000 averaged over 100
    runs:
    
    Before slub_debug=P
      mean 15.607
      variance .086
      stdev .294
    
    After slub_debug=P
      mean 10.836
      variance .155
      stdev .394
    
    This still isn't as fast as what is in grsecurity unfortunately so there's
    still work to be done.  Profiling ___slab_alloc shows that 25-50% of time
    is spent in deactivate_slab.  I haven't looked too closely to see if this
    is something that can be optimized.  My plan for now is to focus on
    getting all of this merged (if appropriate) before digging in to another
    task.
    
    This patch (of 4):
    
    Currently, free_debug_processing has a comment "Keep node_lock to preserve
    integrity until the object is actually freed".  In actuallity, the lock is
    dropped immediately in __slab_free.  Rather than wait until __slab_free
    and potentially throw off the unlikely marking, just drop the lock in
    __slab_free.  This also lets free_debug_processing take its own copy of
    the spinlock flags rather than trying to share the ones from __slab_free.
    Since there is no use for the node afterwards, change the return type of
    free_debug_processing to return an int like alloc_debug_processing.
    
    Credit to Mathias Krause for the original work which inspired this series
    
    [akpm@linux-foundation.org: fix build]
    Signed-off-by: default avatarLaura Abbott <labbott@fedoraproject.org>
    Acked-by: default avatarChristoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <js1304@gmail.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Mathias Krause <minipli@googlemail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    282acb43