rcu/tree: cache specified number of objects
authorUladzislau Rezki (Sony) <urezki@gmail.com>
Mon, 25 May 2020 21:47:52 +0000 (23:47 +0200)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 29 Jun 2020 18:59:25 +0000 (11:59 -0700)
commit53c72b590b3a0afd6747d6f7957e6838003e90a4
tree69d08c3d0302de8db65119df79246e94af25972c
parent69f08d3999dbef1553a3332b8055282dd3893b6c
rcu/tree: cache specified number of objects

In order to reduce the dynamic need for pages in kfree_rcu(),
pre-allocate a configurable number of pages per CPU and link
them in a list. When kfree_rcu() reclaims objects, the object's
container page is cached into a list instead of being released
to the low-level page allocator.

Such an approach provides O(1) access to free pages while also
reducing the number of requests to the page allocator. It also
makes the kfree_rcu() code to have free pages available during
a low memory condition.

A read-only sysfs parameter (rcu_min_cached_objs) reflects the
minimum number of allowed cached pages per CPU.

Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Documentation/admin-guide/kernel-parameters.txt
kernel/rcu/tree.c