Hello, For some architectures like armv8a - newer GCC generates a full barrier for the __sync operations compared to the __atomics .
This is seen to give some performance lag on these architectures when using __sync compared to the atomics apis under high contention. The C++ atomic ops looks good as well (http://mailman.nginx.org/pipermail/nginx-devel/2016-September/008805.html), However I would like to test it out and confirm. e.g sync_fetch_add with newer GCC: 58: f94007e0 ldr x0, [sp,#8] 5c: c85f7c01 ldxr x1, [x0] 60: 91000821 add x1, x1, #0x2 64: c802fc01 stlxr w2, x1, [x0] 68: 35ffffa2 cbnz w2, 5c <testing+0xc> 6c: d5033bbf dmb ish With atomics_fetch_add with SEQ_CST: 58: f94007e0 ldr x0, [sp,#8] 5c: c85ffc01 ldaxr x1, [x0] 60: 91000821 add x1, x1, #0x2 64: c802fc01 stlxr w2, x1, [x0] 68: 35ffffa2 cbnz w2, 5c <testing+0xc> Thanks Debayan -----Original Message----- From: Maxim Dounin [mailto:[email protected]] Sent: Monday, December 4, 2017 8:35 PM To: [email protected] Cc: debayang.qdt <[email protected]> Subject: Re: [PATCH] Configure: Prefer gcc __atomic builtins instead of older __sync builtins Hello! On Sun, Dec 03, 2017 at 09:11:52PM +0530, Debayan Ghosh wrote: > # HG changeset patch > # User Debayan Ghosh <[email protected]> > # Date 1511884462 -19800 > # Tue Nov 28 21:24:22 2017 +0530 > # Node ID 4576e7c90ed42da3af67d90f624b34dd9285a658 > # Parent fc0d06224edac2c7cfbfd9a4def478f285d9957b > Configure: Prefer gcc __atomic builtins instead of older __sync > builtins > > It is desirable to use the newer GCC __atomic builtins when using > later versions of GCC , compared to the legacy __sync atomic builtins. > Ref: https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html Any practical reasons for the change? Either way, I would rather suggest looking at C11 atomic ops instead, see here: http://mailman.nginx.org/pipermail/nginx-devel/2016-September/008805.html Though I don't think it's practical either. [...] -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-devel mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-devel
