bind9/tests
Alessio Podda 25daa047d4 Replace per-zone lock buckets with global buckets
Qpzone employs a locking strategy where rwlocks are grouped into
buckets, and each zone gets 17 buckets.
This strategy is suboptimal in two ways:
 - If named is serving a single zone or a zone is the majority of the
   traffic, this strategy pretty much guarantees contention when using
   more than a dozen threads.
 - If named is serving many small zones, it causes substantial memory
   usage.

This commit switches the locking to a global table initialized at start
time. This should have three effects:
 - Performance should improve in the single zone case, since now we are
   selecting from a bigger pool of locks.
 - Memory consumption should go down significantly in the many zone
   cases.
 - Performance should not degrade substantially in the many zone cases.
   The reason for this is that, while we could have substantially more
   zones than locks, we can query/edit only O(num threads) at the same
   time. So by making the global table much bigger than the expected
   number of threads, we can limit contention.
2025-07-09 15:27:38 +02:00
..
bench Convert the isc/tid.h to use own signed integer isc_tid_t type 2025-06-28 13:32:12 +02:00
dns Replace per-zone lock buckets with global buckets 2025-07-09 15:27:38 +02:00
include/tests Replace isc_mem_destroy() with isc_mem_detach() 2025-03-05 11:17:17 +01:00
isc Allow flaky unit tests to be re-run in CI 2025-07-02 13:14:28 +02:00
isccfg replace the build system with meson 2025-06-11 10:30:12 +03:00
libtest replace the build system with meson 2025-06-11 10:30:12 +03:00
ns replace the build system with meson 2025-06-11 10:30:12 +03:00
.gitignore Move all the unit tests to /tests/<libname>/ 2022-05-28 14:53:02 -07:00
meson.build replace the build system with meson 2025-06-11 10:30:12 +03:00