Professional Documents
Culture Documents
Speculate Read-Write Locks
Speculate Read-Write Locks
Read-Write Locks
Shady Issa Tiago Lopes Paolo Romano
04/12/18
Layout
• Introduction and Background
• Evaluation
• Conclusion
4/12/2018 2 Middleware 18
Introduction
• or
4/12/2018 3 Middleware 18
Hardware Lock Elision
4/12/2018 4 Middleware 18
Hardware Lock Elision
Thread 1 Thread 2
lock()
X=1
unlock()
lock()
Y=1
unlock()
4/12/2018 5 Middleware 18
Hardware Lock Elision
Thread 1 Thread 2
BeginTX() BeginTx()
X=1 Y=1
EndTx() EndTx()
4/12/2018 6 Middleware 18
Hardware Lock Elision
Thread 1 Thread 2
BeginTX() BeginTx()
X=1 X=1
EndTx() ABORT EndTx()
4/12/2018 7 Middleware 18
Hardware Lock Elision
4/12/2018 8 Middleware 18
Hardware Read-Write Lock
Elision
• Relies on Suspend/Resume
Only in feature to ensure
POWER8
correctness processor
Pascal Felber, Shady Issa, Alexander Matveev, and Paolo Romano. Hardware read-write lock elision. EuroSys ’16
4/12/2018 9 Middleware 18
Speculative Read-Write
Locks
4/12/2018 10 Middleware 18
Speculative Read-Write
X=0
Locks X=0
Thread 1 Thread 2
readlock()
BeginTx()
read X
returns 0 X=1
EndTx()
read X
returns 1
Inconsistent
values
4/12/2018 11 Middleware 18
Speculative Read-Write
X=0
Locks X=0
Thread 1 Thread 2
readlock()
BeginTx()
read X
returns 0 X=1
EndTx()
read X
returns 0
HTM hides Abort if there are
updates active readers
4/12/2018 12 Middleware 18
Speculative Read-Write
Locks
4/12/2018 13 Middleware 18
Scheduling Techniques
• Writers may starve in read-intensive workloads
• Reader Synchronization
• Writer Syncrhotnization
4/12/2018 14 Middleware 18
Reader Synchronization
4/12/2018 15 Middleware 18
Reader Synchronization
Thread 1 Thread 2
BeginTx()
readlock()
4/12/2018 16 Middleware 18
Reader Synchronization
Thread 1 Thread 3
• inspects the status of
other threads
• wait with Thread 1 for
readlock() Thread 2
waiting for
Thread 2
readlock()
4/12/2018 17 Middleware 18
Reader Synchronization
Thread 1 Thread 3 Thread 2
BeginTx()
readlock()
readlock()
EndTx()
4/12/2018 18 Middleware 18
Writer Synchronization
4/12/2018 19 Middleware 18
Writer Synchronization
Thread 1 Thread 2
readlock()
BeginTx()
abort
• publish EndTx()
expected overlap between BeginTx()
end time readers and writers
abort
EndTx()
unlock()
• writers start
checking for active
readers here
4/12/2018 20 Middleware 18
Speculative Read-Write
Locks
4/12/2018 21 Middleware 18
What was not discussed
4/12/2018 22 Middleware 18
Evaluation: TPC-C
4/12/2018 23 Middleware 18
TPC-C: Intel Broadwell
4
Throughput (10 Tx/s) Readers Writers
6 10 18
>3x
4/12/2018 24 Middleware 18
TPC-C: POWER8
4
Throughput (10 Tx/s) Readers Writers
3.5 8 14
~2x
4/12/2018 25 Middleware 18
Conclusions and Future Work
4/12/2018 26 Middleware 18