]> git.ipfire.org Git - thirdparty/linux.git/commit
lib: objpool added: ring-array based lockless MPMC
authorwuqiang.matt <wuqiang.matt@bytedance.com>
Tue, 17 Oct 2023 13:56:50 +0000 (21:56 +0800)
committerMasami Hiramatsu (Google) <mhiramat@kernel.org>
Wed, 18 Oct 2023 13:35:36 +0000 (22:35 +0900)
commitb4edb8d2d4647a71a246d91fe34ff25c2c5f3481
tree3ceb410a8d74c411e2eeed26d9b2479e5dfea3c5
parentf843249cb6a151bfe7b955dfb93ff29663c258fb
lib: objpool added: ring-array based lockless MPMC

objpool is a scalable implementation of high performance queue for
object allocation and reclamation, such as kretprobe instances.

With leveraging percpu ring-array to mitigate hot spots of memory
contention, it delivers near-linear scalability for high parallel
scenarios. The objpool is best suited for the following cases:
1) Memory allocation or reclamation are prohibited or too expensive
2) Consumers are of different priorities, such as irqs and threads

Limitations:
1) Maximum objects (capacity) is fixed after objpool creation
2) All pre-allocated objects are managed in percpu ring array,
   which consumes more memory than linked lists

Link: https://lore.kernel.org/all/20231017135654.82270-2-wuqiang.matt@bytedance.com/
Signed-off-by: wuqiang.matt <wuqiang.matt@bytedance.com>
Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Signed-off-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
include/linux/objpool.h [new file with mode: 0644]
lib/Makefile
lib/objpool.c [new file with mode: 0644]