150 likes | 276 Views
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.
E N D
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?