quasi-linearizability: relaxed consistency for improved concurrency

32
Quasi-Linearizability: relaxed consistency for improved concurrency Y. Afek, G. Korland, E. Yanovsky Tel-Aviv University

Upload: guy-korland

Post on 23-Jan-2015

1.364 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Quasi-Linearizability: relaxed consistency for improved concurrency

Quasi-Linearizability: relaxed consistency for improved

concurrency

Y. Afek, G. Korland, E. Yanovsky Tel-Aviv University

Page 2: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation

• Linearizability Intuitive & clear

• BUT, requires strong synchronization

limited scalability

Page 3: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation SEDA

• Highly concurrent server application

• Thread poolso A task queue and a set of consumer threads

Page 4: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation SEDA cont.

• Typically, task queue is a linearizable queue

May become a contention point

Head Tail

Task TaskTask TaskTask

Task ProducersTask Consumers

Page 5: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation Shared Counter

• Statistical Counter

• ID generator

Page 6: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation HashTable

• Web Cache

Page 7: Quasi-Linearizability: relaxed consistency for improved concurrency

Motivation Cont.

• What about Stack?• What about Tree?• What about Priority Queue?

Page 8: Quasi-Linearizability: relaxed consistency for improved concurrency

The Solution

• Relax the linearizability requirement

• Back to the SEDA example…• Strict FIFO order is not a must

Replace FIFO with Loose-FIFO.

Page 9: Quasi-Linearizability: relaxed consistency for improved concurrency

Example I

Eventual consistency

• Given a sufficiently long period of time over which no updates

are sent, we can expect

that during this period,

all updates will,

eventually, propagate

through the system and

all the replicas will be consistent.

Page 10: Quasi-Linearizability: relaxed consistency for improved concurrency

Example II

Quiescent consistency

• Operations whose occurrence is

separated by a quiescent state

should appear in the order of their occurrence.

• An object is in a quiescent state if currently there is no pending or executing operation on that object.

Page 11: Quasi-Linearizability: relaxed consistency for improved concurrency

The Solution cont.

• Relax the linearizability requirement

• Back to the SEAD example…• Strict FIFO order is not a musto Replace FIFO with Loose-FIFO.

• “Quasi-FIFO”o When a task is executed, no more than K tasks

that were inserted prior to it, are pending execution.

Page 12: Quasi-Linearizability: relaxed consistency for improved concurrency

Quasi FIFO Queue

– Random Dequeue

HeadTail

Task TaskTask Task Task

Algorithm idea:• do

• Pick a node at random from the first K nodes • dequeue its element if possible.

• If already dequeued, and the queue is not empty, repeat.

Task Task

kTask

Page 13: Quasi-Linearizability: relaxed consistency for improved concurrency

Quasi FIFO Example

T1:

T2:

T3:

enq(x) enq(z)

enq(y)

deq(z) deq(y) deq(x)NOT LIN

EARIZABLE

enq(y)enq(x) enq(z) deq(z) deq(y) deq(x)

Not Legal Sequential history

enq(y)enq(x) enq(z) deq(z) deq(y) deq(x)

Legal Sequential history

QUASI LIN

EARIZABLE

Distance 2

Page 14: Quasi-Linearizability: relaxed consistency for improved concurrency

Quasi Linearizable Definition

Parallel Histories

LegalSequentialHistories

Page 15: Quasi-Linearizability: relaxed consistency for improved concurrency

Quasi Linearizable Definition

1 2 3 4 5 6

4 1 2 3 5 6

H’

H

Distance 3

Page 16: Quasi-Linearizability: relaxed consistency for improved concurrency

Q-Quasi-Sequential

Quasi Linearizable Definition

Parallel Histories

LegalSequentialHistories

Page 17: Quasi-Linearizability: relaxed consistency for improved concurrency

Segmented Queue– Segmented Quasi-Linearizable queue

• do• Pick a random element from corresponding segment • If empty-segment (Full-segment) remove it (Add new)

• repeat

Each segment size == K.

Page 18: Quasi-Linearizability: relaxed consistency for improved concurrency
Page 19: Quasi-Linearizability: relaxed consistency for improved concurrency
Page 20: Quasi-Linearizability: relaxed consistency for improved concurrency

Appendix

Page 21: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network (Thanks to “Art of Multiprocessor Programming, Herlihy & Shavit”)

1

Page 22: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network

2

1

Page 23: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network

3

2

1

Page 24: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network

3

2

1

4

Page 25: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network

3

2

1

4

5

Page 26: Quasi-Linearizability: relaxed consistency for improved concurrency

Counting Network

Page 27: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[k] not Linearizable

Page 28: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[W] is not Linearizable

Page 29: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[W] is not Linearizable

2

Page 30: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[W] is not Linearizable

2

0

Page 31: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[W] is not Linearizable

2

0

Problem is:• Red finished before Yellow started• Red took 2• Yellow took 0

But it is “Quiescently Consistent”

Page 32: Quasi-Linearizability: relaxed consistency for improved concurrency

Bitonic[W] Counting Network

Is it K-Quasi Linearizable Counter?

Yes, for K≥N*W (N-Num of threads)