Comparison Under Abstraction for Verifying Linearizability

Preview:

DESCRIPTION

Comparison Under Abstraction for Verifying Linearizability. Daphna Amit Noam Rinetzky Mooly Sagiv. Tom Reps. Eran Yahav. Tel Aviv University. University of Wisconsin. IBM T.J. Watson Research Center. Verification Challenge. T 2. T n. T 1. - PowerPoint PPT Presentation

Citation preview

Comparison Under Abstractionfor Verifying Linearizability

Daphna Amit

Noam Rinetzky

Mooly Sagiv

Tom Reps Eran Yahav

Tel Aviv University University of Wisconsin IBM T.J. Watson Research Center

Verification Challenge

• Unbounded dynamically-allocated concurrent data structure• Non blocking stack [Treiber, '86]• Non blocking queue [Michael and Scott, PODC’96]• …

• Challenge: automatically prove linearizability

concurrentdata structure

T1 T2 Tn

...

Linearizability [Herlihy and Wing, TOPLAS'90]

• Linearizable data structure – Sequential specification defines legal sequential executions

– Concurrent operations allowed to be interleaved

– Operations appear to execute atomically• External observer gets the illusion that each operation takes effect

instantaneously at some point between its invocation and its response

time

push(4)

pop():4push(7)

push(4)

pop():4push(7)

Last In First Out

concurrent LIFO stack

T1

T2

Main Contributions

• A conservative automatic algorithm for verifying linearizability – Unbounded linked concurrent data structures– Fixed (arbitrary) number of threads– Implementation and experimental results

• A novel shape abstraction that allows comparison between mutable linked data structures

Our Approach

• Construct for every concurrent execution an “equivalent” sequential execution– Simultaneously manipulate 2 data structures

• Concurrent data structure (manipulated by interleaved operations)• Sequential data structure (manipulated by atomic operations)

– Executable sequential specification

concurrentstack

T1

T2

sequentialstack

T1

T2

Our Approach

• Construct for every concurrent execution an “equivalent” sequential execution– Compare results of matching operations

time

push(4)

pop():4push(7)

push(4) pop():4push(7)

concurrentstack

T1

T2

sequentialstack

T1

T2

Comparison under abstraction of unbounded state systems may be

possible when the difference between the systems is bounded

Why Is It Challenging?Main Observation

Show that the observable behavior along every concurrent execution trace is equivalent to that of

a corresponding sequential execution trace

Comparison between two unbounded heaps over an unbounded number of traces

of unbounded length

Comparison under abstraction

Outline

• How to construct the sequential executions?

• How to compare unbounded heaps under abstraction?

Outline

• How to construct the sequential execution?

Inspired by Flanagan, SPIN’04

• How to compare unbounded heaps under abstraction?

Fixed Linearization Points

• Every operation has a (user-specified) fixed linearization point– A statement at which the operation appears to take effect

• Show that these linearization points are correct for every concurrent execution

• User may specify– Several (alternative) linearization points

– Certain types of conditional linearization points

Verification of Fixed Linearization Points

• Compare each concurrent execution to a specific sequential execution

• Show that every (terminating) concurrent operation returns the same result as its sequential counterpart

linearizationpoint

operationConcurrent

Execution

Sequential

Execution

compare results

...

linearizationpoint

Conjoined

Execution

compare results

Treiber's Non-Blocking Stack

1

3

4Top

Push Operation

if (STop == t) STop = x; evaluate to true;else evaluate to false;

1

3

4Top

t

7

x

Top

void push (Stack S, data_type v) { Node x = alloc(sizeof(Node)); xd = v; do { Node t = STop; xn = t; } while ( ! CAS(&STop, t, x) );}

Pop Operation

1

3

4Top

s

7Top

t

return 7

data_type pop (Stack S) { do { Node t = STop; if (t == NULL) return EMPTY; Node s = tn; } while ( ! CAS(&STop, t, s) ); data_type r = td; return r;}

Example: Conjoined Execution (1)

1

3

Top 1

3

Top

7 4

x x

t

t

Top 4

x

Top

B: push(7)

A: push(4)

ConcurrentStack

SequentialStack

Linearization Point

T1 T2

Example: Conjoined Execution (2)

1

3

1

3

7 4

x

t

Top 4 Topfailed CAS

t

7

x

7 TopTop

x

ConcurrentStack

SequentialStack

Linearization Point

B: push(7)

A: push(4)

T1 T2

Example: Conjoined Execution (3)

1

3

1

3

4Top 4 Top

s

7 7 TopTop

t

s

t

matching return values

A: pop()

ConcurrentStack

SequentialStack

Linearization Point

B: push(7)

A: push(4)

T1 T2

Conjoined Execution

ConcurrentStack

SequentialStack

1

3

1

3

4

linearization

point

Top 1

3

1

3

4

Top

1

3

1

3

4Top

1

3

1

3

4Top 4

1

3

1

3

4Top 4

Top Top

Top Top

Top

Throughout conjoined execution,

two stacks remain almost isomorphic

Atomic Operation

Outline

• How to construct the sequential execution?

• How to compare unbounded heaps under abstraction?

Delta Abstraction

Starting Point: Canonical Abstraction [ SRW'02 ]

1 34x 7 nnn

xn

n

summary node

Concretization

1 34x 7 nnn

n8x 5

3 92x 3 nnn

7n

xn

n

summary node

Comparison of Responses Under Abstraction

1

3

4

7 Top

1

3

4

7Top ? ? TopTop

?=

Abstract Domain

• Separate abstractions will not do

Concrete Domain

Concurrent

Stack

Sequential

Stack

Concurrent

Stack

Sequential

Stack

9

5

3Top

3

3

6

11 Top

Main Idea

1

3

1

3

4 4 Top

t

7

x

Top

ConcurrentStack

SequentialStack

track precisely

abstract awayIsomorphic Sub-graphsMaintain a mapping

between memory layouts of concurrent and

sequential data structures

Recording Isomorphism Using Correlation Relation

1

3

1

3

4 4

7 7 TopTop

• All nodes are correlated

• Correlated nodes are similar (successors also correlated or both null)

• Nodes pointed-to by Top are correlated

Isomorphism Under Delta Abstraction

1

3

1

3

4 4

7 7 TopTopsimilar

similar

similar

similar

duo-object

Isomorphism Under Delta Abstraction

7 7 TopTopsimilar

3 3similar

1 1similar

4 4similar

duo-object

similar

summary duo-object

TopTopsimilar

Isomorphism Under Bounded Delta Abstraction

Constructing the Correlation Relation

• Incrementally constructed during execution

• Nodes allocated by matching push operations are correlated

• Correlated nodes have equal data values

– Show that matching pops return data values of correlated nodes

Conjoined Execution Under Abstraction (1)

Top Top

x x

t

t

Top

x

Top

B: push(7)

A: push(4)

ConcurrentStack

SequentialStack

Linearization Point

similar

similar

similarT1 T2

Conjoined Execution Under Abstraction (2)

x

t

Top Topfailed CAS

t

x

TopTop

x

ConcurrentStack

SequentialStack

Linearization Point

similar

similar

similar

similarB: push(7)

A: push(4)

T1 T2

Conjoined Execution Under Abstraction (3)

TopTop

matching return values

ConcurrentStack

SequentialStack

similar

similar

similar

Partial isomorphism

can be maintained under abstraction

since the difference

between the memory layouts

is bounded

A: pop()

B: push(7)

A: push(4)

Bounded difference may be at an unbounded

distance from the root

T1 T2

Experimental Results

[1] Treiber, '86

[2] Michael and Scott, PODC’96

Verification (Time)

0

2000

4000

6000

8000

10000

12000

14000

16000

[1] [2] NBQ [3] [2] 2LQ [4]

Benchmark

Sec

on

ds

Verification (Space)

0

50000

100000

150000

200000

250000

[1] [2] NBQ [3] [2] 2LQ [4]

Benchmark

# o

f S

tate

s

Falsification (Time)

0

50

100

150

200

250

[1] [1] [2]NBQ

[2]NBQ

[2]2LQ

[2]2LQ

[4]

Benchmark

Sec

on

ds

Falsification (Space)

02000400060008000

100001200014000160001800020000

[1] [1] [2]NBQ

[2]NBQ

[2]2LQ

[2]2LQ

[4]

Benchmark

# o

f S

tate

s

[3] Doherty et al., FORTE'04

[4] Vafeiadis et al., PPoPP'06

32

2 4

2

3

2

2

4

2

20,000250

16,000 250,000

Related Methods

• Manual – Rely-guarantee reasoning [Vafeiadis et al., PPoPP'06]

• Semi-automatic

– Proving simulation relation between I/O Automata using PVS[Doherty et al., FORTE'04]

• Automatic– Proving atomicity of procedures [Wang and Stoller, PPoPP'05]

More general

Limitations

• User-specified guess of fixed linearization points

• User-specified fixed correlation rule

• Fixed number of threads– Arbitrary in theory

– Small in practice (scalability)

• Assuming memory is garbage collected

Future Work

Summary

• A conservative automatic algorithm for verifying linearizability of unbounded linked concurrent data structures– Sequential specification

– Conjoined executions

• Delta abstraction: A novel heap abstraction – Maintains an isomorphism between mutable linked data structures under

abstraction

• Implementation and experimental results– Non blocking stack [Treiber, '86]

– Non blocking queue [Michael and Scott, PODC’96] [Doherty et al., FORTE'04]

– 2 lock queue [Michael and Scott, PODC’96 ]

– Set with fine grained locking [Vafeiadis et al., PPoPP'06 ]

Main Observation

Comparison under abstraction of unbounded state systems

may be possible when the difference between the systems

is bounded

The EndMSc Thesis: www.cs.tau.ac.il/~amitdaph

Stack's Most-General Client

void client (Stack S) { do {

if (?) push(S, rand());else pop(S);

} while ( 1 );}

Recommended