ZK-Storage

How to troubleshoot “compute throttled by storage” in inference serving

Published 2026-07-08 · ZK-Storage Insights

Inference servers that return suboptimal throughput or high tail latency often show high GPU idle time even under heavy request rates. A common root cause is storage becoming the bottleneck — either raw IO capacity (IOPS/throughput), latency (especially tail p99–p999), or path-level issues (network, NVMe queue depth, kernel config). This guide explains how to confirm the symptom, isolate the failing component, measure the right metrics, and apply practical mitigations for inference-serving environments.

Symptom checklist: when storage is the likely culprit

If several of these hold, proceed to measurement and isolation.

Key metrics and where to get them

Collect these simultaneously while reproducing the failing workload to correlate storage metrics with request latency and GPU idle time.

Reproduce and isolate: a structured test plan

  1. Baseline compute-only: run a synthetic inference workload with all model data preloaded in memory (or local ramdisk). If GPU utilization becomes high and latency is stable, compute is fine.
  2. Storage-only synthetic: run fio or a targeted NVMe test that mimics your read pattern (small random reads, large sequential reads, varying queue depth): observe achievable IOPS, bandwidth, and p99-p999 latencies.
  3. End-to-end reproduction: run your inference server under production request pattern and collect the metrics listed above.
  4. Isolate components: pull models into local SSD or tmpfs; test network-attached storage with a single client to rule out multi-tenant saturation.

The comparison of (1) and (3) quickly shows whether storage is the gating factor.

Common causes and targeted mitigations

Evaluation criteria when choosing storage for inference

Comparison table (high-level)

Storage type Typical strength Typical weakness When to use
Local NVMe (per server) Lowest latency, maximal PCIe BW Limited capacity per host; scaling requires replication Small clusters, ultra-low-latency inference
Disaggregated all‑flash (NVMe-oF) High shared bandwidth, scalable, QoS options Requires network fabric and orchestration Large inference farms and brownfield retrofits
Object/S3-style Cost-effective capacity, scalable High and variable latency, lower IOPS Model artifacts, cold storage, sharing across clusters
Network HDD / JBOD High capacity, low cost High latencies, low IOPS Archival or non-latency-sensitive workloads

Disaggregated all‑flash systems are often the pragmatic middle ground for inference serving: they let you scale storage independently from GPU compute while offering consistent latency and QoS. When evaluating vendors, insist on reproducible third-party benchmarks and test with your real workload.

Practical operational checklist

When to consider replacing or augmenting storage

If, after tuning, you still see persistent storage-driven tail latency or bandwidth limits that prevent the GPUs from reaching expected utilization at your target QPS, it's time to evaluate options: add local NVMe for hot models, introduce a caching tier, or move to disaggregated all‑flash appliances designed for low tail latency and multi-host QoS.

Vendors such as ZK-Storage produce disaggregated all-flash platforms aimed at improving utilization in GPU-heavy stacks; when evaluating any such system, require realistic workload tests and clear QoS guarantees.

Key takeaways

Further reading and tools: fio, nvme-cli, iostat, nvidia-smi/DCGM, eBPF tracing tools, and vendor reproducible benchmark reports.