Subject: | Prefetch |
Date: | Sat, 24 May 2014 09:34:39 -0400 |
To: | bind9-bugs@isc.org |
From: | Timothe Litt <litt@acm.org> |
My resolvers don't have enough traffic to make prefetch very
interesting, so I haven't played with it.
Nonetheless, I did think about it.
So while this isn't exactly a 'bug' report, I thought I'd share the
thoughts in case they are useful.
The 9.10 'prefetch' mechanism is currently tuned by a TTL threshold
('elegibility') and a window ("trigger").
Both are fixed global parameters.
The threshold makes intuitive sense - no point in prefetching if TTL is
very small.
The window is intended to avoid prefetching low activity zones so the
records can expire from the cache; prefetch is initiated if a request
arrives in the window at the end of TTL.
It's not obvious that a fixed window is the only sensible way to specify
when to prefetch. Has any thought been given to alternatives?
One that comes immediately to mind is % TTL remaining. This would adapt
to the TTL of the record, and provide some more useful opportunities for
tuning caching at the resolver.
Some examples:
.5 - aggressive - cuts TTL in 1/2, minimize chance of miss
.95 - conservative - fetch near the end, maximize caching.
.01 - 'somewhat insane' - try to cache even low use records
One might specify this using a fractional trigger value, say:
prefetch .8 9; # 80%
The integer part could also be a limit (e.g. 90.8 = 80%, but no sooner
than 90 seconds remaining).
This would be consistent with the current definitions.
A 'and no later than' might also be useful - but risks making thing a
bit messier.
Speaking of messier:
the option syntax
prefetch number number;
is not desirable, as it's not easy to remember. Please stop adding
options of this form. (dnssec-sig-validity-interval also has this sort
of syntax.)
I understand the desire to not have a zillion top-level keywords (e.g.
prefetch-trigger and prefetch-elegibility). As an alternative,
consider a position-independent keyword syntax such as
prefetch trigger=5 elegibility=60
This could be retrofitted to the existing mult-value options and be
backward-compatible (no keyword => defined by order), but would make it
a lot easier to remember what's going on - whether reading a config file
or generating one.
--
Timothe Litt
ACM Distinguished Engineer
--------------------------
This communication may not represent the ACM or my employer's views,
if any, on the matters discussed.
Message body not shown because it is not plain text.