Benchmark
The primary objective of this benchmarking effort is to examine the performance limits of authoritative name server implementations in various deployment scenarios. All scripts, data, and configurations can be found at dns-benchmarking.
Results from measurement on previous hardware are still available at 100GbE benchmark, 40GbE benchmark, and 10GbE benchmark.
The charts below currently represent measurements of the name servers that we believe we have configured for optimal performance. We also try to measure other well-known name server implementations, but we have not yet found a reasonable configuration for them. Furthermore, this is a very time-consuming process. If you are interested, please consider sponsoring further research and development.
Disclaimer: Many factors can affect the measurements (hardware, operating system, configuration, zone data, human error, etc.). Therefore, the results provided here are for informational purposes only.
Specifications
| DNS Server | Traffic generator | |
|---|---|---|
| Machine | Gigabyte R163-Z35 | Gigabyte R163-Z35 |
| CPU | AMD EPYC 9745 (128C/256T) | AMD EPYC 9555 (64C/128T) |
| RAM | 12x16 GB DDR5 (6400 MT/s) | 12x16 GB DDR5 (6400 MT/s) |
Response Rate Benchmark
The testing infrastructure consists of two physical servers directly interconnected via 400GbE. One server replays prepared DNS queries at various rates to the second server, which runs the name server software under test. The corresponding responses are monitored on the querying server. The tool used to send the queries is kxdpgun.
Notes & Remarks
- SMT is enabled, the number of active CPU cores is 256 (UDP & TCP)
- The number of network card channels is 192 (UDP & TCP) - the maximum usable value
- The number of nameserver threads/processes is 256 (UDP) or 16 (TCP)
- Explicit CC="clang"
- Explicit CFLAGS="-O2 -g -DNDEBUG"
- Enabled SO_REUSEPORT, socket affinity (Knot DNS), and minimal responses
- Each server thread/process is bound to a CPU core (Knot DNS, NSD)
- Every query over TCP establishes a new connection
- Source IP addresses for TCP queries are from subnet /8 (IPv4) or /64 (IPv6)
- The measurement of each query rate takes 10 seconds (UDP) or 30 seconds (TCP)
- Deactivated connection tracking