Hashed and Hierarchical Timing Wheels
Motivation
Model & Performance Measure
Currently Used Timer Schemes
Tree based timers
Simple Timing Wheel
Hashed Timing Wheel
Hashed Timing Wheel
Hierarchical Timing Wheel
Hierarchical Timing Wheels
Comparison
92.00K
Категория: ПрограммированиеПрограммирование

Hashed and Hierarchical Timing Wheels

1. Hashed and Hierarchical Timing Wheels

A paper by
George Varghese and Tony Lauck

2. Motivation

Timers are important for
Timer maintenance high if
Failure recovery, rate based flow control, scheduling algorithms,
controlling packet lifetime in networks
Processor interrupted every clock tick
Fine granularity timers are used
# outstanding timers is high
Efficient timer algorithms are required to reduce the
overall interrupt overhead

3. Model & Performance Measure

Model & Performance Measure
Routines in the model
Client Invoked :
Timer tick invoked :
START_TIMER(Interval, Request_ID, Expiry_Action)
STOP_TIMER(Request_ID)
PER_TICK_BOOKKEEPING
EXPIRY_PROCESSING
Performance Measure
Space : Memory used by the data structures
Latency : Time required to begin and end any of the
routines mentioned above

4. Currently Used Timer Schemes

a
a
b
c
d
e
Can maintain absolute expiry
time or the timer interval
START_TIMER = O(1)
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING = O(n)
b
c
d
e
f
maintain absolute expiry time
START_TIMER = O(n)
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING = O(1)

5. Tree based timers

a
a
b
b
c
c
d
d
maintain absolute expiry
time
START_TIMER = O(log(n))
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING = O(1)
Can degenerate to a
linear list in case of equal
Interval timers
START_TIMER = O(n)
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING = O(1)

6. Simple Timing Wheel

0
1
7
2
6
3
5
4
START_TIMER = O(1)
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING =
O(1)
Keep a large timing wheel
A curser in the timing wheel
moves one location every
time unit (just like a seconds
hand in the clock)
If the timer interval is within
a rotation from the current
curser position then put the
timer in the corresponding
location
Requires exponential amount
of memory

7. Hashed Timing Wheel

# of rounds remaining
2
0
2
1
2
6
3
1
1
7
5
4
4
2
1
2
Say wheel has 8 ticks
Timer value = 17
Make 2 rounds of
wheel + 1 more tick
Schedule the timer in
the bucket “1”
Keep the # rounds with
the timer
At the expiry
processing if the #
rounds > 0 then
reinsert the timer

8. Hashed Timing Wheel

Sorted Lists in each bucket
The list in each bucket can be insertion sorted
Hence START_TIMER takes O(n) time in the worst case
If n < WheelSize then average O(1)
Unsorted list in each bucket
List can be kept unsorted to avoid worst case O(n) latency for
START_TIMER
However worst case PER_TICK_BOOKKEEPING = O(n)
Again, if n < WheelSize then average O(1)

9. Hierarchical Timing Wheel

1 3
0
7
3 5
1
2
6
3
5
4
3 7
3
5 1
0
7
Hours wheel
1
2
6
3
5
1
5
1
Minutes wheel
4
2
7
5
0
7
1
2
6
3
5
4
Seconds wheel

10. Hierarchical Timing Wheels

START_TIMER = O(m) where m is the number of wheels
The bucket value on each wheel needs to be calculated
STOP_TIMER = O(1)
PER_TICK_BOOKKEEPING = O(1) on avg.

11. Comparison

START_TIMER
STOP_TIMER
PER_TICK
Straight Fwd
O(1)
O(1)
O(n)
Sequential
List
O(n)
O(1)
O(1)
Tree Based
O(log(n))
O(1)
O(1)
Simple
Wheel
O(1)
O(1)
O(1)
Hashed
O(n) worst case
Wheel (sorted)
O(1) avg
O(1)
O(1)
Hashed Wheel
(unsorted)
O(1)
O(1)
O(n) worst case
O(1) avg
Hierarchical
Wheels
O(m)
O(1)
O(1)
High memory requirement
English     Русский Правила