Reproducible benchmark suites comparing pboss with the field, on real machines, with every raw number committed alongside the code that produced it.
More runtimes and competitors will land as sibling folders
(benchmarks/<runtime>), each self-contained with its own scripts, tests,
and results/.
- Same application, same runtime, same machine, same load. The only difference between the two columns of any table is which process manager supervises the workload. This measures the overhead of managing, not the raw performance of the runtime underneath. Cluster comparisons keep the worker count and the client-facing port identical; where the two managers' cluster models differ (deno: pboss's kernel SO_REUSEPORT vs pup's userland load balancer) each runs its own native model and the report says so — that difference IS the manager.
- Cluster mode is only claimed where it genuinely exists. pm2's cluster
mode is
node:clusterinside its daemon — for Node apps it is real and measured head-to-head; for Bun apps it cannot wrap a non-Node interpreter (the-i Nflag silently downgrades to fork mode), so the bun suite records pm2 as not supported in cluster mode instead of publishing fork-mode numbers under a cluster label. - Never one run. Repeats with medians and per-run lists, manager order alternating between runs.
- Raw data ships with the repo. Every number in a report traces to a
file under that suite's
results/raw/— autocannon JSON,/procsamples, event logs. - A named winner per row, not a naked sign. Tables carry a Winner column
(direction-aware) with the relative difference
(pboss − pm2) / pm2 × 100beside it; level rows read “tie”. - Honest caveats. Same-machine load generation, box-specific absolute numbers, and any dropped load levels are stated in the report, not hidden.
cd benchmarks/bun # or benchmarks/node, or benchmarks/deno
npm install # the suite's tools (autocannon, …) — pinned locally
BENCH_PROFILE=smoke bash scripts/benchmark.sh # verify the harness fast
bash scripts/benchmark.sh # the standard profileEvery profile runs the full matrix in both fork and cluster mode
(BENCH_INSTANCES workers, default one per core). Each suite's README
documents its profiles, environment variables, and how to point it at a pboss
repo checkout instead of an installed CLI.
