Distributed Systems Logical Clocks Paul Krzyzanowski - - PowerPoint PPT Presentation

distributed systems
SMART_READER_LITE
LIVE PREVIEW

Distributed Systems Logical Clocks Paul Krzyzanowski - - PowerPoint PPT Presentation

Distributed Systems Logical Clocks Paul Krzyzanowski pxk@cs.rutgers.edu Except as otherwise noted, the content of this presentation is licensed under the Creative Commons Attribution 2.5 License. Page 1 Page 1 Logical clocks Assign sequence


slide-1
SLIDE 1

Page 1 Page 1

Logical Clocks

Paul Krzyzanowski pxk@cs.rutgers.edu

Distributed Systems

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

slide-2
SLIDE 2

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
slide-3
SLIDE 3

Page 3

Happened-before

Lamport’s “happened-before” notation

a  b event a happened before event b e.g.: a: message being sent, b: message receipt Transitive: if a  b and b  c then a  c

slide-4
SLIDE 4

Page 4

Logical clocks & concurrency

Assign “clock” value to each event

– if ab 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

slide-5
SLIDE 5

Page 5

Event counting example

  • Three systems: P0, P1, P2
  • Events a, b, c, …
  • Local event counter on each system
  • Systems occasionally communicate
slide-6
SLIDE 6

Page 6

Event counting example

a b h i k P1 P2 P3

1 2 1 3 2 1

d f g

3

c

2 4 6

e

5

j

slide-7
SLIDE 7

Page 7

Event counting example

a b i k j P1 P2 P3

1 2 1 3 2 1

d f g

3

c

2 4 6

Bad ordering: e  h f  k h e

5

slide-8
SLIDE 8

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

slide-9
SLIDE 9

Page 9

Lamport’s algorithm

Algorithm allows us to maintain time ordering among related events

– Partial ordering

slide-10
SLIDE 10

Page 10

Event counting example

a b i k j P1 P2 P3

1 2 1 7 2 1

d f g

3

c

2 4 6 6 7

h e

5

slide-11
SLIDE 11

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)

slide-12
SLIDE 12

Page 12

Problem: Identical timestamps

ab, bc, …: local events sequenced ic, fd , dg, … : Lamport imposes a sendreceive relationship Concurrent events (e.g., a & i) may have the same timestamp … or not

a b h i k j P1 P2 P3

1 2 1 7 7 1

d f g

3

c

6 4 6

e

5

slide-13
SLIDE 13

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 if Ti < Tj or Ti = Tj and i < j

Does not relate to event ordering

slide-14
SLIDE 14

Page 14

Unique (totally ordered) timestamps

a b i k j P1 P2 P3

1.1 2.1 1.2 7.2 7.3 1.3

d f g

3.1

c

6.2 4.1 6.1

h e

5.1

slide-15
SLIDE 15

Page 15

Problem: Detecting causal relations

If L(e) < L(e’)

– Cannot conclude that ee’

Looking at Lamport timestamps

– Cannot conclude which events are causally related

Solution: use a vector clock

slide-16
SLIDE 16

Page 16

Vector clocks

Rules:

1. Vector initialized to 0 at each process

Vi [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

slide-17
SLIDE 17

Page 17

Comparing vector timestamps

Define

V = 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 neither

V(e)  V(e’) nor V(e’)  V(e)

slide-18
SLIDE 18

Page 18

Vector timestamps

a b c d f e (0,0,0) P1 P2 P3 (0,0,0) (0,0,0)

slide-19
SLIDE 19

Page 19

Vector timestamps

a b c d f e (0,0,0) P1 P2 P3 (0,0,0) (0,0,0) (1,0,0) Event timestamp a (1,0,0)

slide-20
SLIDE 20

Page 20

Vector timestamps

a b c d f e (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)

slide-21
SLIDE 21

Page 21

Vector timestamps

a b c d f e (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)

slide-22
SLIDE 22

Page 22

Vector timestamps

a b c d f e (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)

slide-23
SLIDE 23

Page 23

Vector timestamps

a b c d f e (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)

slide-24
SLIDE 24

Page 24

Vector timestamps

a b c d f e (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)

slide-25
SLIDE 25

Page 25

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

Vector timestamps

a b c d f e (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) concurrent events

slide-26
SLIDE 26

Page 26

Vector timestamps

a b c d f e (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) concurrent events

slide-27
SLIDE 27

Page 27

Vector timestamps

a b c d f e (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) concurrent events

slide-28
SLIDE 28

Page 28

Vector timestamps

a b c d f e (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) concurrent events

slide-29
SLIDE 29

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

slide-30
SLIDE 30

Page 30 Page 30

The end.