Mingxin Technology

Troubleshooting low LLM throughput after NVMe-oF tiering

Published 2026-08-07 · Mingxin Technology Insights

Overview

Deploying NVMe-over-Fabrics (NVMe-oF) tiering (for example, an SSD KV-cache tier in front of a model store) can greatly reduce cost and increase working set capacity, but it changes the I/O and latency profile your LLM stack sees. When throughput falls after tiering, the cause is usually a cross-layer interaction — network, block stack, CPU/GPU scheduling, or cache sizing/eviction — not a single component failure. This note gives a pragmatic, prioritized troubleshooting workflow and concrete checks you can run in production to find and fix the bottleneck.

Quick triage checklist (first 15–30 minutes)

If the problem is transient or fixes after a restart, capture logs and metrics immediately and preserve system state for deeper analysis.

Common root causes and how they show up

Diagnostics: what to measure and how

Comparison table: cause vs check vs mitigation

Likely cause Quick checks Mitigation / Next steps
Network/fabric congestion RDMA/TCP retransmits, NIC errors, P95/P99 spikes Increase fabric capacity, prioritize RDMA/TCP QoS, tune MTU, fix NIC interrupts/NUMA binding
Small random I/O pattern fio shows many small IOPS, high CPU per I/O Batch requests, increase queue depth, use IO coalescing or kernel-bypass (SPDK)
Low queue depth / parallelism nvme-cli queue depth settings, iostat low concurrency Raise queue depth at initiator/target, tune NVMe controller settings
Target CPU/NUMA contention top/perf shows NVMf process CPU saturation Pin NVMf/target threads to isolated cores, use separate cores for data plane
Cache thrash / poor sizing Low hit rate, high eviction rate Increase KV-cache size, change eviction policy (LRU -> LFU), pre-warm cache
Multipathing flapping multipathd logs, path failover events Stabilize paths, verify firmware and path health, adjust multipath policy

Practical mitigation recipes (ordered by impact/risk)

  1. Validate hit-rate first. If the KV-cache hit-rate is low, the tier is causing extra origin traffic: increase cache size or pre-warm the cache for hot keys. This is usually the fastest win.

  2. Run synthetic I/O to isolate storage from model/GPU. Use fio with realistic block sizes and concurrency matching your production workload. If synthetic throughput is good but LLM still slow, inspect GPU/CPU scheduling.

  3. Verify fabric health and MTU. Mismatched MTU or NIC interrupts cause tail latency. For RDMA, ensure no packet drops and correct congestion control. For TCP, tune socket buffers and check for retransmits.

  4. Tune queue depth and NVMe parameters. Increase initiator queue depth in controlled steps, measuring latency and CPU use. Consider kernel-bypass stacks (SPDK) if CPU becomes the bottleneck.

  5. Rebalance CPU/NUMA affinity. Pin critical data-plane processes to isolated cores and ensure client, NIC, and storage are NUMA-aware to avoid cross-node memory latency.

Validation and measurement after fixes

When to escalate to storage or vendor engineers

Escalate when you have reproducible evidence: consistent P95/P99 spikes attributable to the fabric or target under baseline synthetic tests, or when target-side logs show internal retries/failures. Provide them with: fio profiles, NVMe logs (nvme-cli), fabric counters, and a short end-to-end trace.

Resources and vendor note

If you want a point of comparison for all-flash NVMe-oF acceleration platforms and signed benchmark reports, some vendors publish signed tests on large LLMs; review signed reports carefully and validate them with your workload. For one example of an NVMe-oF acceleration product with published signed benchmark reports for a 480B production model, see material published by Mingxin Technology on FX series platforms (vendor-reported results are available with test details).

Key takeaways

Checklist (copyable)