Skip to content

RFC slub: irqless/lockless slow allocation paths

Christoph Lameter linux-mm netdev 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest18 patches 20 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/18slub: Get rid of the node fieldinclude/linux/slub_def.h mm/slub.c+6 -104 replies
2/18slub: Separate out kmem_cache_cpu processing from deactivate_slabmm/slub.c+12 -121 reply
3/18slub: Extract get_freelist from __slab_allocmm/slub.c+32 -254 replies
4/18slub: Use freelist instead of "object" in __slab_allocmm/slub.c+22 -182 replies
5/18slub: Simplify control flow in __slab_alloc()mm/slub.c+8 -82 replies
6/18slub: Use page variable instead of c->page.mm/slub.c+10 -72 replies
7/18slub: pass page to node_match() instead of kmem_cache_cpu structuremm/slub.c+6 -41 reply
8/18slub: enable use of deactivate_slab with interrupts onmm/slub.c+7 -60 replies
9/18slub: Run deactivate_slab with interrupts enabledmm/slub.c+3 -20 replies
10/18slub: Enable use of get_partial with interrupts enabledmm/slub.c+3 -20 replies
11/18slub: Acquire_slab() avoid loopmm/slub.c+13 -100 replies
12/18slub: Remove kmem_cache_cpu dependency from acquire slabmm/slub.c+11 -150 replies
13/18slub: Add functions to manage per cpu freelistsmm/slub.c+52 -00 replies
14/18slub: Decomplicate the get_pointer_safe call and fixup statisticsmm/slub.c+8 -50 replies
15/18slub: new_slab_objects() can also get objects from partial listmm/slub.c+8 -50 replies
16/18slub: Drop page field from kmem_cache_cpumm/slub.c+65 -850 replies
17/18slub: Move __slab_free() into slab_free()mm/slub.c+84 -890 replies
18/18slub: Move __slab_alloc() into slab_alloc()mm/slub.c+73 -970 replies

Reviews trailers per patch

5 of 18 patches have a Reviewed-by or Acked-by.

PatchDavid Rientjes
1/18
2/18A-b
3/18A-b
4/18
5/18A-b
6/18A-b
7/18A-b
8/18
9/18
10/18
11/18
12/18
13/18
14/18
15/18
16/18
17/18
18/18

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

Read the v1 thread

Cover letter [rfc 00/18] slub: irqless/lockless slow allocation paths

This is a patchset that makes the allocator slow path also lockless like the free paths. However, in the process it is making processing more complex so that this is not a performance improvement. I am going to drop this series unless someone comes up with a bright idea to fix the following performance issues:

1. Had to reduce the per cpu state kept to two words in order to be able to operate without preempt disable / interrupt disable only through cmpxchg_double(). This means that the node information and the page struct location have to be calculated from the free pointer. That is possible but relatively expensive and has to be done frequently in fast paths.

2. If the freepointer becomes NULL then the page struct location can no longer be determined. So per cpu slabs must be deactivated when the last object is retrieved from them causing more regressions.

If these issues remain unresolved then I am fine with the way things are right now in slub. Currently interrupts are disabled in the slow paths and then multiple fields in the kmem_cache_cpu structure are modified without regard to instruction atomicity.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>