]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
maple_tree: use percpu sheaves for maple_node_cache
authorVlastimil Babka <vbabka@suse.cz>
Wed, 3 Sep 2025 12:59:55 +0000 (14:59 +0200)
committerVlastimil Babka <vbabka@suse.cz>
Mon, 29 Sep 2025 07:22:57 +0000 (09:22 +0200)
Setup the maple_node_cache with percpu sheaves of size 32 to hopefully
improve its performance. Note this will not immediately take advantage
of sheaf batching of kfree_rcu() operations due to the maple tree using
call_rcu with custom callbacks. The followup changes to maple tree will
change that and also make use of the prefilled sheaves functionality.

Reviewed-by: Sidhartha Kumar <sidhartha.kumar@oracle.com>
Reviewed-by: Suren Baghdasaryan <surenb@google.com>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>
lib/maple_tree.c

index 4f0e30b57b0cef9e5cf791f3f64f5898752db402..d034f170ac897341b40cfd050b6aee86b6d2cf60 100644 (file)
@@ -6040,9 +6040,14 @@ bool mas_nomem(struct ma_state *mas, gfp_t gfp)
 
 void __init maple_tree_init(void)
 {
+       struct kmem_cache_args args = {
+               .align  = sizeof(struct maple_node),
+               .sheaf_capacity = 32,
+       };
+
        maple_node_cache = kmem_cache_create("maple_node",
-                       sizeof(struct maple_node), sizeof(struct maple_node),
-                       SLAB_PANIC, NULL);
+                       sizeof(struct maple_node), &args,
+                       SLAB_PANIC);
 }
 
 /**