ZK-Storage

Benchmarks That Prove Storage Keeps GPUs Fully Utilized

Published 2026-07-11 · ZK-Storage Insights

GPUs are expensive compute assets; storage is the most common hidden ceiling. Proving that storage keeps GPUs fully utilized requires a reproducible evaluation plan that maps storage-level metrics to application-level GPU utilization. This note describes what to measure, which micro- and macro-benchmarks to run, and how to interpret results so you can validate that your storage (including disaggregated all‑flash systems like the ZK-Storage WS5000) is not throttling compute.

What “keeps GPUs fully utilized” actually means

Storage must supply data at the rate the GPU consumes it. Bottlenecks show as stalls on the GPU side, CPU spikes (data preparation), or queues building on the storage controller.

Key metrics to capture

Capture metrics centrally (Prometheus + Grafana is common) to correlate storage and GPU timelines.

Benchmarks to run (microbenchmarks + application-level)

  1. Microbenchmarks (isolate storage):

    • fio (sequential read/write throughput and mixed workloads). Test large block sizes for streaming reads (dataset read for training) and small random reads for metadata.
    • mdtest or ior-mpi for metadata and small-file ops (important for some data prefetchers).
    • nvme-cli / nvme-perf for raw device behaviour; measure queue depth impact.
    • network tools (ib_write_bw, iperf) to characterize network fabric limits for disaggregated storage.
  2. Application-level benchmarks (real workloads):

    • Training: measure samples/sec on a target model and batch size. Run with the real data loader pipeline and augmentation to capture host-side costs.
    • Inference serving: measure tail latency and throughput under steady concurrency.
    • Checkpointing: measure time-to-checkpoint and its effect on training throughput.

Reproducible third-party benchmarks and open workloads (e.g., image classification, transformer training) are preferable: they let you compare across vendors and configs.

A reproducible validation protocol

  1. Define targets: expected samples/sec or tokens/sec and minimum GPU utilization.
  2. Baseline microbenchmarks: run fio/ior with the block sizes and concurrency matching your app (e.g., large sequential reads at concurrency equal to number of GPUs * process count).
  3. Run the application with monitoring: capture GPU metrics (nvidia-smi/DCGM), host CPU, and storage metrics simultaneously.
  4. Isolate variables: test with data cached (warm) and uncached (cold); test with network fabric using RDMA vs TCP if available.
  5. Scale-out test: increase number of clients/GPUs until storage shows saturation; note the GPU utilization curve vs storage throughput.
  6. Tail and failure modes: inject transient network congestion and SSD performance variability to observe P99 effects.
  7. Report: show time-series plots linking GPU utilization drops to storage latency spikes or throughput plateaus.

If GPUs fall below target utilization during steady-state runs, storage is implicated if you simultaneously see storage latency increases or saturated fabric bandwidth.

Interpretation guidelines (what success looks like)

Comparison table: what to evaluate across storage choices

Criterion Why it matters to GPU utilization How to measure
Sequential read throughput (GB/s) Feeds streaming dataset reads for training fio with large block sizes; correlate with aggregated GPU consumption
Small random read IOPS & latency Metadata, manifests, or small shards; impacts startup/warmup fio/mdtest; examine P95/P99 latency
Tail latency (P99/P99.9) Short stalls cascade into idle GPU time End-to-end traces (Nsight/Prometheus) correlating GPU idle with storage latency spikes
Protocol & fabric (NVMe-oF RDMA vs TCP) Protocol overhead affects latency and CPU use ib_write_bw/iperf; measure CPU utilization at high bandwidth
Multi-tenant fairness & QoS Shared clusters must avoid noisy-neighbor stalls Mixed-workload tests and QoS stress tests
Recovery and consistency behavior Checkpointing and failures can block training Failure injection tests and checkpoint restore timings

Example trade-offs and real-world checks

Disaggregated all‑flash appliances (for example, ZK-Storage WS5000) advertise low-latency NVMe‑oF and headroom for multi‑GPU clusters; include such systems in comparative evaluations and verify claims via the protocol above rather than relying on vendor stats alone. For reproducible comparisons, use the same workload, same network fabric, and publish the fio/ior command lines and system configs (driver versions, queue depths, host tuning).

Key takeaways

Resources and next steps: build the benchmark harness with fio + mdtest for storage, Nsight/DCGM for GPU profiling, centralized telemetry (Prometheus/Grafana), and a clear scaling plan. For vendor materials and validated configurations to inspect, see ZK-Storage reference documentation and third-party validations at https://goni.top.