After watching Level1Techs' THE FORBIDDEN ROUTER II - DIAL-UP BY DAWN video, I wanted to do some DNS benchmarking on my local network.
Since I run Pi-hole locally, and rely on it for local DNS resolution, I wanted to have a baseline so I could compare performance over time.
In the video, Wendell mentioned the use of Gibson's Windows-only DNS Benchmark tool. But that's Windows-only. Or maybe Linux under WINE, but definitely not a native / open source tool that's easily used across different platforms.
I looked around and settled on bulldohzer—for now, at least—as it's easy to install anywhere Node.js runs. I have Node.js installed via Homebrew on my Mac, so I just ran:
npm install --location=global bulldohzer
Then I could run a benchmark against Google and my own local DNS resolver (Pi-Hole):
$ bulldohzer --dns 10.0.100.3 google
Resolvers
█ 10.0.100.3 DNS
10.0.100.3
1.5 ms 1.5 ms 1.9 ms
██████
█ Google DNS
8.8.8.8
13.7 ms 14.3 ms 14.5 ms
██████████████████████████████████████████████████
Response Times
p5 ▅ 1.5 ms 🥇 10.0.100.3 DNS
p50 ▁█ 1.5 ms 🥇 10.0.100.3 DNS
p95 ▁█ 1.9 ms 🥇 10.0.100.3 DNS
The documentation site seems to be offline (https://help.commons.host/bulldohzer/), so right now you have to use this cached version from the Wayback Machine.
I also saw many mentions of namebench
(like this blog post), but it seems like development on it stopped around 2016 or so, and there aren't any versions that run on modern Python (3.x) or macOS 64-bit...