From: Mathieu Desnoyers Date: Wed, 6 Sep 2017 20:35:59 +0000 (-0400) Subject: Fix: don't use membarrier SHARED syscall command in liburcu-bp X-Git-Tag: v0.10.1~2 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=11486a15008b9848f52b55047b2e3f2db7ac1034;p=userspace-rcu.git Fix: don't use membarrier SHARED syscall command in liburcu-bp One main user of liburcu-bp (lttng-ust) invokes synchronize_rcu() repeatedly, without batching (does not use call_rcu). Those delays introduced by sys_membarrier SHARED command significantly impacts application startup time. Therefore, revert to not using the membarrier SHARED command. Signed-off-by: Mathieu Desnoyers --- diff --git a/src/urcu-bp.c b/src/urcu-bp.c index c0fac83..ebe96c5 100644 --- a/src/urcu-bp.c +++ b/src/urcu-bp.c @@ -593,8 +593,13 @@ void rcu_sys_membarrier_status(int available) static void rcu_sys_membarrier_status(int available) { - if (available) - urcu_bp_has_sys_membarrier = 1; + /* + * membarrier has blocking behavior, which changes the + * application behavior too much compared to using barriers when + * synchronize_rcu is used repeatedly (without using call_rcu). + * Don't use membarrier for now, unless its use has been + * explicitly forced when building liburcu. + */ } #endif