Ship your Critical Section, Not Your Data: Enabling Transparent Delegation with TCLOCKS
summary
TCLocks implements transparent delegation by saving a waiter’s CPU context (IP, SP, registers) at lock and unlocking, making the queue head act as a server that runs waiters’ critical sections via lightweight context switches and batching, plus an ephemeral stack to handle interrupts and parking. Implemented in kernel and user space, it reduces shared-data movement and cuts critical-section time; evaluation shows up to 5.2× speedup on LevelDB, ~2× in a kernel map-reduce benchmark, and up to 3.8× cross-socket, with a 12% hit at 2–4 cores.
AI-written summary · about
chapters (11)
- 0:00TCLOCKS and delegation intro
- 1:26Why locks matter for performance
- 3:34Traditional lock limitations
- 5:39Delegation locks challenges
- 6:22TCLOCKS goals and questions
- 8:10TCLOCKS transparent delegation
- 10:39Handling interrupts and cases
- 11:20Performance evaluation setup
- 12:45Microbenchmark results
- 13:06Kernel/user-space benchmarks
- 13:47Conclusion and future
related talks
55m “High Performance C++ Concurrent Transactional Data Structures"
48m“Is Parallel Programming still hard? PART 2 of 2”
15mShiftLock: Mitigate One-sided RDMA Lock Contention via Handover
25mTackling Contention : The Monster in sync.Locker
50m“Multithreading is the answer. What is the question? (part 2 of 2)”
15mCitron: Distributed Range Lock Management with One-sided RDMA
26mConcurrency: Unlocking a Solution
18mFARLock: Asymmetric RDMA Locking Made Fair
