]> git.ipfire.org Git - thirdparty/bind9.git/commit
Reduce the default RBT hash table size to 16 entries (4 bits) v9.17.4
authorOndřej Surý <ondrej@isc.org>
Mon, 10 Aug 2020 07:02:30 +0000 (09:02 +0200)
committerMichał Kępień <michal@isc.org>
Mon, 10 Aug 2020 10:08:09 +0000 (12:08 +0200)
commit9a2a819817405ad42fd99b64ff8eeedb28ce4604
tree8c9d2e254abfa8e4a2fb222d29b847eed092977a
parent94d9ffd4a23686e61c11a3208348197cefeea15a
Reduce the default RBT hash table size to 16 entries (4 bits)

The hash table rework MRs (!3865, !3871) increased the default RBT hash
table size from 64 to 65,536 entries (for 64-bit architectures, that is
512 bytes before vs. 524,288 bytes after).  This works fine for RBTs
used for cache databases, but since three separate RBT databases are
created for every zone loaded (RRs, NSEC, NSEC3), memory usage would
skyrocket when BIND 9 is used as an authoritative DNS server with many
zones.

The default RBT hash table size before the rework was 64 entries, this
commit reduces it to 16 entries because our educated guess is that most
zones are just couple of entries (SOA, NS, A, AAAA, MX) and rehashing
small hash tables is actually cheap.  The rework we did in the previous
MRs tries to avoid growing the hash tables for big-to-huge caches where
growing the hash table comes at a price because the whole cache needs to
be locked.

(cherry picked from commit 1e043a011b9fe3f62f9f5c7a9b74b44adc03ca44)
lib/dns/rbt.c