SUPPORTING LOCK-FREE COMPOSITION OF CONCURRENT DATA OBJECTS Daniel Cederman and Philippas Tsigas.
-
Upload
jonas-smith -
Category
Documents
-
view
218 -
download
1
Transcript of SUPPORTING LOCK-FREE COMPOSITION OF CONCURRENT DATA OBJECTS Daniel Cederman and Philippas Tsigas.
SUPPORTING LOCK-FREE COMPOSITION OF CONCURRENT DATA OBJECTS
Daniel Cederman and Philippas Tsigas
Overview
SUPPORTING OF
CONCURRENT DATA OBJECTS
COMPOSITION
LOCK-FREE
Concurrent Data Objects
Data structures shared between processes
and other …
Trees Skiplists
Queues
HashtablesFor example …
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 …
Overview
CONCURRENT DATA OBJECTS
COMPOSITION
LOCK-FREE
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
Libraries using Lock-free Data Objects
Java Concurrency Package Threading Building Blocks by Intel .NET Parallel Extensions NOBLE Non-Blocking Library …
Overview
CONCURRENT DATA OBJECTS
COMPOSITION
LOCK-FREE
Composition
FC
DC
A B C
FC
DA B C
Dequeue Insert
Dequeue
Insert
Queue Tree
QueueTree
?
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
Concurrent Data Objects
Have operations for insertion and removal
of elements
Can be composed to form move operations
Trees Skiplists
Queues
Hashtables
and other …
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
Characterization
1. Have operations equivalent to insert and remove
2. These operations are linearizable3. …4. …
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
Linearization Points
Operation A Operation C
Operation B Operation D
Linearization point
Linearization point
Linearization point
Linearization point
Linearization Points
Operation A Operation C
Operation B Operation D
Characterization
1. Have operations equivalent to insert and remove
2. These operations are linearizable3. …4. …
Insert Element into BRemove Element from A
Composition
Composition
Remove - prolog
Insert - prolog
Remove - epilog
Insert - epilog
Composition
Remove - prolog
Insert - prolog
Remove - epilog
Insert - epilog
Element to remove must be accessible here!
Characterization
1. Have operations equivalent to insert and remove
2. These operations are linearizable3. The element to remove is accessible
before the linearization point4. …
Composition
Remove - prolog
Insert - prolog
Remove - epilog
Insert - epilog
Linearization point is often a successful compare-and-swap
Composition
Remove - prolog
Insert - prolog
Remove - epilog
Insert - epilog
Prolog
Epilog
if(CAS(…))
Only fails if other process
succeeds
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
Characterization
1. Have operations equivalent to insert and remove
2. 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
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] …
Reverts to normal compare-and-swap if used outside
move operation
Move Operation
Prolog
SCAS1
Prolog
SCAS2
Epilog
Epilog
Remove operation Insert operationMove support
Performs double-word compare-and-swap
Can only fail if other process succeeds
Case Study - Stack
bool 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
Case Study - Stack
bool 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
Generic Move Operation
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-Threading
Enqueue Dequeue
Move
Enqueue Dequeue
Queue – Insert and Remove
1 2 4 6 8 10 12 14 160
100
200
300
400
500
600
700
Blocking
Threads
Tim
e (
ms)
Queue – Move Operations
1 2 4 6 8 10 12 14 160
500
1000
1500
2000
2500
Blocking
Threads
Tim
e (
ms)
Queue – Insert/Remove/Move
1 2 4 6 8 10 12 14 160
200
400
600
800
1000
1200
1400
1600Blocking
Threads
Tim
e (
ms)
1 2 4 6 8 10 12 14 160
50
100
150
200
250
Before After
Threads
Tim
e (
ms)
Queue – Before/After Adaptation
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
For more information:www.cse.chalmers.se/research/group/dcs
Thank you!