220 likes | 342 Views
This paper explores the challenge of capturing and quantifying simplicity in designing networked systems. While the community values "simple" and "clean" designs, existing metrics often fail to align with this aesthetic. We propose a new approach to measure design simplicity by analyzing the dependencies inherent in system state. By rigorously comparing different design options through the lens of these dependencies, we aim to better align algorithmic and system design goals. Our findings suggest that understanding and measuring complexity can enhance system design practices in the networking domain.
E N D
Capturing Complexity in Networked Systems Design: The Case for Improved Metrics Sylvia Ratnasamy Intel Research
Motivation Our community values “simple”, “clean” system designs “The advantage of Chord is that it is less complicated…” – Chord, Sigcomm’01 “The complexity of the architectural design…” – Sprint, IEEE Network 2000 “A design for multicast that is simple…” – Perlman. Simple Multicast, IETF Draft. “Complex routing algorithms may have difficulty scaling… simple floods are sufficient” -- TinyOS, NSDI’04 “This paper proposed a simple and effective approach …” – SOSR, OSDI’04 “Thus, simplicity is our primary design requirement …” – BVR, NSDI’05
Motivation Our community values “simple”, “clean” system designs • But lacks metrics that rigorously capture this aesthetic • Best practice: metrics borrowed from the theory community • e.g., total_messages, total_state • Problem: at times incongruent with our notion of “simplicity” • e.g., flooding: inefficient but simple • e.g., dijkstra’s: O(n) state, but simple • e.g., leaderID vs. neighborID
This Paper • Can we quantify design “simplicity”? • more rigorously compare-and-contrast design options • align design goals of algorithms, systems communities • First stab: complexity metrics for the algorithmic component of a networked system • Note • just one aspect to system complexity • intent: complement, not replace, existing metrics
Outline • Strawman • Simple evaluation scenarios • Limitations and Future Directions
Strawman Two observations: • much of system design centers around state • what state is required? • how is it constructed/maintained? • how is it used? • what distinguishes wide-area state: • derived from remote nodes dependencies are distributed • relayed via intermediate nodes more dependencies Current metrics mostly treat all state as equal
Proposal For a given piece of state s, measure the ensemble of distributed dependencies that yield s • First cut: measure counting • akin to existing metrics: #msgs, #state • amenable to evaluation by simple examination, simulation
Value vs. Transport Dependencies s is value dependent on x, s is transport dependent on next(B) state at A, R1, R2, R3. vs= #pieces of state on which s is value dependent tsx= #pieces of state relied on to transport x to s next(B) next(B) next(B) next(B) A R1 R2 R3 B x=30° s=x
Counting Dependencies next(B) next(B) next(B) next(B) A R1 R2 R3 B x=30° s=x vx = txx = 0 vs = 1 ; tsx = 4
Counting Dependencies Note: value dependencies accumulate A R1 R2 R3 B C R4 s=x y=20° x=30+y° vx = 1 txy = 2 vy = tyy = 0 vs = 2 tsx = 4
Dependencies Complexity single input: state s, derived from x • complexity of s, cs = (vx + 1)tsx + cx A R1 R2 R3 B C R4 s=x y=20° x=y+30° vs = 2 , tsx = 4 vy = tyy = 0 vx = 1 txy = 2 cx = 1.2+0 = 2 cs = 2.4+2 = 10 cy = 0
Dependencies Complexity single input: state s, derived from x • complexity of s, cs = (vx + 1)tsx + cx … B A s=2 s=i s=d x=0 s=1 vs = d , tss-1 = 1 vx = i tii-1 = 1 cs = O(d2) c= 0 cs = 1 cs = 3
Dependencies Complexity multiple inputs: state s, derived from x1, x2, …, xm two basic variants: • s = ALL (xi) cs = Σ ((vxi + 1)tsxi + cxi) • if vxi = cxi = 0, tsxi = 1, then cs = m • s = ANY (xi) cs = 1/m Σ ((vxi + 1/m)tsxi + cxi) • if vxi = cxi = 0, tsxi = 1, then cs = 1/m
Dependencies Complexity multiple paths: state s derived from x, multiple paths from x to s simple case: m disjoint paths, each incurring d transport dependencies tsx = d/m, cs = vs tsx + cx • if vx = cx = 0, then cs = d/m
Limitations, Future Directions • scope: no validation of assumptions, correctness, quality, performance, etc. • correlated inputs • discriminating transport dependencies • capturing absent dependencies • capturing robustness • count “reverse” dependencies? • role of time • evaluating the metric: future studies
Summary • design simplicity: valued, but poorly measured • question: is design complexity measurable? • conjecture: capturing dependencies in state is key (w.r.t. algorithmic component of a system)
… B A s=2 s=i s=d x=0 s=1 complexity of operations • an operation acts on different pieces of state • each piece of state has a complexity • compute complexity of an operation by (appropriately) combining complexity of state it acts on cs = 0 1 ... O((d-1)2) O(d2) complexity of forwarding operation: cfwd = O(d3)
complexity of operations • an operation acts on different pieces of state • each piece of state has a complexity • compute complexity of an operation by (appropriately) combining complexity of state it acts on cs = k 1 cs = k 2 cs = k 3 fetch(obj) … cs = k m complexity of fetch: cfetch = O(k/m)
Future Studies • centralized solutions simpler? • e.g., RCP vs. DV • designing for low dependency • e.g., soft state-based approaches • layered vs. customized • e.g., PHTs [sigcomm’05] vs. Mercury [sigcomm’04] • different routing options • mesh (RON, ESM), DHT-inspired (VRR/ROFL), centralized (RCP), compact routing-based, landmark routing, coordinate-based, …