-
Type: Improvement
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: Concurrency, Performance
-
None
-
Fully Compatible
-
Platforms 2017-07-10
The vector of mutexes inside catalog/util/partitioned.h does not ensure that the locks are on different cache lines.
Ideally, we would use C++17's std::hardware_destructive_interference_size and alignas to fix this, however, not all of our toolchains currently support the required extended alignment.
Instead, as a simpler fix, we should just allocate the mutexes on the heap, which is very likely to ensure that they land on different cachelines.
- depends on
-
SERVER-29712 Polyfill std::hardware_{con,de}structive_interference_size
- Closed
- is duplicated by
-
SERVER-29704 Align locks in mongo::Partitioned to avoid false sharing
- Closed
- related to
-
SERVER-21754 CursorManager Lock is very hot
- Closed