30
Page 1 Page 1 Logical Clocks Paul Krzyzanowski [email protected] [email protected] Distributed Systems Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.

Logical Clocks (Distributed computing)

Embed Size (px)

Citation preview

Page 1Page 1

Logical Clocks

Paul [email protected]

[email protected]

Distributed Systems

Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License.

Page 2

Logical clocks

Assign sequence numbers to messages– All cooperating processes can agree on order

of events– vs. physical clocks: time of day

Assume no central time source– Each system maintains its own local clock– No total ordering of events

• No concept of happened-when

Page 3

Happened-before

Lamport’s “happened-before” notation

a b event a happened before event be.g.: a: message being sent, b: message

receipt

Transitive:if a b and b c then a c

Page 4

Logical clocks & concurrency

Assign “clock” value to each event– if ab then clock(a) < clock(b)– since time cannot run backwards

If a and b occur on different processes that do not exchange messages, then neither a b nor b a are true

– These events are concurrent

Page 5

Event counting example

• Three systems: P0, P1, P2

• Events a, b, c, …

• Local event counter on each system

• Systems occasionally communicate

Page 6

Event counting example

a b

h i

k

P1

P2

P3

1 2

1 3

21

d f

g3

c

2

4 6

e5

j

Page 7

Event counting example

a b

i

kj

P1

P2

P3

1 2

1 3

21

d f

g3

c

2

4 6

Bad ordering:

e h

f k

h

e5

Page 8

Lamport’s algorithm

• Each message carries a timestamp of the sender’s clock

• When a message arrives:– if receiver’s clock < message timestamp

set system clock to (message timestamp + 1)

– else do nothing

• Clock must be advanced between any two events in the same process

Page 9

Lamport’s algorithm

Algorithm allows us to maintain time ordering among related events

– Partial ordering

Page 10

Event counting example

a b

i

kj

P1

P2

P3

1 2

1 7

21

d f

g3

c

2

4 6

6

7

h

e5

Page 11

Summary

• Algorithm needs monotonically increasing software counter

• Incremented at least when events that need to be timestamped occur

• Each event has a Lamport timestamp attached to it

• For any two events, where a b:L(a) < L(b)

Page 12

Problem: Identical timestamps

ab, bc, …: local events sequenced

ic, fd , dg, … : Lamport imposes asendreceive relationship

Concurrent events (e.g., a & i) may have the same timestamp … or not

a b

h i

kj

P1

P2

P3

1 2

1 7

71

d f

g3

c

6

4 6

e5

Page 13

Unique timestamps (total ordering)

We can force each timestamp to be unique– Define global logical timestamp (Ti, i)

• Ti represents local Lamport timestamp

• i represents process number (globally unique)– E.g. (host address, process ID)

– Compare timestamps:(Ti, i) < (Tj, j)

if and only ifTi < Tj or

Ti = Tj and i < j

Does not relate to event ordering

Page 14

Unique (totally ordered) timestamps

a b

i

kj

P1

P2

P3

1.1 2.1

1.2 7.2

7.31.3

d f

g3.1

c

6.2

4.1 6.1h

e5.1

Page 15

Problem: Detecting causal relations

If L(e) < L(e’)– Cannot conclude that ee’

Looking at Lamport timestamps– Cannot conclude which events are causally

related

Solution: use a vector clock

Page 16

Vector clocksRules:

1. Vector initialized to 0 at each processVi [j] = 0 for i, j =1, …, N

2. Process increments its element of the vector in local vector before timestamping event: Vi [i] = Vi [i] +1

3. Message is sent from process Pi with Vi attached to it

4. When Pj receives message, compares vectors element by element and sets local vector to higher of two values

Vj [i] = max(Vi [i], Vj [i]) for i=1, …, N

Page 17

Comparing vector timestamps

DefineV = V’ iff V [i ] = V’[i ] for i = 1 … N V V’ iff V [i ] V’[i ] for i = 1 … N

For any two events e, e’if e e’ then V(e) < V(e’)

• Just like Lamport’s algorithm

if V(e) < V(e’) then e e’

Two events are concurrent if neitherV(e) V(e’) nor V(e’) V(e)

Page 18

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

Page 19

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0)

Page 20

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0)

(2,0,0)

Page 21

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0)

(2,0,0)

(2,1,0)

Page 22

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0)

(2,0,0)

(2,1,0) (2,2,0)

Page 23

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1)

(2,0,0)

(2,1,0) (2,2,0)

(0,0,1)

Page 24

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)

(2,0,0)

(2,1,0) (2,2,0)

(0,0,1) (2,2,2)

Page 25

(0,0,1)

(1,0,0)

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)

(2,0,0)

(2,1,0) (2,2,0)

(2,2,2)

concurrentevents

Page 26

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)

(2,0,0)

(2,1,0) (2,2,0)

(0,0,1) (2,2,2)

concurrentevents

Page 27

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)

(2,0,0)

(2,1,0) (2,2,0)

(0,0,1) (2,2,2)

concurrentevents

Page 28

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

(1,0,0)

Event timestamp a (1,0,0) b (2,0,0) c (2,1,0) d (2,2,0) e (0,0,1) f (2,2,2)

(2,0,0)

(2,1,0) (2,2,0)

(0,0,1) (2,2,2)

concurrentevents

Page 29

Summary: Logical Clocks & Partial Ordering

• Causality– If a->b then event a can affect event b

• Concurrency– If neither a->b nor b->a then one event cannot

affect the other

• Partial Ordering– Causal events are sequenced

• Total Ordering– All events are sequenced

Page 30Page 30

The end.