230 likes | 346 Views
This project explores efficient techniques for managing access probabilities within a lookup table structure, leveraging binary search trees (BST). By applying self-adjusting heuristics, we find a balance between access frequency and optimization costs, minimizing depth and maintaining average access time. Our approach includes incrementally optimizing during search operations while avoiding heavy overhead in accounting. Simulation results reveal average performance parallels to compiled options but point out areas for improvement in worst-case scenarios, particularly in managing tree depth for uniform distributions.
E N D
Using Access Probabilities In Address Lookups Jim Washburn & Katerina Argyraki EE384Y Class Project
Access probabilities are not uniform • Lookup table contains set of keys Ki • Access probabilities Pi • Access times Ai • Avg access time • Ei = i {AiPi}
Where is accounting info stored? • Per key • Per nexthop
Lookup table operations • add(key) • delete(key) • search(key) • compile( ) • When to compile? • What happens to searches while compiling ? • How long to maintain accounting info?
Approach to the problem • Amortize the optimization • Incrementally optimize at search time • Perform optimization step with low probability per access • keeps cost low!
Base structure: BST on intervals • Can do prefix matches or exact matches • Allows many different tree configurations for the same set of keys • can be dynamically reconfigurable • Permits localized incremental operations • affect just two nodes
BST rotation operation z z right y x left x y C A A B B C Only nodes x and y are written
Self-adjusting heuristics • single rotation on every access • too conservative? • move-to-rooton every access • too aggressive? • move-up on every access • “middle ground” solution • but how many nodes?
Low-cost heuristics • single rotation with low probabilityp • decrease the amount of writes • move-to-root with probability proportional to node depth • favor nodes that are deep down the tree • move-up with counters • per node counter keeps # of hits • a node is never moved above another node with higher counter
BST as Markov Chain • Tree can be in any of its possible configurations, with probabilities given by the stationary distribution. …
Markov calculations (1) Done with 60 randomly selected access distributions, for a 3 node tree Probability of optimization step set to 0.1
Simulation results (1) • Scenario 1: 99% hit on 7 rules • .5, .25, .12, .6, .3, .1 • Average performance (the good news):
Simulation results (2) • Scenario 1: 99% hit on 7 rules • .5, .25, .12, .6, .3, .1 • Worst-case performance (the bad news):
Simulation results (3) • Scenario 2: 60% hit on 12 rules • .13, .09, .06, .05, .04, .03, .02, .01, .01, .01 • Average performance:
Simulation results (4) • Scenario 2: 60% hit on 12 rules • .13, .09, .06, .05, .04, .03, .02, .01, .01, .01 • Worst-case performance:
Simulation results (5) • Scenario 3: uniform distribution • The worst-case for our heuristics! • Average performance:
Simulation results (6) • Scenario 3: uniform distribution • The worst-case for our heuristics! • Worst-case performance:
Bounding the tree depth • Check before moving a node • If move will increase depth beyond max, don’t do it • How to check? • Keep extra info per node e.g., node depth • Must not introduce extra accesses for maintenance! • Impossible with single rotation or move up
MTRR with bounded worst-case • Augmented BST • Each node knows • the depth of its longest branch on the left • the depth of its longest branch on the right • Rotating a node up, requires updating all its ancestors up to the root • With move-to-root we do that anyway
Simulation results (1) • Scenario 1: 99% hit on 7 rules • .5, .25, ,12, .6, .3, .1 • Average performance:
Simulation results (2) • Scenario 1: 99% hit on 7 rules • .5, .25, ,12, .6, .3, .1 • Worst-case performance:
Conclusions • We can optimize without having to maintain per-key accounting state, or periodically recompiling the entire data structure. • Average access time results comparable to compiled results, which are close to lower bound which is determined by entropy. • Worst case results not as good, need more heuristics to bound the tree depth