-
Type: Task
-
Resolution: Done
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
TheMoon-StorEng - 2023-09-19
Summary
WiredTiger requires the __atomic operations to provide a full barrier. That is not always the case, for instance, in the case of ARM64 platforms that do not have LSE atomic operations. This ticket will investigate the next steps for the non-LSE ARM64 platforms.
Details
This is follow on work from WT-8959 where we studied the implementation of the __atomic operations on the ARM platform.
We concluded that like x86_64, ARM64 with LSE atomics has a single instruction for CAS operation that is also a full memory barrier. We also realised that ARM64 platforms without the LSE atomics use load-acquire and store-release operations for atomic operations that do not equate to a full memory barrier that the WiredTiger requires.
WiredTiger abstracts out the platform-dependent atomic code using some macros. The usage of the macros assumes a full barrier and hence is incorrect on the non-LSE ARM platforms. These macros are frequently used in the concurrent code that is sensitive to both the performance and correctness.
Next Steps
Initiate a conversation with the stakeholders and come up with a solution and a timeline.
- depends on
-
SERVER-71772 Update ARM builds to target armv8.2-a on older branches
- Closed
- is related to
-
SERVER-72505 Remove -moutline-atomics as LSE atomics are implied by the minimum target armv8.2-a
- Closed
- related to
-
WT-8959 Investigate memory barriers with atomic operations on the ARM64 platforms
- Closed