37
© 2011 P. Kuznetsov TDC1: Consensus and BG Agreement

TDC1: Consensus and BG Agreement - inet.tu-berlin.de fileIf no wait‐free algorithm solves consensus for this case, Theorem 1 holds for any N≥2 10 Proof

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

© 2011 P. Kuznetsov 

TDC1:  Consensus and BG Agreement 

2

So far Shared memory transformaAons   safe bits ‐> mulA‐valued atomic registers 

  Atomic registers ‐> atomic snapshots 

  safe bit ‐> atomic bit (with constant overhead) 

© 2011 P. Kuznetsov  

3

Today 

  Consensus in read‐write shared memory   DefiniAon  Impossibility of wait‐free consensus 

  1‐resilient simulaAon  Consensus impossibility for the general case 

© 2011 P. Kuznetsov  

4

System model 

  N asynchronous processes p0,…,pN‐1 (N≥2) communicate via reading and wriAng in the shared memory 

  Processes can fail by crashing  Up to t processes can crash: t‐resilient system   t=N‐1: wait‐free  

  The processes communicate via atomic (NWNR) registers and atomic N‐snapshots 

5

Consensus 

Processes propose values and must agree on a common decision value so that the decided value is a proposed value of some process 

Before

After

0

1

1

1

1

1

6

Consensus: definiAon 

A process proposes an input value in V (|V|≥2) and tries to decide on an output value in V 

  Agreement: No two process decide on different values   Validity: Every decided value is a proposed value   Termina7on: No process takes infinitely many steps without deciding (Every correct process decides) 

7

Solving consensus 

An algorithm A (a collecAon of automata A0,…,AN‐1) solves consensus in a given model M if every run of A in M saAsfies Agreement, Validity, and TerminaAon 

A wait‐free algorithm solves consensus assuming up to N‐1 processes can crash 

8

OpAmisAc consensus 

Consider the case t=0, no process fails 

Upon propose(v) by process pi:  if i = 0 then D.write(v)     

 wait unAl D.read() ≠ T (default value not in V) 

 return D 

(every process decides on p0’s input) 

© 2011 P. Kuznetsov  

9

Impossibility of wait‐free consensus [FLP85] 

Theorem 1 No wait‐free algorithm solves consensus for N=2 

We give the proof for N=2, assuming that  

 p0 proposes 0 and p1 proposes 1 

If no wait‐free algorithm solves consensus for this case, Theorem 1 holds for any N≥2  

10

Proof 

By contradicAon, suppose that an algorithm A solves wait‐free consensus among p0 (proposing 0) and p1 (proposing 1) 

A run of A is a sequence of atomic steps (reads or writes) applied to the iniAal state 

A run of A can be seen as a sequence of process ids:  0000,… 0101,… 1111,… 

In every infinite run, every correct process decides! 

11

Proof: valence 

Let R be a finite run in Y  

  We say that R is v‐valent (for v in {0,1}) if v is decided in every infinite extension of R 

  We say that R is bivalent if R is neither 0‐valent nor  

 1‐valent 

12 © 2007 P. Kouznetsov  

Proof: valence claims Claim 1 Every finite run is 0‐valent,  or 1‐valent, or bivalent. 

(by TerminaAon)  

Claim 2 Any run in which some process decides v is   v‐valent  (by Agreement) 

Corollary 1: No process can decide in a bivalent run. 

Claim 3 The empty run (in Y) is bivalent.  (by Validity) 

13 © 2007 P. Kouznetsov  

Proof (contd.): criAcal run Claim 4 There exists a bivalent finite run R such that every extension of R is univalent (0‐valent or 1‐valent) 

Proof of Claim 4: By contradicAon, suppose every bivalent run has a bivalent extension 

  Take the bivalent (by Claim 3) empty run    We can extend it to a bivalent run =>   InducAvely, every bivalent run can be extended into a bivalent run => 

  We obtain an infinite run of A in which no process decides (by Corollary 1) => 

  TerminaAon is violated! 

14 © 2007 P. Kouznetsov  

Proof (contd.) 

Consider a bivalent run R such that every one‐step extension of R is 0‐valent or  1‐valent 

W.L.O.G., assume that  

  R.0 is 0‐valent 

  R.1 is 1‐valent  

15 © 2007 P. Kouznetsov  

Proof (contd.): cases and contradicAon 

  p0 and p1 are about to access different objects in R 

  p1 reads X and p0 reads X 

  p0 writes in X  

  p1 writes in X 

16 © 2007 P. Kouznetsov  

Proof (contd.): cases and contradicAon 

  p0 and p1 are about to access different objects in R  R.0.1 and R.1.0 are indisAnguishable 

p0‐> X  p1‐> Y 

17 © 2007 P. Kouznetsov  

Proof (contd.): cases and contradicAon 

  p0 and p1 are about to read the same object  R.0.1 and R.1.0 are indisAnguishable 

p0 reads X  p1 reads  X 

18 © 2007 P. Kouznetsov  

Proof (contd.): cases and contradicAon 

  p0 is about to write to X  Extensions of R.0 and R.1.0 are indisAnguishable for p0 (if p1 crashes) 

p0 writes to X  p1‐> X 

19 © 2007 P. Kouznetsov  

Proof (contd.): cases and contradicAon 

  p0 is about to write to X  Extensions of R.0.1 and R.1 are indisAnguishable for p1 (if p0 crashes) 

p0 ‐>X  p1 writes to X 

20

So… 

  A bivalent R such that R.0 and R.1 are both univalent does not exist 

  A contradicAon with Claim 4 

=> 2‐process wait‐free consensus is impossible 

⇒ wait‐free consensus is impossible 

© 2011 P. Kuznetsov  

21

A topological approach [HS93] 

p0  p1 

p0 reads before  

p1 writes p0 reads a;er  

p1 writes 

p1 reads a;er  

p0 writes p1 reads before  

p0 writes 

Iterated memory: use “fresh“ memory in each round 

     while not done         write(view) in MemoryK        view := snapshot(MemoryK)        k := k+1 

Solo runs remain connected 

(remains to show that the iterated model is not weaker) 

22

1‐resilient consensus 

What if we have 1000000 processes and one of them can crash? 

NO 

If we could, then we would solve 2‐process wait‐free consensus by simulaAon 

© 2011 P. Kuznetsov  

23

Today 

  Consensus in read‐write shared memory   DefiniAon  Impossibility of wait‐free consensus 

  1‐resilient simulaAon (BG simulaAon)  Consensus impossibility for the general case 

© 2011 P. Kuznetsov  

24

What if no parAcipant fails? 

  Suppose that every process either takes no steps (does not parAcipate) or takes enough steps (three is enough) 

  Can we solve consensus among p0 and p1? 

© 2011 P. Kuznetsov  

25

Yes we can!  Shared: Flag[0,1], iniAally T; Value[0,1], iniAally T 

Upon propose(v) of process pi:  Value[i] := v  x := Value[1‐i]   if x = T then    Flag[i] := 1     // pi is the winner    return(v)  Flag[i] := 0  wait unAl Flag[1‐i] ≠ T  if Flag[1‐i] = 1 then     return x    // p1‐i is the winner  else     return Value[0]      //break the symmetry   

© 2011 P. Kuznetsov  

26

Safe agreement: correctness Liveness: 

 Suppose each parAcipant takes 3 shared‐memory steps: every wait terminates 

(If a parAcipant “dies” between the writes – block) 

Safety:   At most one process wins!   If nobody wins – decide on the value of p0 

HW: What about any N≥2? 

27

Blocked vs. resolved Shared: Flag[0,1], iniAally T;  Value[0,1], iniAally T 

Upon propose(v) of process pi:  Value[i] := v  x := Value[1‐i]   if x = T then    Flag[i] := 1         return(v)    // Resolved with v  Flag[i] := 0  wait unAl Flag[1‐i] ≠ T  // Blocked  if Flag[1‐i] = 1 then     return x    // Resolved with x  else     return Value[0]      //Resolved with Value[0]   

© 2011 P. Kuznetsov  

28

BG simulaAon [BG93] 

  2 simulators q0,q1   n simulated processes p0,..,pn‐1 (n≥2) 

p0  pn‐1 

q0  q1 

…. 

29

BG simulaAon: the idea 

WLOG, each simulated pj runs the full‐informaAon protocol 

repeat forever:  

 updatej(viewj)  viewj := snapshot() 

(If 1‐resilient consensus is solvable with atomic snapshots, it is solvable with 1WNR registers)  

30

SimulaAon order   One Safe Agreement per each simulated snapshot   When the currently simulated step of pj is resolved or blocked – proceed to p(j+1) mod n 

p1 

q0 

p0  p2 

q1 

p0p1p2p0p1p2p1p2p1p2,… 

31

SimulaAon: code for each qi  IniAally last[j]=0, 0≤j≤n‐1   // the last step of pj            // simulated by qi 

j:=0 repeat forever  if resolved(j,last[j]) then  // return true for last[j]=0    last[j] := last[j]+1; k := last[j]    v := getState(j,k‐1)    // get the view of pj     if pj decides x in v then return x  // terminate     run SafeAgreementj,k(v) unAl resolved or blocked    if resolved(j,k) with x then publish(j,k,x)  j := (j +1) mod n 

32

SimulaAon: code for each qi  IniAally state[j]=iniAal, 0≤j≤n‐1  // the latest state of pj            // observed by qi 

publish(j,k,x)    // announce state of pj  state[j] := (k,x)    // state of pj ayer step k (seen by qi)  S.updatei(state)  

getState(j,k)  snap := S.snapshot()   // get the “most recent” view of all  for each s=1,…,n do  view[s] := most recent view of ps in snap  if k=0 then view[j]:=inputi   // use qi’s input for pj  return view 

33

Safety Claim 1 Each simulated view are agreed upon => no view k of pj can be seen differently by different simulators 

Claim 2 There exists a run R of FIP on p0,…,pn‐1, such that the simulated run looks like R to each pj  pj goes through the views of R 

 All proposed views come from snapshots: all snapshots are totally‐ordered 

34

Liveness 

Claim 2  At most one process fails in R 

  A faulty simulator may block at most one process 

  At most 1 simulators fails 

  At most 1 simulated process fails – a 1‐resilient run! 

35

1‐resilient consensus is impossible Theorem 2 No 1‐resilient  algorithm solves consensus for N≥2 

Suppose not: there is an algorithm A that solves consensus among p0,…,pn‐1 where all but one are correct 

Then we solve wait‐free consensus among q0 and q1 by simulaAng A 

  Each qi proposes its input for each simulated pj   Each qi decides on the first value returned by  A 

© 2011 P. Kuznetsov  

36

Correctness   Safety: all decisions come from a run of a consensus algorithm A  no two simulators decide differently (by Agreement)  Every proposed value is an input of some simulator – every decided value is a proposed value (by Validity) 

  Liveness: if a simulator is correct – the run of A is one‐resilient, eventually every correct simulated process decides (one is enough) 

© 2011 P. Kuznetsov  

37

  E. Borowsky, E. Gafni: Generalized FLP impossibility result for t‐resilient asynchronous computaAons. STOC 1993 

  Next class (May 10): discussion of Problem Set  1 (same place, same Ame) 

  Slides and literature: ISIS 

© 2011 P. Kuznetsov