Benchmarking DNS on my Mac with Pi-Hole

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...