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>
Tue, 30 Jun 2015 01:43:37 +0000 (21:43 -0400)
commit5a631bd917d9173deda3fa06cf2ec22ab9db3194
tree68c3caa4b195dbd33078c7e6eda597a4b83b5c0a
parented42f6768d2116c47ca9ef2c17927a45f6b98f04
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.024734 seconds and 4 git commands to generate.