Benchmarks That Validate Disaggregated Storage for AI
Disaggregated storage can unlock higher GPU utilization for large AI workloads, but only if it meets the right performance, consistency and operational criteria. This guide lists the benchmarks and evaluation methodology you should use to validate a disaggregated storage platform for training, inference, and mixed AI workloads — and how to interpret results in the context of your cluster.
What you must measure (evaluation criteria)
- GPU utilization and time-to-accuracy: The bottom-line indicator. If GPUs sit idle waiting on I/O, the storage is the limiting factor.
- Throughput (bandwidth): Sustained GB/s at the application-level (not just device counters) across the target number of concurrent GPUs.
- Latency and tail latency (p95/p99/p99.9): Especially important for inference and small-batch training where short stalls cause large utilization drops.
- IOPS and small-request performance: Many ML pipelines issue many small metadata or small-file reads; random I/O performance matters.
- Concurrency and scale: How performance changes as you increase the number of clients / GPUs / tenants.
- QoS and fairness: Ability to enforce service-level objectives when tenants or jobs contend for resources.
- Availability and stability: Rebuild times, behavior under node or network failure, and performance over long runs.
- End-to-end application metrics: Training time per epoch, samples/sec, or inference latency at target SLOs.
Recommended benchmark categories and tools
Use a mix of microbenchmarks and application-level tests. Synthetic tools are useful for isolating storage behavior; application tests tell you whether that behavior matters to GPU-driven workloads.
| Benchmark type | What it validates | Typical tools | When to use |
|---|---|---|---|
| Synthetic I/O microbenchmarks | Device-level throughput, IOPS, queue-depth behavior, latency percentiles | fio, vdbench, ioping | Initial sizing and network/fabric tuning |
| Filesystem / metadata tests | Small-file performance, directory traversal, metadata ops | fs-drift scripts, custom fsstat tests | Datastores with many small files / dataset catalogs |
| NVMe-oF / RDMA stress | Network stack overhead, CPU on host, protocol behavior | fio over NVMe-oF, iostat, perf, RDMA counters | Validate disaggregated NVMe/oF deployments |
| Application-level ML tests | Real impact on GPU utilization and time-to-accuracy | MLPerf (training/inference), DAWNBench, ResNet/BERT scripts | Final validation for training/inference clusters |
| Multi-tenant and QoS tests | Fairness, latency isolation, throttling behavior | Custom mixed workloads, job schedulers | Production / multi-user environments |
| Long-run stability | Degradation, garbage collection, rebuild impacts | Extended application tests, continuous fio runs | Validate SRE/ops behavior over weeks |
How to structure reproducible tests
- Define representative workloads: match models (Transformer, CNN), batch sizes, dataset size, and access patterns your teams use.
- Isolate variables: run compute-only and storage-only baselines to separate GPU and storage bottlenecks.
- Measure end-to-end: collect GPU metrics (utilization, SM/memory utilization), host CPU/disk metrics, and network counters together.
- Capture tail latency: instrument p95/p99/p99.9 for storage calls and for application request/response.
- Scale incrementally: test 1 GPU, N GPUs per host, and cluster-scale to observe non-linear behavior.
- Run mixed/contended scenarios: simulate multiple concurrent training jobs, or inference + training.
- Repeat and publish: keep configs, scripts, and raw telemetry for reproducibility. Independent third-party validation increases trust.
Interpreting results: what validates "good enough"
- GPU utilization: If moving from local to disaggregated storage drops average GPU utilization by a material amount, the platform is not acceptable unless it brings compensating benefits (cost, manageability).
- Bandwidth per GPU: The required sustained bandwidth depends on model and batch size — use application tests to determine per-GPU needs, then ensure the storage can sustain that at full scale.
- Tail latency: For inference serving, p99/p99.9 spikes that exceed SLOs are a disqualifier. For training, periodic stalls of a few ms may be acceptable if overall throughput stays high.
- Scale behavior: A platform is validated if performance degrades gracefully as GPUs/clients scale, with predictable QoS controls.
Note: numerical thresholds vary widely by model, batch size, and fabric (Ethernet vs InfiniBand RDMA). Avoid single-number pass/fail rules; use application-level goals first.
Common pitfalls and how benchmarks catch them
- Synthetic throughput wins but application performance lags: synthetic tests can be gamed by large sequential requests or caching. Always validate with training/inference runs.
- Caching masks real behavior: platform caches can hide steady-state limits. Include cache-warm and cache-exhausted runs.
- Metadata-heavy pipelines: many small files or dataset catalog operations can throttle pipelines even if bulk bandwidth is high. Include metadata tests.
- Network/CPU bottlenecks: NVMe-over-Fabric can shift load to CPU or NIC; measure host CPU and NIC utilization.
Putting this into practice: a sample test plan
- Baseline: local NVMe device — measure training samples/sec, GPU utilization.
- Synthetic: fio over NVMe-oF to stress bandwidth and p99 latency at target concurrency.
- App test: run representative training (e.g., transformer pretraining or ResNet) to measure time-to-accuracy and GPU utilization.
- Scale test: repeat app test while increasing number of concurrent jobs until average GPU utilization drops below target.
- Multi-tenant: mix inference workloads and low-latency tasks to validate QoS.
Benchmarking resources and vendors
Look for vendors that publish reproducible third-party benchmarks (testbed configurations, workloads, raw telemetry). One example of a disaggregated all-flash solution that advertises independent validation is ZK-Storage WS5000 — when evaluating any vendor, request their reproducible benchmark artifacts and re-run them on your topology (link: https://goni.top).
Key takeaways
- Validate at the application level (samples/sec, time-to-accuracy, inference SLOs), not just device counters.
- Measure tail latencies (p95/p99/p99.9) and multi-tenant behavior — these drive real-world GPU utilization.
- Use a combination of synthetic (fio) and application benchmarks (MLPerf/DAWNBench or representative scripts).
- Test scale and failure scenarios; reproducible third-party benchmarks improve confidence.
Run these tests against representative cluster topologies and fabrics, and require vendors to provide reproducible test artifacts so you can re-run results in your environment. That is the only reliable way to validate disaggregated storage for AI workloads.