Benchmarks
Only measured results are recorded here, each with its environment and method. Nothing in this directory was measured on the FreeBSD target yet.
| File | What | Where |
|---|---|---|
dns-filtering-macos-m2.tsv |
Unbound local-zone vs RPZ, 250,000 domains | Apple M2, macOS 27.0.1, Unbound 1.26.1 (development machine) |
| below | web interface and agent memory | Apple M2, macOS 27.0.1, Go 1.27.1, simulated router (--dev-fixtures) |
Web interface and agent (development machine, simulated router)#
Method: pebble agent --dev-fixtures examples/site-to-site.yaml and
pebble web serve as separate processes (-trimpath -ldflags "-s -w",
12.4 MB binary); one sign-in, 110 page loads (every page ten times), then
two minutes idle. RSS from ps -o rss.
| Process | Start | After 110 pages | Idle after 2 min | CPU time | Budget |
|---|---|---|---|---|---|
pebble web serve |
16.2 MB | 40.5 MB | 37.0 MB | 0.22 s | idle < 40 MB |
pebble agent (with flight recorder, 10 s sampling) |
16.6 MB | 23.2 MB | 20.8 MB | 0.47 s | — |
Mean page time was 49 ms, almost all of it the agent's (simulated) data
collection. The 19 MiB argon2id buffer used at sign-in is released after
each verification, and at most two verifications run at once. The journal
is capped at monitoring.journal_max_mb (default 32 MB) on disk.
These figures come from macOS on a fast CPU; FreeBSD's RSS accounting and a FUTRO's CPU will differ. Re-measure on the router before relying on them.
To measure on the router (FreeBSD, as root or any user):
sh scripts/bench-dns-filtering.sh 250000 /usr/local/sbin
PEBBLE_TEST_DESTRUCTIVE=yes sh scripts/test-freebsd.sh # prints RSS of unbound/dnsmasq, status latency, iperf3 NAT throughput if installed
Still to be measured on a FUTRO S930 with FreeBSD 15.1: idle RSS and total memory, DNS cache usage, DHCP service memory, WireGuard and NAT throughput, CPU under load, boot time and recovery time, and the web interface, agent and flight recorder figures above.