supporting lock-free composition of concurrent data objects

37
SUPPORTING LOCK-FREE COMPOSITION OF CONCURRENT DATA OBJECTS Daniel Cederman and Philippas Tsigas

Upload: monet

Post on 23-Feb-2016

33 views

Category:

Documents


0 download

DESCRIPTION

Supporting Lock-Free Composition of Concurrent Data Objects. Daniel Cederman and Philippas Tsigas. Overview. Supporting of. LOCK-FREE. Composition. CONCURRENT DATA OBJECTS. Concurrent Data Objects. Hashtables. For example …. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Supporting Lock-Free Composition of Concurrent Data Objects

SUPPORTING LOCK-FREE COMPOSITION OF CONCURRENT DATA OBJECTS

Daniel Cederman and Philippas Tsigas

Page 2: Supporting Lock-Free Composition of Concurrent Data Objects

Overview

SUPPORTING OFCONCURRENT DATA

OBJECTS

COMPOSITION

LOCK-FREE

Page 3: Supporting Lock-Free Composition of Concurrent Data Objects

Concurrent Data Objects

Data structures shared between processes

and other …

Trees Skiplists

Queues

HashtablesFor example …

Page 4: Supporting Lock-Free Composition of Concurrent Data Objects

Synchronization Synchronization is required for

concurrency Mutual exclusion

Locks limits concurrency Busy waiting – repeated checks to see if

lock has been released or not Convoying – processes stack up before

locks A better approach is to use data

structuresthat are …

Page 5: Supporting Lock-Free Composition of Concurrent Data Objects

OverviewCONCURRENT DATA

OBJECTS

COMPOSITION

LOCK-FREE

Page 6: Supporting Lock-Free Composition of Concurrent Data Objects

Lock-free Lock-freedom is a progress guarantee

In practice it means that A fast process doesn’t

have to wait for a slowor dead process

Can’t be designed withblocking parts

No deadlocks

Shown to scale better than blocking approaches

DefinitionFor all possible

executions, at least one concurrent

operation will succeed in a finite number of its

own steps

Page 7: Supporting Lock-Free Composition of Concurrent Data Objects

Libraries using Lock-free Data Objects

Java Concurrency Package Threading Building Blocks by Intel .NET Parallel Extensions NOBLE Non-Blocking Library …

Page 8: Supporting Lock-Free Composition of Concurrent Data Objects

OverviewCONCURRENT DATA

OBJECTS

COMPOSITION

LOCK-FREE

Page 9: Supporting Lock-Free Composition of Concurrent Data Objects

Composition

FC

DC

A B C

FC

DA B C

Dequeue Insert

DequeueInsert

Queue Tree

Queue Tree?

Page 10: Supporting Lock-Free Composition of Concurrent Data Objects

Challenge Providing efficiency and correctness

while dealing with Specialized designs Few common algorithmic components Complex proofs of correctness

We target a large class of concurrent data objects

Page 11: Supporting Lock-Free Composition of Concurrent Data Objects

Concurrent Data Objects

Have operations for insertion and removal

of elements

Can be composed to form move operations

Trees Skiplists

Queues

Hashtables

and other …

Page 12: Supporting Lock-Free Composition of Concurrent Data Objects

Contributions We provide a framework that consists of

three parts Properties used to identify compatible

objects Steps needed to adapt object Algorithmic design of operation for

performinglock-free moves between adapted objects

Page 13: Supporting Lock-Free Composition of Concurrent Data Objects

Characterization1. Have operations equivalent to insert

and remove2. These operations are linearizable3. …4. …

Page 14: Supporting Lock-Free Composition of Concurrent Data Objects

Linearizability

Operation A Operation C

Operation B Operation D

Linearizable if for any concurrent history there exists a correct sequential history where …

A happens before B, if A finished before B

started

Either C happens before D

or D happens before C,if C and D are concurrent

Page 15: Supporting Lock-Free Composition of Concurrent Data Objects

Linearization Points

Operation A Operation C

Operation B Operation D

Linearization point

Linearization point

Linearization point

Linearization point

Page 16: Supporting Lock-Free Composition of Concurrent Data Objects

Linearization Points

Operation A Operation C

Operation B Operation D

Page 17: Supporting Lock-Free Composition of Concurrent Data Objects

Characterization1. Have operations equivalent to insert

and remove2. These operations are linearizable3. …4. …

Page 18: Supporting Lock-Free Composition of Concurrent Data Objects

Insert Element into BRemove Element from A

Composition

Page 19: Supporting Lock-Free Composition of Concurrent Data Objects

Composition

Remove - prolog

Insert - prolog

Remove - epilog

Insert - epilog

Page 20: Supporting Lock-Free Composition of Concurrent Data Objects

Composition

Remove - prolog

Insert - prolog

Remove - epilog

Insert - epilog

Element to remove must be accessible here!

Page 21: Supporting Lock-Free Composition of Concurrent Data Objects

Characterization1. Have operations equivalent to insert

and remove2. These operations are linearizable3. The element to remove is accessible

before the linearization point4. …

Page 22: Supporting Lock-Free Composition of Concurrent Data Objects

Composition

Remove - prolog

Insert - prolog

Remove - epilog

Insert - epilog

Linearization point is often a successful compare-and-swap

Page 23: Supporting Lock-Free Composition of Concurrent Data Objects

Composition

Remove - prolog

Insert - prolog

Remove - epilog

Insert - epilog

Prolog

Epilog

if(CAS(…))Only fails if

other process succeeds

Page 24: Supporting Lock-Free Composition of Concurrent Data Objects

Failed! Failed!Success! Failed!Failed! Success!

Success! Success!

RemoveInsert DCASFailed!Failed!Failed!

Success!

Composition

Remove - prolog

Insert - prolog

Remove - epilog

Insert - epilog

Combined using a double-word

compare-and-swap

Page 25: Supporting Lock-Free Composition of Concurrent Data Objects

Characterization1. Have operations equivalent to insert

and remove2. These operations are linearizable3. The element to remove is accessible

before the linearization point4. The linearization point for a successful

operation is a successful compare-and-swap

Can be composed to move operations

Page 26: Supporting Lock-Free Composition of Concurrent Data Objects

Compatible Concurrent Data Objects

There are a wide variety of commonly used lock-free data structures that supports these requirements Queues [PODC ‘96] Lists [PODC ‘04] Skip-Lists [IPDPS ‘03] Priority Queues [JPDC ‘05] Hash-tables [SPAA ‘02] Dictionaries [SAC ‘04] Stacks [Treiber ‘86] …

Page 27: Supporting Lock-Free Composition of Concurrent Data Objects

Reverts to normal compare-and-swap if used outside

move operation

Move Operation

PrologSCAS1

PrologSCAS2

EpilogEpilog

Remove operation Insert operationMove support

Performs double-word compare-and-swap

Can only fail if other process succeeds

Page 28: Supporting Lock-Free Composition of Concurrent Data Objects

Case Study - Stackbool pop(value)

while(true)ltop = top;if(ltop == 0) return false;value = ltop.value;if(cas(top, ltop, ltop.next))

return true;

Not a successful operation

Successful operation connected to a

successful CAS

Accessible before linearization point

Page 29: Supporting Lock-Free Composition of Concurrent Data Objects

Case Study - Stackbool pop(value)

while(true)ltop = top;if(ltop == 0) return false;value = ltop.value;if(scas(top, ltop, ltop.next, value))

return true;

The scas is called with the value to move

Page 30: Supporting Lock-Free Composition of Concurrent Data Objects

Generic Move Operation

Page 31: Supporting Lock-Free Composition of Concurrent Data Objects

Performance Evaluation The evaluation was performed on a

machine with an Intel Core i7 950 3GHz processor and 6GB DDR3-1333 memory

4 Cores with Hyper-ThreadingEnqueue Dequeue

Move

Enqueue Dequeue

Page 32: Supporting Lock-Free Composition of Concurrent Data Objects

Queue – Insert and Remove

1 2 4 6 8 10 12 14 160100200300400500600700

Blocking

Threads

Tim

e (m

s)

Page 33: Supporting Lock-Free Composition of Concurrent Data Objects

Queue – Move Operations

1 2 4 6 8 10 12 14 160

500

1000

1500

2000

2500Blocking

Threads

Tim

e (m

s)

Page 34: Supporting Lock-Free Composition of Concurrent Data Objects

Queue – Insert/Remove/Move

1 2 4 6 8 10 12 14 160200400600800

1000120014001600

Blocking

Threads

Tim

e (m

s)

Page 35: Supporting Lock-Free Composition of Concurrent Data Objects

1 2 4 6 8 10 12 14 160

50

100

150

200

250

Before After

Threads

Tim

e (m

s)Queue – Before/After Adaptation

Page 36: Supporting Lock-Free Composition of Concurrent Data Objects

Summary We provide a framework that consists of

three parts Properties used to identify compatible objects Steps needed to adapt object Algorithmic design of operation for performing

lock-free moves between adapted objects

Adaptation does not affect standard operations

Page 37: Supporting Lock-Free Composition of Concurrent Data Objects

For more information:www.cse.chalmers.se/research/group/dcs

Thank you!