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:42:22 +0000 (21:42 -0400)
commitd34d9b3b9d528d68e956edd0e391718c41feef41
tree6437a9888fdefcb694368d78b1e22fab9f407413
parent9d4624e51328aadc217592fc519b0d6760508fbc
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.024743 seconds and 4 git commands to generate.