]> git.baikalelectronics.ru Git - kernel.git/commit
rcu-tasks: Set ->percpu_enqueue_shift to zero upon contention
authorPaul E. McKenney <paulmck@kernel.org>
Thu, 3 Feb 2022 00:34:40 +0000 (16:34 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Tue, 8 Feb 2022 18:13:22 +0000 (10:13 -0800)
commit6d33caf1c070d42e1d8b9ac5e0ecc6316a3ffd7a
tree9ffd61b4b7a88dc9d1cb00cdea5e28d0f2dce0b1
parent0263e9c39c3c09fdbb209aecc71555ea7d5a8de0
rcu-tasks: Set ->percpu_enqueue_shift to zero upon contention

Currently, call_rcu_tasks_generic() sets ->percpu_enqueue_shift to
order_base_2(nr_cpu_ids) upon encountering sufficient contention.
This does not shift to use of non-CPU-0 callback queues as intended, but
rather continues using only CPU 0's queue.  Although this does provide
some decrease in contention due to spreading work over multiple locks,
it is not the dramatic decrease that was intended.

This commit therefore makes call_rcu_tasks_generic() set
->percpu_enqueue_shift to 0.

Reported-by: Neeraj Upadhyay <quic_neeraju@quicinc.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tasks.h