Beruflich Dokumente
Kultur Dokumente
Read-Write Lock
Elision
Shady Issa Alexander
Pascal Felber Paolo Romano Matveev
Multicores are everywhere
Main memory
Main memory
complexity
- deadlocks
Main memory - livelocks
- priority inversions
- convoy effects
Main memory
Transactional memory
atomic{
Core 1 Core 2 Core 3 Core 4 if(bal>amount)
withdraw(amount)
}
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 6
Hardware Transactional Memory
r(A) w(B)
Thread 1
lock unlock
w(X) w(Y)
Thread 2
lock lock unlock
r(A) w(B)
Thread 1
lock unlock
Begin Commit
H/W Tx H/W Tx
w(X) w(Y)
Thread 2
lock unlock
Begin Commit
H/W Tx H/W Tx
r(A) r(X)
Thread 1
lock
Begin
acquire
H/W Tx abort lock
w(X) normally
Thread 2
lock
Begin
H/W Tx
r(A) r(X)
Thread 1
lock
Begin
acquire
H/W Tx abort lock
w(X) normally
Thread 2
lock capacity
Begin prohibited instructions
H/W Tx page faults
TLB miss
r(X) r(?)
Reader
r-lock r-unlock
w(X) w(Y)
Writer
w-lock w-unlock
Begin Commit
HW Tx HW Tx
r(X) r(?)
Reader
r-lock r-unlock
? = Y
w(X) w(Y)
Writer
w-lock w-unlock
Begin Commit
H/W Tx H/W Tx
r(X) r(?)
Reader
r-lock r-unlock
? = Y
w(X) w(Y)
Writer
w-lock w-unlock w-unlock
Begin Commit
H/W Tx H/W Tx
r(X) r(Y)
Reader
r-lock r-unlock
w(X) w(Y)
Writer abort
w-lock w-unlock
Begin Commit
H/W Tx H/W Tx
r(X) r(?)
Reader
r-lock r-unlock
wait for concurrent readers
active here
w(X) w(Y)
Writer
w-lock w-unlock w-unlock
Begin Commit
H/W Tx H/W Tx
Writer abort
21/4/16
w-unlock Hardware Read-Write Lock Elision - Eurosys 2016
w-unlock 19
Hardware read-write lock elision
r(X) r(?)
Reader
r-lock r-unlock
wait for concurrent readers
active here
w(X) w(Y)
Writer
w-lock w-unlock
Begin Suspend Resume Commit
HW Tx HW Tx HW Tx HW Tx
RW-LEOPT
RW-LEPES
HTM HLE
ROT
1
BRLock
ROT RWL
Time (s)
GL SGL
GL
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 27
Optimistic Pessimestic
10% write locks
RW-LEOPT
RW-LEPES
HTM HLE
ROT
1
BRLock
ROT RWL
Time (s)
GL SGL
GL
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 28
Synthetic benchmarks
RW-LEOPT
RW-LEPES
Size of Txs
1 HLE
BRLock
RWL
Time (s)
SGL
21/4/16
Degree of contention
Hardware Read-Write Lock Elision - Eurosys 2016 29
Stress test – performance
10% writers
RW-LE
OPT 1
RW-LEPES
HLE
BRLock
1 RWL
SGL 10% write locks
Large Txs
Time (s)
Time (s)
0.1
RW-LEOPT
8X 7X RW-LEPES
0.1 0.01
16 32
1
Number of threads
64 80 16 32
Number of threads
64 80 HLE
10 BRLock
1 RWL
Time (s)
Small Txs
SGL
Time (s)
Time (s)
1
10X
0.1
0.1
16 32 64 80
Number of threads 16 32 64 80
Number of threads
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 30
Low contention High contention
Stress test – abort rate
10% writers
Large Txs
Aborts (%)
Aborts (%)
ROT capacity
ROT conflicts
HTM capacity
HTM non-tx
Small Txs
Aborts (%)
Time (s)
Time (s)
0.1
RW-LEOPT
RW-LEPES
0.01
0.1
16 32
1 64 80 16 32 64 80 HLE
Number of threads Number of threads
100
10
BRLock
RWL
Time (s)
Small Txs
10
SGL
Time (s)
Time (s)
1
-25% 0.1
-10%
0.1
16 32 64 80 16 32 64 80
Number of threads Number of threads
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 32
Low contention High contention
Synthetic benchmarks
HTM ROT SGL Uninstrumented HTM ROT SGL Uninstrumented
1% write locks 10% write locks 90% write locks 1% write locks 10% write locks 90% write locks
100 100
High capacity
Commits (%)
Commits (%)
80 80
60 60
40 40
20 20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80) Number of threads (2,4,8,16,32,64,80)
100 100
Commits (%)
Commits (%)
80 80
60 60
40 40
20 20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80) Number of threads (2,4,8,16,32,64,80)
1% write locks 10% write locks 90% write locks 1% write locks 10% write locks 90% write locks
100 100
High capacity
Aborts (%)
HTM capacity HTM capacity
60 HTM non-tx 60 HTM non-tx
HTM tx HTM tx
40 40
20 20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80) Number of threads (2,4,8,16,32,64,80)
1% write locks 10% write locks 90% write locks 1% write locks 10% write locks 90% write locks
100 ROT capacity
100 ROT capacity
Low capacity
Aborts (%)
HTM capacity HTM capacity
60 HTM non-tx 60 HTM non-tx
HTM tx HTM tx
40 40
20 20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80) Number of threads (2,4,8,16,32,64,80)
100
OPT
RW-LE HLE
PES BRLock
RW-LE
10 RWL
SGL
1
0.1
16 32 64 80 16 32 64 80 16 32 64 80
Number of threads
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 35
TPC-C
HTM ROT SGL Uninstrumented
1% write locks 10% write locks 90% write locks
100
Commits (%)
80
60
40
20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (1,4,8,16,32,64,80)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 36
TPC-C
1% write locks 10% write locks 50% write locks
100 ROT capacity
ROT conflicts
80 Lock aborts
Aborts (%)
HTM capacity
60 HTM non-tx
HTM tx
40
20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (1,4,8,16,32,64,80)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 37
STMbench7 4X
10
OPT HLE
RW-LE PES
8 RW-LE BRLock
RWL
6 SGL
4
2
0
16 32 64 80 16 32 64 80 16 32 64 80
Number of threads
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 38
STMbench7
HTM ROT SGL Uninstrumented
10% write locks 50% write locks 90% write locks
100
Commits (%)
80
60
40
20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 39
STMbench7
10% write locks 50% write locks 90% write locks
100 ROT capacity
ROT conflicts
80 Lock aborts
Aborts (%)
HTM capacity
60 HTM non-tx
HTM tx
40
20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (2,4,8,16,32,64,80)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 40
Kyoto Cabinet 2X
8 RW-LEOPT HLE
RW-LEPES BRLock
6 Orig
SGL
4
2
0
16 32 64 16 32 64 16 32 64
Number of threads
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 41
Kyoto Cabinet
HTM ROT SGL Uninstrumented
<1% write locks 5% write locks 10% write locks
100
Commits (%)
80
60
40
20
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (1,4,8,16,32,64)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 42
Kyoto Cabinet
<1% write locks 5% write locks 10% write locks
50 ROT capacity
ROT conflicts
40 Lock aborts
Aborts (%)
HTM capacity
30 HTM non-tx
HTM tx
20
10
0 RW-LE RW-LE HLE RW-LE RW-LE HLE RW-LE RW-LE HLE
OPT PES OPT PES OPT PES
Number of threads (1,4,8,16,32,64)
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 43
Conclusions
readers without
instrumentation
writers using
H/W Tx
readers without
instrumentation
writers using
H/W Tx
10X
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 45
Conclusions
readers without
instrumentation
suspend/resume ROTs
writers using
H/W Tx
10x
21/4/16 Hardware Read-Write Lock Elision - Eurosys 2016 46