Top Banner
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.
30
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Logical Clocks (Distributed computing)

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 (Distributed computing)

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: Logical Clocks (Distributed computing)

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 (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

Page 9

Lamport’s algorithm

Algorithm allows us to maintain time ordering among related events

– Partial ordering

Page 10: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

Page 18

Vector timestamps

a b

c d

fe

(0,0,0)P1

P2

P3

(0,0,0)

(0,0,0)

Page 19: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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: Logical Clocks (Distributed computing)

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 30: Logical Clocks (Distributed computing)

Page 30Page 30

The end.