Skip to content

RFC Slab Movable Objects (SMO)

Tobin C. Harding linux-fsdevel linux-mm lkml 5 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 RFC Latest16 patches 15 repliesIn review
  2. v4 RFC15 patches 0 repliesSuperseded
  3. v3 RFC15 patches 12 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v2 RFC14 patches13 repliesSuperseded
v1 RFC15 patches25 repliesSuperseded

Patches in v5 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/16slub: Add isolate() and migrate() methodsinclude/linux/slab.h include/linux/slub_def.h mm/slub.c+126 -61 reply
2/16tools/vm/slabinfo: Add support for -C and -M optionstools/vm/slabinfo.c+36 -40 replies
3/16slub: Sort slab cache listmm/slab_common.c mm/slub.c+7 -11 reply
4/16slub: Slab defrag coreDocumentation/ABI/testing/sysfs-kernel-slab include/linux/slab.h include/linux/slub_def.h +1 more+334 -733 replies
5/16tools/vm/slabinfo: Add remote node defrag ratio outputtools/vm/slabinfo.c+7 -00 replies
6/16tools/vm/slabinfo: Add defrag_used_ratio outputtools/vm/slabinfo.c+4 -00 replies
7/16tools/testing/slab: Add object migration test moduletools/testing/slab/Makefile tools/testing/slab/slub_defrag.c+576 -00 replies
8/16tools/testing/slab: Add object migration test suitetools/testing/slab/slub_defrag.c tools/testing/slab/slub_defrag.py+452 -00 replies
9/16lib: Separate radix_tree_node and xa_node slab cacheinclude/linux/xarray.h init/main.c lib/radix-tree.c +1 more+45 -100 replies
10/16xarray: Implement migration function for xa_node objectslib/xarray.c+61 -00 replies
11/16tools/testing/slab: Add XArray movable objects teststools/testing/slab/Makefile tools/testing/slab/slub_defrag_xarray.c+212 -10 replies
12/16slub: Enable moving objects to/from specific nodesmm/Kconfig mm/slub.c+256 -00 replies
13/16slub: Enable balancing slabs across nodesmm/slub.c+120 -02 replies
14/16dcache: Provide a dentry constructorfs/dcache.c+21 -90 replies
15/16dcache: Implement partial shrink via Slab Movable Objectsfs/dcache.c+76 -00 replies
16/16dcache: Add CONFIG_DCACHE_SMOfs/dcache.c mm/Kconfig+11 -08 replies

Reviews trailers per patch

2 of 16 patches have a Reviewed-by or Acked-by.

PatchRoman Gushchin
1/16R-b
2/16
3/16R-b
4/16
5/16
6/16
7/16
8/16
9/16
10/16
11/16
12/16
13/16
14/16
15/16
16/16

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v5 thread

Cover letter [RFC PATCH v5 00/16] Slab Movable Objects (SMO)

Hi,

Another iteration of the SMO patch set, updates to this version are restricted to the XArray patches (#9 and #10 and tested with module implemented in #11).

Applies on top of Linus' tree (tag: v5.2-rc1).

This is a patch set implementing movable objects within the SLUB allocator. This is work based on Christopher Lameter's patch set:

https://lore.kernel.org/patchwork/project/lkml/list/?series=377335

The original code logic is from that set and implemented by Christopher. Clean up, refactoring, documentation, and additional features by myself. Responsibility for any bugs remaining falls solely with myself.

I am intending on sending a non-RFC version soon after this one (if XArray stuff is ok). If anyone has any objects with SMO in general please yell at me now.

Changes to this version:

Patch XArray to use a separate slab cache. Currently the radix tree and XArray use the same slab cache. Radix tree nodes can not be moved but XArray nodes can.

Matthew,

Does this fit in ok with your plans for the XArray and radix tree? I don't really like the function names used here or the init function name (xarray_slabcache_init()). If there is a better way to do this please mercilessly correct me :)

Thanks for looking at this,
Tobin.

Tobin C. Harding (16):
slub: Add isolate() and migrate() methods tools/vm/slabinfo: Add support for -C and -M options
slub: Sort slab cache list
slub: Slab defrag core
tools/vm/slabinfo: Add remote node defrag ratio output tools/vm/slabinfo: Add defrag_used_ratio output tools/testing/slab: Add object migration test module tools/testing/slab: Add object migration test suite
lib: Separate radix_tree_node and xa_node slab cache
xarray: Implement migration function for xa_node objects tools/testing/slab: Add XArray movable objects tests
slub: Enable moving objects to/from specific nodes
slub: Enable balancing slabs across nodes
dcache: Provide a dentry constructor
dcache: Implement partial shrink via Slab Movable Objects
dcache: Add CONFIG_DCACHE_SMO

 Documentation/ABI/testing/sysfs-kernel-slab |  14 +
 fs/dcache.c                                 | 110 ++-
 include/linux/slab.h                        |  71 ++
 include/linux/slub_def.h                    |  10 +
 include/linux/xarray.h                      |   3 +
 init/main.c                                 |   2 +
 lib/radix-tree.c                            |   2 +-
 lib/xarray.c                                | 109 ++-
 mm/Kconfig                                  |  14 +
 mm/slab_common.c                            |   2 +-
 mm/slub.c                                   | 819 ++++++++++++++++++--
 tools/testing/slab/Makefile                 |  10 +
 tools/testing/slab/slub_defrag.c            | 567 ++++++++++++++
 tools/testing/slab/slub_defrag.py           | 451 +++++++++++
 tools/testing/slab/slub_defrag_xarray.c     | 211 +++++
 tools/vm/slabinfo.c                         |  51 +-
 16 files changed, 2343 insertions(+), 103 deletions(-)
 create mode 100644 tools/testing/slab/Makefile
 create mode 100644 tools/testing/slab/slub_defrag.c
 create mode 100755 tools/testing/slab/slub_defrag.py
 create mode 100644 tools/testing/slab/slub_defrag_xarray.c
Signature · 1 line
2.21.0