Fix: call_rcu_thread() affinity failure
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 29 Jun 2015 22:45:07 +0000 (18:45 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 29 Jun 2015 23:06:36 +0000 (19:06 -0400)
commit8e3690dbc1ee221a9e375ce16621b5bfd93a61cc
treed089a2d60a472a1958d8c5eed263237966b5ebf2
parentd8a93addc87227dc5d4f6aa4cf79afb9b05c245b
Fix: call_rcu_thread() affinity failure

Make call_rcu_thread() affine itself more persistently

Currently, URCU simply fails if a call_rcu_thread() fails to affine
itself. This is problematic when execution is constrained by cgroup
and hotunplugged CPUs. This commit therefore makes call_rcu_thread()
retry setting its affinity every 256 grace periods, but only if it
detects that it migrated to a different CPU. Since sched_getcpu() is
cheap on many architectures, this check is less costly than going
through a system call.

Reported-by: Michael Jeanson <mjeanson@efficios.com>
Suggested-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
urcu-call-rcu-impl.h
This page took 0.024832 seconds and 4 git commands to generate.