mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-19 00:51:37 +01:00
Gcc 10.2 implements outline atomics on aarch64. The replace all inline atomic ops with a function call that checks if the machine supports LSE atomics. This comes with a small cost but allows modern machines to scale much better than with the old LL/SC ones even when built for full 8.0 compatibility. This patch enables the use of the __atomic_compare_exchange() builtin for the double-word CAS when detected as available instead of using the hand-written LL/SC version. The extra cost is negligible because we do very few DWCAS operations (essentially FD migrations and shared pools) so the cost is low but under high contention it can still be beneficial. As expected no performance difference was measured in either direction on 4-core machines with this change. This could be backported to 2.3 if it was shown that FD migrations were representing a significant source of contention, but for now it does not appear to be needed.