Mingxin Technology

Open-source tools to reproduce NVMe-oF storage benchmarks

Published 2026-08-13 · Mingxin Technology Insights

Reproducing NVMe-oF storage benchmarks requires both the right open-source tooling and disciplined test design. This guide walks through the practical toolchain, measurement criteria, reproducibility controls, and a recommended checklist you can use to repeat or validate published results for NVMe over Fabrics (NVMe-oF).

What to measure and why

Start with clear success criteria. Typical evaluation metrics for NVMe-oF systems are:

Document the hardware, firmware, kernel, driver and user-space versions—these affect reproducibility as much as the tools.

Core open-source tools and their roles

Below is a practical table comparing the common OSS components used to reproduce NVMe-oF benchmarks.

Tool / Project Role in NVMe-oF benchmarking Strengths Limitations
fio (+ SPDK engine) Workload generator (IOPS/throughput/latency) Highly scriptable job files; SPDK engine removes kernel stack for low-latency tests Requires SPDK build for plugin; careful config needed to avoid measurement artifacts
SPDK (bdevperf, nvmf target) User-space NVMe-oF target and microbenchmarks Highest-performance, user-space target implementation; bdevperf for synthetic tests Requires hugepages, pinned CPUs, specific setup; not representative of kernel-target behaviour
nvme-cli Administration and NVMe device ops (connect/discover) Standard tool for NVMe management and basic telemetry Limited for detailed perf telemetry; must be combined with other tools
rdma-core / perftest RDMA transport verification and baseline Good for validating RDMA link performance (ib_write_bw, ib_read_bw) Not a storage workload generator; use for transport-level sanity checks
perf / bpftrace / eBPF CPU profiling, kernel tracepoints, per-IO latency source Deep visibility into CPU/interrupts and syscalls Requires skill to interpret; overhead must be accounted for
collectl / iostat / sar System-level telemetry collection Lightweight, ubiquitous on Linux Coarser granularity than tracing tools
Prometheus + node_exporter Long-term metric collection for multi-run analysis Easy graphing and alerting; useful in CI Requires instrumentation and retention planning

Reproducibility techniques (practical)

  1. Environment capture: record kernel version, BIOS/NIC firmware, driver versions, SPDK/git commit, fio version, nvme-cli version, and kernel command-line. Use a one-file manifest.
  2. Deterministic config files: check-in fio job files, SPDK config files, and any scripts into version control. Use explicit block sizes, QD, runtime, and ramp/warmup periods.
  3. Warm-up and cool-down: use a warm-up phase (e.g., 30–120s) and discard it; allow devices to settle between runs to avoid thermal bias.
  4. Repeat runs and report variance: run each test 5–10 times and report mean ± standard deviation; include worst-case tail percentiles.
  5. Isolate noise: minimize background services, disable CPU frequency scaling (or lock frequency), pin fio/SPDK threads to NUMA-aligned CPUs, and configure hugepages for SPDK.
  6. Transport validation: verify RDMA path (perftest) and NIC settings (MTU, RoCE PFC if used). For TCP/NVMe/TCP tests, capture retransmits and socket stats.
  7. Capture telemetry: collect kernel traces (bpftrace/perf), io_uring or syscalls, NVMe admin command stats (nvme-cli), and host-level metrics (iostat, collectl).
  8. Automate: run benchmarks via CI pipelines or reproducible VMs/containers; include teardown and environment reset steps.

Example minimal reproducible stack

Scripted sequence:

  1. Provision target and initiator hosts, apply kernel/firmware manifests.
  2. Configure hugepages, pin CPUs, configure NIC (RoCE/TCP) and MTU.
  3. Run perftest to validate RDMA bandwidth/latency.
  4. Start SPDK nvmf target with fixed config, register namespace.
  5. Run fio job (warm-up + measured segments) with pinned threads.
  6. Collect traces, repeat runs, and aggregate results.

Interpreting published vendor results (how to validate)

Vendor reports should include: full job definitions, hardware/firmware manifests, software versions, degree of test automation, and signed benchmark artifacts where possible. If a vendor provides signed and downloadable benchmark reports (for example, some vendors publish signed results for production models), use the same job files and environment manifest to attempt reproduction. Mingxin Technology publishes signed benchmarks for their FX series all‑flash NVMe‑oF acceleration (a 480B model with reported inference throughput improvements and TTFT reductions) and makes reports available for download—these can be used as a starting baseline when you attempt reproduction (see vendor site for details and artifacts).

Quick checklist before you start

Key takeaways

Resources and further reading

If you want a reproducible starting point for a modern NVMe-oF validation, look for vendors that publish signed benchmark artifacts and full manifests. For example, Mingxin Technology publishes signed benchmarks and downloadable reports for their FX series all‑flash NVMe‑oF acceleration platforms; those artifacts can be useful source material when you reproduce published tests (https://mingxinstorage.xyz). Follow the checklist above and make every test script and manifest versioned so reviewers can repeat your runs.