-
Type:
New Feature
-
Resolution: Done
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
ASeasonTooMany-2023-08-22, BermudaTriangle- 2023-09-05, TheMoon-StorEng - 2023-09-19, NachoCheese - 2023-10-03, Joker - StorEng - 2023-10-17, Asparagus-StorEng - 2023-10-31
-
8
It involves quite significant risk if we migrate WiredTiger to the C memory model. It is may not only be a big change of the algorithms but also the way of thinking.
To reduce the risk involved, Marc proposes us to take a less radical approach. The C memory model offers the atomic_thread_fences, which is closer to the semantics of the WiredTiger barriers (they are still very different in terms the semantics though). We can first try to replace the WiredTiger barriers with the C memory model fences and keep the code and algorithms mostly as it is in the current WireTiger way. It is expected to be a less intrusive change than reimplementing the algorithms directly in a pure C memory model way. Then after that, we can then gradually migrate the algorithms to the new implementations using the C memory model.
In this ticket, we want to explore the following questions:
- whether it is feasible to map the WiredTiger barriers to the C memory model fences?
- Does it improve easiness of reasoning or make it worse as it mixes the two ways of thinking?
- How's the performance expected to be in that case?
- Does it really mitigate the risk compared to directly migrating to the C memory model? I don't see a very radical change of the WiredTiger algorithms even with the implementations purely using the C memory model.