Enhancing Concurrency with the Two-Lock Queue Algorithm
This presentation introduces the Two-Lock Concurrent Queue Algorithm developed by Maged M. Michael and Michael L. Scott at the University of Rochester. The algorithm aims to provide higher concurrency and improved performance on shared memory multiprocessor machines by employing advanced locking techniques. It contrasts single-lock algorithms, which lock entire queues, with two-lock systems that only lock the head or tail nodes, thereby reducing contention. The presentation outlines queue operations, critical locking mechanisms, and the impact of preemption and exponential backoff strategies on performance.
Enhancing Concurrency with the Two-Lock Queue Algorithm
E N D
Presentation Transcript
A Two-Lock Concurrent Queue Algorithm Maged M. Michael, Michael L. Scott University of Rochester Presented by Hussain Tinwala
Two-Lock Algorithm Goals • Provide a higher degree of concurrency • Use better blocking techniques • Improve performance on shared memory multiprocessor machines
1) Create a new node Node(5) 2) Insert the node and update the Tail Head(1) Node(2) Node(3) Node(4) Tail(5) Queue Operations: Enqueue • Enqueue Head(1) Node(2) Node(3) Tail(4)
1) Update the Head Node(1) Head(2) Node(3) Node(4) Tail(5) 2) Free the first node Node(2) Node(3) Node(4) Tail(5) Queue Operations: Dequeue • Dequeue Head(1) Node(2) Node(3) Node(4) Tail(5)
P1 P2 P6 P10 P3 P7 P4 P8 Head(1) Node(2) Node(3) Tail(4) P5 P9 What do single-lock algorithms do? • They lock the entire queue • Example: 10 processes want to operate on the queue at the same time {P1, …, P10 } High Contention
What do two locks do? (1) • Only lock the Head node or the Tail node • Enqueue: only needs to read/write the Tail node • Dequeue: only needs to read/write the Head node
D1 E1 D2 E4 D3 E2 D4 E3 Head(1) Node(2) Node(3) Tail(4) D5 E5 What do two locks do? (2) • Example: 10 processes. Enqueuing processes {E1, …, E5}Dequeuing processes {D1, …, D5} Increases Concurrency And Decreases Contention
Two Critical Mechanisms There are two kinds of processes: • Processes that have acquired a lock • Processes that are trying to acquire a lock Issues: • Dealing with preemption of processes with locks (Preemption-safe locking) • Dealing with processes that keep trying to acquire a lock (Bounded exponential backoff)
Preemption-Safe Lockingor Temporary Non-Preemption(processes holding locks) Note: There is a bound on how much extra time the process can take after which the scheduler automatically forces preemption.
Bounded Exponential Backoff(processes trying to acquire a lock) • Bounded Exponential Backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process. Repeated attempts are exponentially delayed (1, 2, 4, 8…) up to a predefined bound. • The feedback here is that the process fails to acquire the lock
Performance of Backoff From: T. E. Anderson. The Performance of Spin Lock Alternatives for Shared-Memory Multiprocessors. IEEE Transactions on Parallel and Distributed Systems.
Single-Lock v. Two-Lock (1) • The two techniques: preemption-safe locking and bounded exponential backoff can also be used with a single-lock algorithm • If both algorithms (single-lock and two-lock) use the two techniques, who wins? • Performance depends on: • Number of processors • Number of programs per processor (level of multiprogramming)
Single Lock v. Two Lock (2) Dedicated Multiprocessor: One process per processor Crossover points 2 processes/processor: 5 3 processes / processor: 7
Verdict • It depends • Single-lock better at MP=1, #Processors=2 due to cache misses • Higher degree of multiprogramming means higher chance of preemption while holding a lock, therefore, two-lock suffers • Two-lock good candidate for dedicated multiprocessor machines
End of Slide Show Questions/Comments?