Linux 6.18 Merges Fix for "Catastrophic Performance Issue" on 64-Bit ARM
10 days ago
- #Linux
- #ARM64
- #Performance
- Linux 6.18 kernel merges a fix for a 'catastrophic performance issue' on 64-bit ARM (ARM64).
- The issue involved high latency in per-CPU atomic operations, particularly affecting ARM Neoverse V2, with operations taking around 100ns for a srcu_read_lock()/srcu_read_unlock() pair.
- Disabling Linux kernel support for Large System Extensions (LSE) atomic instructions (introduced in ARMv8.1) improved performance.
- The solution involves using load LSE atomics (LDADD/LDCLR/LDSET) for non-return per-CPU atomic operations, reducing latency significantly.
- The fix was merged ahead of Linux 6.18-rc6 and is expected to be part of the stable release by the end of November.
- Willy Tarreau noted similar performance improvements (2-7%) in haproxy after applying analogous changes to atomics on ARM 64-bit hardware.