Mingxin Technology

Troubleshooting low inference throughput after storage acceleration

Published 2026-08-14 · Mingxin Technology Insights

If inference throughput falls after deploying a storage-acceleration layer (NVMe-oF or KV cache tiering), the cause is usually an interaction between IO patterns, transport configuration, and model-serving concurrency — not a single "drop-in" problem. This guide gives a systematic way to identify the bottleneck, collect the right telemetry, run controlled tests, and apply mitigations.

Quick diagnostic checklist (do these first)

Key telemetry to collect

Collect end-to-end and per-component metrics for a meaningful root-cause analysis:

Common root causes and how to detect them

Root cause How it shows up Key diagnostics
Small, high-concurrency reads (inefficient IO pattern) High IOPS but low throughput; many p99 spikes Avg IO size, per-request IO counts, NVMe p99 latency
Cache miss storms or poor prefetching Low cache hit ratio; sudden spikes to backend storage Cache-hit ratio over time, backend bandwidth bursts
NVMe-oF transport misconfig (queue depths, RDMA timeouts) Elevated RDMA retransmits, increased p99 storage latency rdma_counters, NIC stats, nvme-cli latency traces
CPU waiting/softirq saturation Low CPU idle but high softirq; NIC/driver backlog top, /proc/interrupts, runqueue length
PCIe/NVMe controller bottleneck Per-NVMe namespace high latency; queue depth starvation nvme-cli get-log, PCIe link stats
GPU-side memory pressure or poor batching High GPU memory utilization, low SM occupancy, smaller batches GPU metrics, batch-size histogram
NUMA/affinity misplacement Latency variance across workers numactl placement, CPU/GPU proximity checks

Reproducible test plan (A/B controlled)

  1. Recreate the exact inference workload (same model, tokenizer, inputs, concurrency). 2. Run baseline on pre-acceleration system and capture all telemetry. 3. Deploy acceleration but keep a subset of hosts unchanged to run A/B concurrently. 4. Introduce microbenchmarks: synthetic large-sequential reads, random small reads, and model-shaped IO traces. 5. Toggle cache policies (write-through vs write-back, prefetch on/off), queue depths, and NVMe-oF transport options.

Use gated acceptance: require that inference/sec and TTFT meet predefined thresholds across p95/p99 before rolling wide; if not, rollback or adjust stop-loss settings.

Practical mitigations (ordered by impact)

When storage acceleration still underperforms: escalate checks

Example decision table: where to act first

Symptom Most likely layer First corrective action
p99 storage latency spikes but low read bandwidth Storage/fabric Check cache-hit ratio and NVMe-oF retransmits; increase queue depth
High CPU softirq and low GPU utilization Host/network Offload tuning, interrupt affinity, reduce kernel softirq saturation
TTFT regression, throughput flat Batching / serving logic Re-tune batching windows or implement early-token streaming

Key takeaways

Resources and next steps

If you share a short telemetry snapshot (p95 storage latency, cache-hit ratio, GPU utilization) I can walk through targeted next steps for your environment.