Skip to main content

Benchmarks: nyxd vs Docker vs Podman (Alpine 3.23 / QEMU)

Compare the same workload on three as similar as possible Alpine Linux 3.23 guests under QEMU. One VM runs Docker, one Podman, one nyxd + nyx. Goal: apples-to-apples numbers for startup, resource use, and steady-state behavior—not a claim of “fastest in all cases.”

Environment matrix (fill before each run)​

SettingDocker VMPodman VMnyxd VM
QEMU CPU model / -smp
RAM (-m)
Disk backend (qcow2 raw, cache mode)
Alpine version / kernel (uname -a)
Docker version (docker version)
Podman version (podman version)
nyxd commit / nyx version
Date / timezone

Keep CPU count, RAM, and disk identical across VMs. Prefer virtio NIC and disk. Snapshot or reinstall from the same base image between product runs.

Workload (must be identical)​

  1. Use the script or contract in workload/README.md (e.g. pull fixed image tag → run container with fixed flags → warm-up → measured phase).
  2. Record exact commands for each stack (Dockerfile / podman run / nyx pull + nyx run) in your run notes so runs are reproducible.
  3. Run the same client-side load generator from a fourth machine or the host against the published container port (same concurrency, duration, and seed if applicable).

What to measure (example rows)​

Copy TEMPLATE.md into results/YYYY-MM-DD-run-N.md and fill after each trial.

Suggested metrics:

MetricHow to capture (examples)
Cold pull → first readytime until health check passes
Daemon RSS after steady stateps / systemd-cgtop
Container start latencytime wrapper or daemon logs
Steady CPU %pidstat, top batch mode
Load test throughput / p99wrk, hey, vegeta (same binary + args)
Stop / remove latencyscripted teardown

Tracing (optional)​

  • Enable nyxd --log-level debug for one run; archive logs under results/…/.
  • Docker: journalctl -u docker or daemon debug (document flags).
  • Podman: rootless vs rootful affects numbers—pick one and keep it consistent across all runs in a series.

Ethics / license​

This repo is PolyForm Noncommercial for the nyxd code; benchmark numbers and your scripts in results/ are yours. Do not redistribute proprietary vendor binaries from inside this folder.

See also​

  • QEMU Alpine — booting Alpine 3.23 under QEMU for nyxd experiments.
  • Usage — nyx commands used in the nyxd column.