Port: 15353 | Image: ferrous:bench
All queries resolve from server cache — measures peak throughput.
| Provider | QPS | Avg (ms) | Lost % | Total Qrys | Base Mem (MB) |
|---|---|---|---|---|---|
| Quad9 | 957.81 | 96.91 | 0.14 | 28858 | 143.36 |
| Cloudflare | 912.15 | 96.93 | 0.25 | 27522 | 143.52 |
| 921.44 | 92.47 | 0.38 | 27837 | 116.48 | |
| OpenDNS | 958.06 | 97.25 | 0.13 | 28935 | 136.61 |
| Quad9 | 958.79 | 95.79 | 0.17 | 28902 | 141.18 |
| Cloudflare | 1005.41 | 94.23 | 0.10 | 30287 | 142.04 |
| 996.56 | 93.96 | 0.11 | 30015 | 141.59 | |
| OpenDNS | 999 | 96.05 | 0.09 | 30087 | 142.66 |
Every query requires full upstream resolution — measures worst-case performance. In common-denominator mode some servers report near-zero QPS when plain-DNS upstream forwarding fails.
| Provider | QPS | Avg (ms) | Lost % | Total Qrys | Base Mem (MB) |
|---|---|---|---|---|---|
| Quad9 | 198.74 | 104.96 | 0.06 | 6000 | 143.26 |
| Cloudflare | 199.56 | 103.56 | 0.04 | 6000 | 143.34 |
| 197.59 | 99.18 | 0.35 | 5959 | 132.33 | |
| OpenDNS | 199.54 | 102.21 | 0.06 | 6000 | 141.09 |
| Quad9 | 175.30 | 208.32 | 0.32 | 5285 | 139.82 |
| Cloudflare | 199.23 | 106.64 | 0.19 | 6000 | 141.65 |
| 199.48 | 101.79 | 0.07 | 6000 | 140.99 | |
| OpenDNS | 199.60 | 103.05 | 0.01 | 6000 | 141.72 |
90% cached + 10% unique domains — simulates real-world mixed workload.
| Provider | QPS | Avg (ms) | Lost % | Total Qrys | Base Mem (MB) |
|---|---|---|---|---|---|
| Quad9 | 935.90 | 98.70 | 0.16 | 28218 | 146.36 |
| Cloudflare | 900.28 | 98.64 | 0.25 | 27155 | 146.38 |
| 935.71 | 96.13 | 0.21 | 28216 | 135.51 | |
| OpenDNS | 983.51 | 96.83 | 0.08 | 29620 | 145.60 |
| Quad9 | 943.58 | 95.53 | 0.23 | 28460 | 143.71 |
| Cloudflare | 1014.45 | 93.69 | 0.09 | 30555 | 144.18 |
| 986.07 | 97.32 | 0.08 | 29695 | 144.38 | |
| OpenDNS | 993.57 | 96.16 | 0.08 | 29922 | 145.10 |
Domains on the sinkhole blocklist — measures filtering throughput.
| Provider | QPS | Avg (ms) | Lost % | Total Qrys | Base Mem (MB) |
|---|---|---|---|---|---|
| Quad9 | 956.52 | 99.76 | 0.10 | 28808 | 150.54 |
| Cloudflare | 967.51 | 94.95 | 0.20 | 29185 | 148.98 |
| 915.23 | 97.03 | 0.27 | 27602 | 138.62 | |
| OpenDNS | 981.16 | 94.60 | 0.15 | 29567 | 149.10 |
| Quad9 | 898.89 | 100.70 | 0.22 | 27104 | 148.09 |
| Cloudflare | 985.50 | 94.68 | 0.14 | 29694 | 148.11 |
| 997.28 | 93.08 | 0.14 | 30059 | 147.91 | |
| OpenDNS | 1003.27 | 96.05 | 0.12 | 30222 | 147.69 |
This server uses DoH for best-of-breed mode. Comparisons against servers using different protocols (DoH, DoT, plain) partly reflect protocol overhead. The common-denominator mode forces all servers to plain UDP 53 to isolate server-side performance.
Before each scenario, a 5-second dnsperf warmup pass is run
to stabilize connections and fill the TCP congestion window. For
cache-hit and mixed scenarios, the server cache is also pre-warmed.
The measurement window (-l 30) begins only after both
warmup phases complete.
dnsperf -l 30 -c 10 -q 100 -Q 5000 -S 1