Vector Clock Size Lower Bound: Proof and Implementation Repercussions
90 likes | 120 Vues
Prof. Jennifer Welch presents a theorem on vector clock size bounds using real number vectors in distributed systems. The proof highlights the implications for implementations and demonstrates contradictions that arise with smaller vector sizes.
Vector Clock Size Lower Bound: Proof and Implementation Repercussions
E N D
Presentation Transcript
Vector Clock Size Lower Bound Theorem: Any implementation of vector clocks using vectors of real numbers requires vectors of length n (number of processes). Proof: For any value of n, consider this execution: ai : first send event at process pi bi : last receive event at pi
Example Bad Execution For n = 4:
Vector Clock Size Lower Bound Claim 1:ai+1 || bi for all i (with wrap-around) Proof: Since each proc. does all sends before any receives, there is no transitivity. Also pi+1 does not send to pi. Claim 2:ai+1 bj for all j ≠ i. Proof: If j = i+1, obvious. If j ≠ i+1, then pi+1 sends to pj:
Vector Clock Size Lower Bound • Suppose in contradiction, there is a way to implement vector clocks with k-vectors of reals, where k < n. • By Claim 1, ai+1 || bi => V(ai+1) and V(bi) are incomparable => V(ai+1) is larger than V(bi) in some coordinate h(i) => h : {0,…,n-1} {0,…,k-1}
Vector Clock Size Lower Bound • Since k < n, the function h is not 1-1. So there exist distinct i and j such that h(i) = h(j). Let r be this common value of h. V(a0) V(a1) … V(ai+1) … V(aj+1) … V(an-1) V(b0) … V(bi) … V(bj) … V(bn-2) V(bn-1) > in comp. h(0) > in comp. h(i) two of these components are the same, say h(i) = h(j) = r > in comp. h(j) > in comp. h(n-2) > in comp. h(n-1)
Vector Clock Size Lower Bound V(bi) > in component r > in component r, contradicts aj+1 bi V(ai+1) ≤ in all components, since ai+1 bj V(bj) > in component r V(aj+1)
Vector Clock Size Lower Bound • So V(ai+1) is larger than V(bi) in coordinate r and V(aj+1) is larger than V(bj) in coordinate r also. • V(aj+1)[r] > V(bj)[r] by def. of r ≥ V(ai+1)[r] by Claim 2 (ai+1bj) & correct. ≥ V(bi)[r] by def. of r • Thus V(aj+1) !< V(bi), contradicting Claim 2 (aj+1bi) and assumed correctness of V.