diff --git a/benchmarks.md b/benchmarks.md new file mode 100644 index 0000000..3816026 --- /dev/null +++ b/benchmarks.md @@ -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) \ No newline at end of file