• Oliver Glitta's avatar
    mm/slub: use stackdepot to save stack trace in objects · 5cf909c5
    Oliver Glitta authored
    Many stack traces are similar so there are many similar arrays.
    Stackdepot saves each unique stack only once.
    
    Replace field addrs in struct track with depot_stack_handle_t handle.  Use
    stackdepot to save stack trace.
    
    The benefits are smaller memory overhead and possibility to aggregate
    per-cache statistics in the following patch using the stackdepot handle
    instead of matching stacks manually.
    
    [ vbabka@suse.cz: rebase to 5.17-rc1 and adjust accordingly ]
    
    This was initially merged as commit 78869146 and reverted by commit
    ae14c63a due to several issues, that should now be fixed.
    The problem of unconditional memory overhead by stackdepot has been
    addressed by commit 2dba5eb1 ("lib/stackdepot: allow optional init
    and stack_table allocation by kvmalloc()"), so the dependency on
    stackdepot will result in extra memory usage only when a slab cache
    tracking is actually enabled, and not for all CONFIG_SLUB_DEBUG builds.
    The build failures on some architectures were also addressed, and the
    reported issue with xfs/433 test did not reproduce on 5.17-rc1 with this
    patch.
    Signed-off-by: default avatarOliver Glitta <glittao@gmail.com>
    Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-and-tested-by: default avatarHyeonggon Yoo <42.hyeyoo@gmail.com>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    5cf909c5
slab_common.c 33.1 KB