HardwareRead-WriteLockElision
PascalFelberShadyIssa
PaoloRomanoAlexanderMatveev
Multicoresareeverywhere
HardwareRead-WriteLockElision- Eurosys201621/4/16 2
Parallelprogramming
Mainmemory
Core1 Core2 Core3 Core4
HardwareRead-WriteLockElision- Eurosys201621/4/16 3
Parallelprogramming
Mainmemory
Core1 Core2 Core3 Core4
HardwareRead-WriteLockElision- Eurosys201621/4/16 4
Parallelprogramming
Mainmemory
Core1 Core2 Core3 Core4
complexity- deadlocks- livelocks- priorityinversions- convoyeffects
HardwareRead-WriteLockElision- Eurosys201621/4/16 5
Parallelprogramming
Mainmemory
Core1 Core2 Core3 Core4
Transactionalmemory
atomic{if(bal>amount)
withdraw(amount)}
HardwareRead-WriteLockElision- Eurosys201621/4/16 6
HardwareTransactionalMemory
HardwareRead-WriteLockElision- Eurosys201621/4/16 7
Hardwarelockelision
Thread1lock
r(A)
unlock
w(B)
lock
w(X) w(Y)
unlockThread2
lock
HardwareRead-WriteLockElision- Eurosys201621/4/16 8
Hardwarelockelision
Thread1lock
r(A)
unlock
w(B)
lock
w(X) w(Y)
unlockThread2
BeginH/WTx
CommitH/WTx
BeginH/WTx
CommitH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 9
Hardwarelockelision
Thread1lock
r(A) r(X)
lock
w(X)Thread2
BeginH/WTx
BeginH/WTx
abortacquirelock
normally
HardwareRead-WriteLockElision- Eurosys201621/4/16 10
Hardwarelockelision
Thread1lock
r(A) r(X)
lock
w(X)Thread2
BeginH/WTx
BeginH/WTx
abortacquirelock
normally
capacityprohibited instructions
pagefaultsTLBmiss
HardwareRead-WriteLockElision- Eurosys201621/4/16 11
Read-writeLocks
readmode writemode
concurrentreaders
✔ sequentialwriters✘
readdominatedworkloads
blocksreaders✘
HardwareRead-WriteLockElision- Eurosys201621/4/16 12
Hardwareread-writelockelision
readersrunwithoutinstrumentation:• noH/WTxs• noS/Wtrackingof
readlocations• nolockacquisition
writersruninH/WTxs:• nolockacquisition• H/Wtrackingof
read/writelocations
HardwareRead-WriteLockElision- Eurosys201621/4/16 13
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(?)
w-lock
w(X) w(Y)
w-unlockBeginHWTx
CommitHW Tx
HardwareRead-WriteLockElision- Eurosys201621/4/16 14
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(?)
w-lock
w(X) w(Y)
w-unlock
?=Y
BeginH/WTx
CommitH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 15
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(?)
w-lock
w(X) w(Y)
w-unlock
?=Y
w-unlockBeginH/WTx
CommitH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 16
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(Y)
w-lock
w(X) w(Y)
w-unlockabort
BeginH/WTx
CommitH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 17
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(?)
w-lock
w(X) w(Y)
w-unlock w-unlock
waitforconcurrentreadersactivehere
BeginH/WTx
CommitH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 18
Hardwareread-writelockelisionR1
Writer
r-unlock
r-unlock
w-unlock w-unlock
reader state
R1 inactive
R2 active
. .
R2r-lock
reader state
R1 inactive
R2 inactive
. .
abortHardwareRead-WriteLockElision- Eurosys201621/4/16 19
Hardwareread-writelockelision
Reader
Writer
r-lock
r(X)
r-unlock
r(?)
w-lock
w(X) w(Y)
SuspendHWTx
ResumeHWTx
CommitHWTx
w-unlockBeginHWTx
waitforconcurrentreadersactivehere
HardwareRead-WriteLockElision- Eurosys201621/4/16 20
Hardwareread-writelockelisionWritesuseH/WTxs
concurrencyamongwriters
✔ Txs maynevercommit• fallbacklockisamust• Readersmustsynchronize
withlockholder
✘
HardwareRead-WriteLockElision- Eurosys201621/4/16 21
Hardwareread-writelockelision
Reader
Writerinlockfallback
r-lock
r(X)
r-unlock
w-lock
w(X) w(Y)
waitforconcurrentreaders
Releaselock
w-unlockAcquirelock
r(Y)
r-lock
waitforlockchecklock
oldX
HardwareRead-WriteLockElision- Eurosys201621/4/16 22
RollbackOnlyTransactions
Thread1lock
r(X)
lock
w(X)Thread2
BeginH/WTx
BeginH/WTx
abortlock
r(X)
lock
w(X)
BeginROT
BeginROT
r(X)
unlockCommitROT
unlockCommitROT
HardwareRead-WriteLockElision- Eurosys201621/4/16 23
RollbackOnlyTransactions
Thread1lock
r(X)
lock
w(X)Thread2
BeginH/WTx
BeginH/WTx
abortlock
r(X)
lock
w(X)
BeginROT
BeginROT
r(X)
unlockCommitROT
unlockCommitROT
oldX
newX
HardwareRead-WriteLockElision- Eurosys201621/4/16 24
UsingRollbackOnlyTransactions(ROTs)
atomic✔ notrackingofreads✘
notserializable✘allowlargerTxs✔
noneedforSuspend/Resume✔ singlewriter✘
HardwareRead-WriteLockElision- Eurosys201621/4/16 25
Experiments
syntheticbenchmarks
degreeofcontention
lengthofTransactions
complexbenchmarks
andapplications
STMBench7
TPC-C
KyotoCabinet
10cores
80H/Wthreads
HardwareRead-WriteLockElision- Eurosys201621/4/16 26
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
10% write locks
RW-LEOPT
RW-LEPES
HLE
BRLock
RWL
SGL
HTM
ROT
GL
ROT
GL
Optimistic Pessimestic
HardwareRead-WriteLockElision- Eurosys201621/4/16 27
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
10% write locks
RW-LEOPT
RW-LEPES
HLE
BRLock
RWL
SGL
HTM
ROT
GL
ROT
GL
Optimistic Pessimestic
HardwareRead-WriteLockElision- Eurosys201621/4/16 28
Syntheticbenchmarks
Degreeofcontention
SizeofTxs
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
10% write locks
RW-LEOPT
RW-LEPES
HLE
BRLock
RWL
SGL
HardwareRead-WriteLockElision- Eurosys201621/4/16 29
Stresstest– performance
Lowcontention Highcontention
SmallTxs
LargeTxs
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
10% write locks
RW-LEOPT
RW-LEPES
HLE
BRLock
RWL
SGL
10%writers
0.01
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
RW-LEOPT
RW-LEPES
HLEBRLock
RWLSGL
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
0.1
1
10
16 32 64 80
Tim
e (
s)
Number of threads
8X
10X
7X
HardwareRead-WriteLockElision- Eurosys201621/4/16 30
Ab
ort
s (%
)
HLERW-LEPES
RW-LEOPT
Abort
s (%
)
HLERW-LEPES
RW-LEOPT
Stresstest– abortrate
Lowcontention Highcontention
SmallTxs
LargeTxs
10%writers
HTM tx
HTM non-tx
HTM capacity
Lock aborts
ROT conflicts
ROT capacity
HLERW-LEPES
RW-LEOPT
Ab
ort
s (%
)
HLERW-LEPES
RW-LEOPT
Ab
ort
s (%
)
HLERW-LEPES
RW-LEOPT HardwareRead-WriteLockElision- Eurosys201621/4/16 31
Stresstest
Lowcontention Highcontention
SmallTxs
LargeTxs
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
10% write locks
RW-LEOPT
RW-LEPES
HLE
BRLock
RWL
SGL
90%writers
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
RW-LEOPT
RW-LEPES
HLEBRLock
RWLSGL
0.01
0.1
1
16 32 64 80
Tim
e (
s)
Number of threads
0.1
1
10
100
16 32 64 80
Tim
e (
s)
Number of threads
0.1
1
10
16 32 64 80
Tim
e (
s)
Number of threads
-10%-25%
HardwareRead-WriteLockElision- Eurosys201621/4/16 32
Syntheticbenchmarks
Lowcontention Highcontention
Lowcapacity
Highcapacity
0
20
40
60
80
1001% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 33
Syntheticbenchmarks
Lowcontention Highcontention
Lowcapacity
Highcapacity
0
20
40
60
80
1001% write locks
Abort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Abort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Ab
ort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
0
20
40
60
80
1001% write locks
Ab
ort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 34
TPC-C
0.1
1
10
100
16 32 64 80
1% write locks
Speedup (
vs. S
GL 1
thr.
)
16 32 64 80
10% write locks
Number of threads
RW-LEOPT
RW-LEPES
16 32 64 80
50% write locks
HLE BRLock
RWL SGL
6X
HardwareRead-WriteLockElision- Eurosys201621/4/16 35
TPC-C
0
20
40
60
80
1001% write locks
Co
mm
its (
%)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (1,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 36
TPC-C
0
20
40
60
80
1001% write locks
Abort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
10% write locks
Number of threads (1,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
50% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 37
STMbench7
0
2
4
6
8
10
16 32 64 80
10% write locks
Thro
ughput (1
03 T
x/s)
16 32 64 80
50% write locks
Number of threads
RW-LEOPT
RW-LEPES
16 32 64 80
90% write locks
HLE BRLock
RWL SGL
4X
HardwareRead-WriteLockElision- Eurosys201621/4/16 38
STMbench7
0
20
40
60
80
10010% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
50% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 39
STMbench7
0
20
40
60
80
10010% write locks
Abort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
50% write locks
Number of threads (2,4,8,16,32,64,80)
HLERW-LEPES
RW-LEOPT
90% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 40
KyotoCabinet
0
2
4
6
8
16 32 64
<1% write locks
Thro
ughput (1
06 T
x/s)
16 32 64
5% write locks
Number of threads
RW-LEOPT
RW-LEPES
16 32 64
10% write locks
HLEBRLock
OrigSGL
2X
HardwareRead-WriteLockElision- Eurosys201621/4/16 41
KyotoCabinet
0
20
40
60
80
100<1% write locks
Com
mits
(%
)
HTM ROT SGL Uninstrumented
HLERW-LEPES
RW-LEOPT
5% write locks
Number of threads (1,4,8,16,32,64)
HLERW-LEPES
RW-LEOPT
10% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 42
KyotoCabinet
0
10
20
30
40
50<1% write locks
Abort
s (%
)
HTM txHTM non-txHTM capacityLock abortsROT conflictsROT capacity
HLERW-LEPES
RW-LEOPT
5% write locks
Number of threads (1,4,8,16,32,64)
HLERW-LEPES
RW-LEOPT
10% write locks
HLERW-LEPES
RW-LEOPT
HardwareRead-WriteLockElision- Eurosys201621/4/16 43
Conclusions
readerswithoutinstrumentation
writersusingH/WTx
HardwareRead-WriteLockElision- Eurosys201621/4/16 44
Conclusions
readerswithoutinstrumentation
writersusingH/WTx 10X
HardwareRead-WriteLockElision- Eurosys201621/4/16 45
Conclusions
readerswithoutinstrumentation
writersusingH/WTx
suspend/resume ROTs
10xHardwareRead-WriteLockElision- Eurosys201621/4/16 46