GO TO A SECTION

↑ ↓ to navigate · Enter to openExplore all sections →
FDEInterviews logo
RecentarXiv preprint

TENT: A Declarative Slice Spraying Engine for Performant and Resilient Data Movement in Disaggregated LLM Serving

Mooncake's team rebuilt its KV transfer engine after running it on thousands of GPUs: declare what to move, and 64 KB slices go to whichever links are fastest right now. 1.36x serving throughput.

Breakdown by FDE Interviews · 12 min read · Updated

About the original · 2026
AUTHORS
Ren, Qin, Ma, Cai, et al.
FROM
9#AISoft, Tsinghua University, Moonshot AI, Alibaba Cloud, Zhejiang University, Ant Group, Approaching.AI
PUBLISHED
Apr 2026 · arXiv preprint
CITED BY
1Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 20% of this breakdown.

01

The paper in one minute

In disaggregated serving (prefill and decode on different machines) and multi-turn agent serving, the KV cache moves between GPUs and machines all the time, and so do model weights during online RL. These are large "elephant" transfers on the critical path to the first token. They share the network with small, latency-critical "mice" such as MoE expert traffic.

The authors ran Mooncake Transfer Engine on thousands of GPUs and found three recurring problems with the usual design, where the application binds a transfer to a transport and set of NICs at setup and the engine stripes it evenly. Silos: NVLink and RDMA descriptors don't mix, so paths like "remote DRAM to local GPU over NVLink" fall back to TCP. Stranding: even striping ignores a slow, congested or cross-NUMA rail, and the whole transfer waits for it. Fragility: one cluster logged 382 hardware failures a month, and each link fault surfaced as an application error needing manual repair.

TENT inverts the design. The application declares an intent (source, destination, length, priority) and gets a handle. The engine then works in three phases. Orchestration picks transports per request from a unified view of memory segments and their reachable links, and can stage through host or GPU memory to stitch a multi-hop path. Slice spraying cuts large transfers into slices of at least 64 KB, each carrying its absolute destination offset, and sends each slice to the rail with the lowest predicted finish time, β0 + β1·(queued bytes + L)/bandwidth, using live telemetry. Resilience marks rails healthy, degraded or paused, retries failed slices on other rails (safe because writes go to fixed offsets), and can switch transport entirely.

In SGLang's hierarchical KV cache, TENT gave 1.36x the input throughput of Mooncake TE and lower time to first token; RL weight updates ran 20-26% faster; a NIC failure caused a sub-50 ms dip with no errors. It is open source in the Mooncake repository.

THE IDEA, VISUALLY
DECLARE THE INTENT, BIND EACH SLICE LATE intent: src, dst, length, priority → batch handle 1 orchestrate transport per request; stage via host or GPU 2 spray slices 64 KB+ slices, offsets; lowest predicted finish 3 self-heal rail health states; retry, swap transport predicted finish on rail d: t = β0 + β1 · (queued_d + L) / B_d 16 SLICES OVER 4 RAILS, ONE SLOW rail 0 rail 1 rail 2 rail 3 (slow) static striping would give each rail 4 slices and wait on the slow one Mice (64 KB control, MoE traffic) and elephants (KV migration, weight updates) share the same NICs; priority slots keep mice from waiting behind elephants. One binary loads transport plugins for RDMA, NVLink, Ascend, GPUDirect Storage, TCP. Production: 382 hardware failures a month at one fintech cluster Open source in the Mooncake repository (kvcache-ai/Mooncake) SGLANG HICACHE, QWEN3-235B, 10 TURNS (TABLE 2) input throughput, tokens/s no KV cache 20,757 Mooncake TE 58,006 TENT 78,759 P90 time to first token, s no KV cache 4.02 Mooncake TE 0.90 TENT 0.67 RL WEIGHT UPDATE TIME, 8xH800 (TABLE 3) Qwen3-235B-A22B 12.87 s 10.34 s GLM-4.5-Air 7.17 s 5.30 s MICROBENCHMARKS AND FAILURES (SECTIONS 5-6) host-to-host, 8x200G: +33.7% write throughput vs TE GPU-to-GPU: 2.1x throughput; 144 GB/s with 8 GPUs NIC fail-stop: dip < 50 ms, rejoin in 26 ms NIC at half rate: rebalanced, full speed in 40 ms no GPUDirect: staged 46.2 vs direct 45.7 GB/s vs Mooncake TE, NIXL and UCCL-P2P on the same hardware
TENT moves data the way a load balancer moves requests: the application states what to send, and each 64 KB slice goes to whichever link is predicted to finish it first, routing around slow or failed links.
Research notes: the problem, approach and results
1.36x

input throughput over Mooncake Transfer Engine in SGLang HiCache, Qwen3-235B-A22B on two 8xH800 nodes

< 50 ms

throughput dip when a NIC fails mid-transfer; the NIC rejoined 26 ms after recovery, with no application-visible error

382

hardware failure events per month at one fintech production cluster, 72% of them GPU-related

THE PROBLEM

Disaggregated and agentic serving moves KV caches and model weights between machines constantly, over a mix of NVLink, multi-rail RDMA and PCIe paths. Existing transfer engines bind each transfer to a backend and NIC set up front and split it evenly, so one slow, congested or failed link stalls the whole transfer, and a link fault surfaces as an application error.

THE IDEA

Make transfers declarative. Applications state source, destination, length and priority; the engine picks transports per request, can stitch multi-hop paths through staging memory, and cuts large transfers into 64 KB+ slices with absolute offsets. Each slice goes to the rail with the lowest predicted finish time from live queue and bandwidth telemetry; failing rails are excluded and their slices retried elsewhere.

THE RESULT

In SGLang HiCache serving Qwen3-235B over 10-turn conversations, TENT raised input throughput 1.36x and cut P90 time to first token from 0.90 to 0.67 s against Mooncake Transfer Engine. RL weight updates were 20-26% faster, and a failed NIC cost under 50 ms of reduced throughput with no application errors.

02

Why it matters to an FDE

Every serving optimization that moves KV between machines (prefix caching across nodes, prefill/decode disaggregation, multi-turn session caches) assumes the transfer is fast and reliable. In production clusters it often is neither: links degrade, NICs on the far NUMA node are slower, and something fails every couple of hours.

Tail latency comes from the slowest link. If a transfer is striped evenly, one degraded rail sets its finish time. When a customer's P90 time to first token jumps at peak hours while averages look fine, look at the transfer layer.

Failures should be routing events, not incidents. At 382 failures a month, a transfer layer that throws errors to the application means pages and restarts; one that reroutes means a brief slowdown. That difference shows up in on-call load and SLO attainment.

Cache hit rate is not the whole story. A cache that hits but transfers slowly can lose to recomputing. TENT's round-1 numbers show caching costing a little time when there is nothing to reuse; the gains come in later turns.

THE FULL BREAKDOWN

Understand the mechanism. Try it on a real problem.

Unlock this breakdown and 149 more papers.

Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.

6 months · One payment · No auto-renewal

Get Premium · ₹2,000 / $25
  • ◇1 architecture diagram
  • </>1 runnable code experiment
  • ▦2 results tables
  • ?5 interview questions with answers
  1. 03Key takeaways

    Late binding, the cost model, mice and elephants, self-healing, portability and three misreadings

    Free account
  2. 04How it works

    Segments and plugins, the three phases, the scheduler, health states and the datapath

    Premium
  3. 05The numbers that matter

    Serving and RL results, microbenchmarks, portability and failure tests

    Premium
  4. 06Try it yourself

    Recheck the tables, spray slices around a slow rail, survive a failed rail, and protect mice

    Premium
  5. 07Where it breaks

    Tuning constants, single-vendor comparisons, production claims, and slips

    Premium
  6. 08Using it on a deployment

    Finding transfer-bound latency, watching rail health, traffic classes, and what to require

    Premium
  7. 09Interview angles

    Five questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →