300 likes | 367 Vues
Causal Message Logging(FBL). Rohit C Fernandes 10/23/01. Overview. Intuition Family Based Logging Manetho. System Model. Fixed Number of Processes (N->N) Reliable FIFO Communication Channels Fail Stop Processes Only non determinism is in message receive ( receive_any )
E N D
Causal Message Logging(FBL) Rohit C Fernandes 10/23/01
Overview • Intuition • Family Based Logging • Manetho
System Model • Fixed Number of Processes (N->N) • Reliable FIFO Communication Channels • Fail Stop Processes • Only non determinism is in message receive ( receive_any ) • Rollback Recovery (checkpoints and message logs)
Determinant • #m = <sender,receiver,ssn,rsn>
Requirements of logging protocol • Tolerate upto f simultaneous failures • Low failure-free overhead • Only failed processes roll back • (What about optimistic and pessimistic protocols?)
Causal Logging : Intuition • Piggyback determinant of non-deterministic event on outgoing messages • Determinant? • How to control the amount of piggybacking?
Controlling Piggyback Size • To recover from f failures, we need to store the determinant at f+1 places • f < 3 : easy • Recovering from 3 failures (?) • Clearly not optimal
Definitions • Depend(m) =set of processes whose state causally depends on delivery of m • Log(m) = set of processes where #m is logged • Stable(#m) : #m cannot be lost because of crashes
No Orphan Condition • m: ((Log(m) f Depend(m) Log(m)) • In practice, Depend(m)=Log(m) if (Log(m) f WHY?
Definitions • DLp : Determinant Log of process p • UnstableDLp : subset of DLp which p does not know to be stable • UnstableDLp(q) : set of determinants in UnstableDLp that p knows q does not already have
FBL protocol idea • How can p determine #m is not stable? • How can p determine if q has #m? • Piggyback extra information • Log(m)p : p’s estimated value of Log(m) • Important : never overestimate Log(m)
Inferring information from #m • When q receives #m from p, q can infer that Log(m) contains p,q and the m.dest • Det : Protocol in which process p piggybacks the determinants inUnstableDLp(q)
Inferring Information from Log(m) p • q can infer that Log(m) Log(m) p • When received for the first time, q can infer that Log(m) Log(m) p +1 • Log : Protocol where p piggybacks #m and Log(m) p for each #m in UnstableDLp(q)
Inferring Information from Log(m) p • q can infer that Log(m) Log(m)p U Log(m)q • Log : Protocol where p piggybacks #m and Log(m) p for each #m in UnstableDLp(q)
2 more protocols • Log+ : Process p piggybacks the same data as Log except that if Log(m) p has increased since the last time p piggybacked #m to q,Log(m)p is piggybacked on m’ • Log+
Comparison :Det, Log, Log , Log+, Log+ • For f<3, Det logs no more determinants than the other protocols • Trade-off between extra information piggybacked per message and unnecessary copies of #m logged • Trade-off depends on applications pattern of communication
Overhead Measurements • D : Number of determinants in UnstableDLp(q) • N : Number of determinants in DLp • W : Number of words required to code a determinant
Overheads • Det : Dw words • Log : D(w+1) words • Log : upto D(w+f) words • Log+,: Upto N(w+1) words (?) • Log+ : Upto N(w+f) words (?)
Intuition for compacting • How to estimate log(m)? • Idea : Try estimating depend(m) instead • Intuition : Vector Clocks
Dependence Matrix • Each process p maintains an n*n matrix DMatp • DMatp[p,*] : Vector clock of process p • DMatp[q,*] : p’s estimate of vector clock of process q
Update Rules • On receipt of a message m at p from q: • P generates #m • DMatp [p,p] ++ • DMatp [p,*]=max(VCm,Dmat[p,*]) • DMatp [q,*]=max(VCm,Dmat[q,*]) • DMatp [i,i]=max(VCm[i], DMatp [i,i]) • Now, given #m in DLp what is Log(m)p ? • Log(m)p ={q| DMatp [q,m.dest] m.rsn} • Weak Dependency Vectors(Clocks)
Implementation • Log+: Piggyback DMat on outgoing messages • Dmatp can be used to estimate Log(m)p for all messages m for which p is a member of depend(m) • Log+,: Need to only piggyback an n*f matrix called the stability matrix
Comparing Piggyback Overheads • Det : Dw words • Log : D(w+1) words • Log : upto D(w+f) words • Log+,: (D+nf)w • Log+ : (D+n2)w