[SERVER-80760] Partition shared state on `ServiceContext` Created: 05/Sep/23  Updated: 24/Jan/24

Status: Open
Project: Core Server
Component/s: Internal Code
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Amirsaman Memaripour Assignee: Backlog - Service Architecture
Resolution: Unresolved Votes: 0
Labels: perf-8.0, perf-tiger, perf-tiger-handoff, perf-tiger-project-candidates
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
Assigned Teams:
Service Arch
Sprint: Service Arch 2023-10-02, Service Arch 2023-10-16, Service Arch 2023-10-30, Service Arch 2023-11-13, Security 2023-09-18
Participants:

 Description   

We maintain several shared data-structures on ServiceContext. In particular, the following are modified as part of constructing and destroying instances of OperationContext:

  • The unordered map that maps operation ids to clients, and a mutex that synchronizes accesses to this data structure.
  • The registry that allows checking out unique operation ids.

Sharing these across many cores result in frequent cache-line evictions and performance regressions (see PERF-4626 for detailed analysis and a PoC that measures potential gains from partitioning these structures).


Generated at Thu Feb 08 06:44:30 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.