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.11.0~52 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=64478021edcf7a5ac3bca3fa9e8b8108d2fbb9b6;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