2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 05:57:52 +00:00

Create benchmarks: add WIP collection of tips and links

Petr Špaček 2024-09-12 09:35:54 +00:00
parent aec771a202
commit dd963b237e

37
benchmarks.md Normal file

@ -0,0 +1,37 @@
## DNS Benchmarks
Collection of hints and links which can be useful for people new to DNS benchmarking.
### Step 0. Prerequisites
See DNS-OARC 42, DNS Benchmarking 101: Essentials and Common Pitfalls
- [slides](https://indico.dns-oarc.net/event/48/contributions/1033/attachments/991/1943/pspacek.pdf)
- [video recording](https://www.youtube.com/watch?v=ZrMLeyu4gTU&list=PLCAxS3rufJ1fHh8oe9UQ0IwlVfHq30_hh&index=16)
- Test design must be different for any combination of
- resolver
- authoritative server
- normal traffic
- DoS traffic
- server management operations
- :warning: Be absolutely sure to **test your test environment first**.
- If you don't the results are probably garbage
- An echo server will be very useful
- user-space: https://github.com/DNS-OARC/dumdumd/
- XDP (UDP-only): https://gitlab.nic.cz/knot/xdp-utils/
- Usual tuning tips apply:
- beware of [NUMA domains](https://en.wikipedia.org/wiki/Non-uniform_memory_access) in hardware - you _might_ want to restrict yourself to an _inside_ of one NUMA domain - commands [numactl](https://man.archlinux.org/man/numactl.8), [taskset](https://man.archlinux.org/man/taskset.1)
- pick the NUMA domain so it is directly connected to network card in use - tool [lstopo](https://man.archlinux.org/man/lstopo-no-graphics.1.en) can help with that
- find out how many network card queues is available - command [ethtool -l devicename](https://man.archlinux.org/man/ethtool.8)
- pick minimum value from (# of CPUS in the chosen NUMA domain, number of network queues) and use that for number of threads
- these are just a starting point, experiment!
### Resolvers
- An example with explanation how and why we test: https://www.isc.org/blogs/bind-resolver-performance-july-2021/
- **:warning: Results cannot be generalized to other data sets** or setups with any certainty
- Why? Because every single query (and it's timing) changes _state_ of the system under test. Not to speak of dependency on authoritative server performance ...
- Introduction to DNS Shotgun [slides](https://ripe79.ripe.net/wp-content/uploads/presentations/45-benchmarking.pdf), [video](https://ripe79.ripe.net/archives/video/198)