Implementa*on techniques for libraries of transaconal ...

86
Implementa*on techniques for libraries of transac*onal concurrent data types Liuba Shrira Brandeis University

Transcript of Implementa*on techniques for libraries of transaconal ...

Page 1: Implementa*on techniques for libraries of transaconal ...

Implementa*on techniques for libraries of transac*onal concurrent

data types

Liuba Shrira

Brandeis University

Page 2: Implementa*on techniques for libraries of transaconal ...

Or: Type-Specific Concurrency Control and STM

Page 3: Implementa*on techniques for libraries of transaconal ...

Where Modern STMs Fail

3

I’d like a unique ID please

2011

Me too

2012

Non-transactional case

Page 4: Implementa*on techniques for libraries of transaconal ...

Where Modern STMs Fail

4

I’d like a unique ID please

2011

Me too

transactional case

Write conflict!

OMG!

Page 5: Implementa*on techniques for libraries of transaconal ...

It’s not the STMs problem really

5

Unique ID generator

Successive integers Unique IDs

Concurrent ops conflict

Concurrent ops commute

Page 6: Implementa*on techniques for libraries of transaconal ...

Relaxed Atomicity

WTTM2012 6-juil-17

Early release, open-nested, Eventual, elastic, ²-serializability, etc.

Popular in 80s & 90s … DB and distributed

Mostly forgotten …

Except for snapshot isolation.

Page 7: Implementa*on techniques for libraries of transaconal ...

Exploit

Type-Specific Concurrency Control

7

Also from 80s …

Commutativity … Non-determinism

For example Escrow …

Exo-leasing …

TM raises different questions

Page 8: Implementa*on techniques for libraries of transaconal ...

8

Heart of the Problem

Confusion between thread-level and transaction-level synchronization.

Needless entanglement kills concurrency

Relaxed consistency models are all about more entanglement

Page 9: Implementa*on techniques for libraries of transaconal ...

9

Heart of the Problem

Confusion between thread-level and transaction-level synchronization.

Needless entanglement kills concurrency

Relaxed consistency models are all about more entanglement

Page 10: Implementa*on techniques for libraries of transaconal ...

Short-lived, fine-grained

10

50 Shades of Synchroniza*on

Atomic instruction (CAS) Hardware Transaction Critical Sections

Long-lived, coarse-grained Software transaction

2

Page 11: Implementa*on techniques for libraries of transaconal ...

Transac*onal Boos*ng

11

Method for transforming….. linearizable

highly concurrent

Into … highly concurrent

black-box objects

transactional objects

Page 12: Implementa*on techniques for libraries of transaconal ...

12

Concurrent Objects

time

q.enq(x)

q.enq(y) q.deq(x)

q.deq(y)

time

Page 13: Implementa*on techniques for libraries of transaconal ...

13

Linearizability

time

q.enq(x)

q.enq(y) q.deq(x)

q.deq(y) q.enq(x)

q.enq(y) q.deq(x)

q.deq(y)

time

Page 14: Implementa*on techniques for libraries of transaconal ...

14

Linearizable Objects

threads

Thread-level synchronization

Linearizable object

Page 15: Implementa*on techniques for libraries of transaconal ...

15

Transac*onal Boos*ng

transactions

Transaction-level synchronization

Thread-level synchronization

Page 16: Implementa*on techniques for libraries of transaconal ...

16

Disentangled Run-Time

Library: abstract locks, Inverse logs

Your favorite fine-grained algorithms

HW transactions

Page 17: Implementa*on techniques for libraries of transaconal ...

17

Disentangled Reasoning

Commutativity & inverses

Linearizability e.g., rely-guarantee …

Page 18: Implementa*on techniques for libraries of transaconal ...

One Implementa*on

transactions Abstract locks Black-box linearizable

data object

rem(x)

Undo Logs

add(x)

x

Page 19: Implementa*on techniques for libraries of transaconal ...

Lets look at some code

•  Example1:Transac?onalSet•  implementedbyboos?ngConcurrentSkipListobject,usingLockKeyforsynchroniza?on

Page 20: Implementa*on techniques for libraries of transaconal ...
Page 21: Implementa*on techniques for libraries of transaconal ...
Page 22: Implementa*on techniques for libraries of transaconal ...

More examples:

•  Transac?onalPriorityQueue,Pipelining,UniqueID…•  implementedbyboos?ngconcurrentobjectsfromJavaconcurrencypackages

Page 23: Implementa*on techniques for libraries of transaconal ...

Performance of boos*ng

Page 24: Implementa*on techniques for libraries of transaconal ...

What’s the Catch?

24

Concurrent calls must commute Different orders yield same state, values

(Actually, all about left/right movers)

Methods must have inverses Immediately after, restores state

Page 25: Implementa*on techniques for libraries of transaconal ...

What’s the Catch?

25

Concurrent calls must commute Different orders yield same state, values

(Actually, all about left/right movers)

Methods must have inverses Immediately after, restores state

Page 26: Implementa*on techniques for libraries of transaconal ...

Boos*ng

• Reusecode,improveperformance• Butinverses

Page 27: Implementa*on techniques for libraries of transaconal ...

And is there ever enough performance?

Page 28: Implementa*on techniques for libraries of transaconal ...

How to improve performance?

Page 29: Implementa*on techniques for libraries of transaconal ...

Recall, we want

• Goodperformancewhensynchroniza?onisrequired•  Scalability

•  E.g.,forin-memorykey-valuestore

Page 30: Implementa*on techniques for libraries of transaconal ...

Up next: how to improve the performance of a transac*onal data structure? • MassTree:ahighperformancedatastructure•  Silo:highperformancetransac?onsoverMassTreeusingadifferentapproach

•  STO:ageneralframeworkandmethodologyforbuildinglibrariesofcustomizedhighperformancetransac?onalobjects

Page 31: Implementa*on techniques for libraries of transaconal ...

MassTree

• High-performancekey/valuestore•  Insharedprimarymemory•  Coresrunput,get,anddeleterequests

Page 32: Implementa*on techniques for libraries of transaconal ...

Review: Memory Model

•  Eachcorehasacache• Hianginthecachemabersalotforreads!• Whataboutawrite?

•  TSO(TotalStoreOrder)

Page 33: Implementa*on techniques for libraries of transaconal ...

•  Threadt1modifiesxandlatery•  Threadt2seesmodifica?ontoy•  t2readsx

•  Impliest2seesmodifica?onofx

X86-TSO

Page 34: Implementa*on techniques for libraries of transaconal ...

MassTree structure

• Nodesandrecords• Nodes

•  Coverarangeofkeys•  Interiorandleafnodes

• Records•  Storethevalues

Page 35: Implementa*on techniques for libraries of transaconal ...
Page 36: Implementa*on techniques for libraries of transaconal ...

Concurrency Control

• Reader/writerlocks?

Page 37: Implementa*on techniques for libraries of transaconal ...

Thread-level Concurrency Control

• Baseinstruc?ons•  Compareandswap

•  Ononememoryword•  Fence

Page 38: Implementa*on techniques for libraries of transaconal ...

Concurrency Control for mul*-word

•  Firstwordofnodesandrecords•  versionnumber(v#)andlockbit

Page 39: Implementa*on techniques for libraries of transaconal ...

Concurrency control

• Write•  Setlockbit(spinifnecessary)

•  usescompareandswap•  Updatenodeorrecord•  Incrementv#andreleaselock

Page 40: Implementa*on techniques for libraries of transaconal ...

Concurrency control

• Write(locking)• Read(nolocking)

•  Spiniflocked•  Readcontents•  Ifv#haschangedorlockisset,tryagain

Page 41: Implementa*on techniques for libraries of transaconal ...

Concurrency control

• Writesarepessimis?c• Readsareop?mis?c

• Amix!• Nowritesforreads

Page 42: Implementa*on techniques for libraries of transaconal ...

Inser*ng new keys

•  Intoleafnodeifpossible•  Elsesplit

Page 43: Implementa*on techniques for libraries of transaconal ...

Inser*ng new keys

•  Intoleafnodeifpossible•  Elsesplit

•  Splitlocksnodesupthepath•  Nodeadlocks

Page 44: Implementa*on techniques for libraries of transaconal ...

Interes*ng Issue with spliYng

Page 45: Implementa*on techniques for libraries of transaconal ...

From MassTree to Silo

• High-performancedatabase• Withtransac?ons

Page 46: Implementa*on techniques for libraries of transaconal ...

Silo

• Databaseisinprimarymemory• Runsone-shotrequests

Page 47: Implementa*on techniques for libraries of transaconal ...

Silo

• Databaseisinprimarymemory• Runsone-shotrequests

• Atreeforeachtableorindex• Workerthreadsruntherequests

•  Onethreadpercore• Workerssharememory

Page 48: Implementa*on techniques for libraries of transaconal ...

Transac*ons

begin{%dostuff:runqueries%usinginsert,lookup,update,delete,%andrange}

Page 49: Implementa*on techniques for libraries of transaconal ...

Running Transac*ons

• MassTreeopera?onsreleaselocksbeforereturning•  Holdlockslonger?

Page 50: Implementa*on techniques for libraries of transaconal ...

Running Transac*ons

• OCC(Op?mis?cConcurrencyControl)•  Threadmaintainsread-setandwrite-set

•  Read-setcontainsversionnumbers•  Write-setcontainsnewstate

• Atend,abemptscommit

Page 51: Implementa*on techniques for libraries of transaconal ...

Commit Protocol

• Phase1:lockallobjectsinwrite-set•  Boundedspinning

Page 52: Implementa*on techniques for libraries of transaconal ...

Commit Protocol

• Phase1:lockallobjectsinwrite-set• Phase2:verifyv#’sofread-set

•  Abortiflockedorchanged

Page 53: Implementa*on techniques for libraries of transaconal ...

Commit Protocol

• Phase1:lockallobjectsinwrite-set• Phase2:verifyv#’sofread-set•  SelectTid(>v#ofr-andw-sets)

• Withoutawritetosharedstate!

Page 54: Implementa*on techniques for libraries of transaconal ...

Commit Protocol

• Phase1:lockallobjectsinwrite-set• Phase2:verifyv#’sofread-set•  SelectTid(>v#ofr-andw-sets)• Phase3:updateobjectsinwrite-set

•  UsingTidasv#

Page 55: Implementa*on techniques for libraries of transaconal ...

Commit Protocol

• Phase1:lockallobjectsinwrite-set• Phase2:verifyv#’sofread-set•  SelectTid(>v#ofr-andw-sets)• Phase3:updateobjectsinwrite-set• Releaselocks

Page 56: Implementa*on techniques for libraries of transaconal ...

Addi*onal Issues

• Rangequeries• Absentkeys• Garbagecollec?on

Page 57: Implementa*on techniques for libraries of transaconal ...

Performance

Page 58: Implementa*on techniques for libraries of transaconal ...
Page 59: Implementa*on techniques for libraries of transaconal ...

Performance

•  vs.Hstore•  M.Stonebrakeretal,Theendofanarchitecturalera:(it’s?meforacompleterewrite),VLDB

‘07

Page 60: Implementa*on techniques for libraries of transaconal ...
Page 61: Implementa*on techniques for libraries of transaconal ...

Silo to STO

•  STO(SoswareTransac?onalObjects)

Page 62: Implementa*on techniques for libraries of transaconal ...

STO

•  Silotreesareanhighlyconcurrentdatastructures•  Specifica?ondeterminespoten?alconcurrency•  Implementa?onishidden

•  Includingconcurrencycontrol

Page 63: Implementa*on techniques for libraries of transaconal ...

A vision for concurrent code

• Appsruntransac?ons

Page 64: Implementa*on techniques for libraries of transaconal ...

A vision for concurrent applica*on code, like boos*ng • Appsruntransac?ons• Usingtransac?on-awaredatatypes

•  E.g.,sets,maps,arrays,boxes,queues

Page 65: Implementa*on techniques for libraries of transaconal ...

Transac*ons

begin{%dostuff:runqueries%usinginsert,lookup,update,delete,%andrange}

Page 66: Implementa*on techniques for libraries of transaconal ...

Back to our vision for concurrent code

• Appsruntransac?ons• Usingfasttransac?on-awaredatatypes

•  Designedbyexperts•  Requiresophis?ca?ontoimplement•  ButsoareconcurrentdatatypesinJava

Page 67: Implementa*on techniques for libraries of transaconal ...

STO

•  ThinkSilobrokenintotwoparts:•  STOplatorm•  Transac?on-awaredatatypes

Page 68: Implementa*on techniques for libraries of transaconal ...

STO PlaZorm

• Runstransac?ons•  Transac?on{…}

• Providestransac?onstate•  Read-andwrite-sets

• Runscommitprotocolusingcallbacks

Page 69: Implementa*on techniques for libraries of transaconal ...

Transac*on-aware datatypes

• Provideopsforusercode•  E.g.,lookup,update,insert,delete,range

• Recordreadsandwritesviaplatorm• Providecallbacks

•  lock,unlock,check,install,cleanup

Page 70: Implementa*on techniques for libraries of transaconal ...

Transac*on-aware datatypes

• Provideopsforusercode• Recordreadsandwritesviaplatorm• Providecallbacks

•  lock,unlock,check,install,cleanup•  cleanupforabort,aser-commit•  E.g.,dele?ngakey

Page 71: Implementa*on techniques for libraries of transaconal ...

Transac*on-aware types

• Maps• Hashtables• Counters

•  voidincr()vs.intincr()•  Usescheckandinstall

Page 72: Implementa*on techniques for libraries of transaconal ...

Designing fast STO’s data types:

•  Specifica?on•  Somecommontricks

•  Insertedelements:directupdates•  Absentelements:extraversionnumbers•  Read-my-writes:adjustments

• Correctness

Page 73: Implementa*on techniques for libraries of transaconal ...

Specifica*on

Page 74: Implementa*on techniques for libraries of transaconal ...

Inserted elements and repeated lookup

• Hybridstrategy•  T1:insert“poisoned”element•  T2:abortonobservinga“poisoned”element•  T1:noneedtovalidateinser?onatcommit

Page 75: Implementa*on techniques for libraries of transaconal ...

Absent elements

•  T1:get(K):Kisabsent•  Howtovalidateatcommit?

•  Extraversionnumbers•  Forhashtable:onbucketofabsentkey•  BTree:onparentnodeofabsentkey

Page 76: Implementa*on techniques for libraries of transaconal ...

Read-my-writes

•  T1:scanarangeA..Z;insertakeyC•  howtovalidaterange?

Page 77: Implementa*on techniques for libraries of transaconal ...

Correctness

• Versionnumbersonallsharedstate•  Exclusivelocks• Checkmustfailifsegmentlockedorversionnumberchanged• Modifica?onsinvisibletoothertransac?onsbeforeinstall

Page 78: Implementa*on techniques for libraries of transaconal ...

Performance

Page 79: Implementa*on techniques for libraries of transaconal ...

Implementa*on

•  Silo:7000linesofcode•  STO-Silo:3000linesofcode

•  Useshashtablesandtrees

Page 80: Implementa*on techniques for libraries of transaconal ...
Page 81: Implementa*on techniques for libraries of transaconal ...

Performance

•  vs.TL2(grey)• Andboos?ng(lilac)

Page 82: Implementa*on techniques for libraries of transaconal ...

Op*mism vs Pessimism?

Effectsofpessimismandboos?ngonahashtablemicrobenchmark.Numbersarespeedupat16threadsrela?vetosingle-threadedSTO

Page 83: Implementa*on techniques for libraries of transaconal ...

More examples of powerful op*miza*ons

Page 84: Implementa*on techniques for libraries of transaconal ...

STO: last word for exploi*ng ADT in TM?

• Needsmorework•  Moredatatypes•  Methodology•  Programminglanguageintegra?on•  Distribu?on

Page 85: Implementa*on techniques for libraries of transaconal ...

Summary: Implemen*ng a Library of Transac*onal Data types:

•  Dis?nc?onbetweenshortThreadlevelvscoarsegrainTransac?on-levelcoordina?oniskey

•  Canre-usedatastructurecodeorco-designandcustomize:

•  Boos?ng:ablackboxapproach,firstADT/STM(codere-use,restric?ons)

•  STO:high-performancepessimis?c/op?mis?capproach(co-designandcustomize)

•  (ThankstoM.HerlihyandB.Liskovforhelpwithslides!)

Page 86: Implementa*on techniques for libraries of transaconal ...

Ques*ons