GO TO A SECTION

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

Fast Recovery for LLM Serving via Decoupled Device Memory Lifetime in Dynamo

Most serving crashes kill the engine process, not the GPU, yet restarts rebuild everything for minutes. Dynamo keeps weights resident and a parked backup engine ready: recovery in under 7 seconds.

Breakdown by FDE Interviews · 12 min read · Updated

About the original · 2026
AUTHORS
Saereesitthipitak, Abdulwahhab, Zhang, Feigin, et al.
FROM
NVIDIA
PUBLISHED
Sep 2026 · arXiv preprint
CITED BY
0Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 20% of this breakdown.

01

The paper in one minute

An LLM serving replica is one engine spread across several GPUs (eight B200s here), running for weeks. Failures are routine: in 18 weeks of NVIDIA's own Dynamo cluster (about 918 GPUs, about 150 replicas), replicas restarted 5,762 times, 46 a day, losing 2,967 GPU-hours to recovery alone. Each restart rebuilds the whole engine: CUDA contexts, NCCL communicators, model weights, kernel tuning and CUDA graph capture. Even with weights in the page cache and kernels precompiled, that takes 80 to 157 seconds for the paper's four models; in production the median was 3.5 minutes. Operators keep spare GPUs to absorb the gap.

The authors' argument: for inference, what a failure costs is ready serving capacity, not request progress. Interrupted requests can be replayed in seconds; it's the initialized engine that's slow to rebuild. And in their data, 77% of restarts were device-preserving: the engine process died but the GPUs were healthy and their memory trustworthy. Only 3 episodes needed a GPU reset.

Dynamo adds three mechanisms that keep initialized state alive:

  • GPU Memory Service (GMS). One process per GPU owns the physical memory holding model weights, using CUDA's virtual memory APIs. Engines map it read-only at fixed addresses. When an engine crashes, the weights stay resident and a new engine reattaches without copying.
  • Shadow Engines. A second engine fully initializes on the same GPUs, maps the shared weights, reserves KV-cache addresses without memory, and parks. When the primary dies, the shadow installs fresh KV pages and takes over in seconds. It costs 4-8 GiB per GPU, not a second copy of the model.
  • Snapshots. An initialized engine is checkpointed once (process tree with CRIU, GPU state with cuda-checkpoint) with its empty KV pages released, and restored instead of reinitialized. This covers failures that need a GPU reset and refills a used shadow without slowing serving.

On eight B200s, shadow promotion took 4.6 to 6.2 seconds across four models on vLLM and SGLang, 13 to 29 times faster than a warm restart.

THE IDEA, VISUALLY
ONE NODE, 8 GPUS, AFTER INITIALIZATION (SECTION 3) GPU memory model weights, owned by GMS read-only to engines primary runtime + KV pages shadow 4-8 GiB/GPU the shadow shares the weights and reserves KV addresses without pages primary crashes → shadow installs fresh KV pages, replays requests TIERED RECOVERY GPU intact, shadow ready promote shadow 5-6 s GPU intact, no shadow snapshot, reattach weights 17-35 s GPU reset needed snapshot + reload weights 22-55 s baseline warm restart, everything cached 80-157 s Why it works: most crashes kill the engine process, not the GPU; initialized state (weights, CUDA graphs, communicators) is the slow part to rebuild, while lost requests replay in seconds. Snapshots: CRIU + cuda-checkpoint, KV pages released at the same virtual addresses so captured CUDA graphs stay valid Integrated with vLLM, SGLang and TensorRT-LLM; open source RECOVERY TIME, GLM-5.2 ON 8x B200, VLLM (TABLE 3) warm restart 144.4 s GMS only 82.0 s snapshot only 131.7 s snapshot + cold GMS 26.8 s snapshot + warm GMS 24.9 s GMS + shadow engine 5.6 s shadow: 4.6-6.2 s across 4 models and 2 engines (13-29x) 18 WEEKS OF PRODUCTION RESTARTS (SECTION 2.2) ~918 GPUs, ~150 replicas: 5,762 restarts (46 a day), median 3.5 min each, 2,967 GPU-hours lost 4,443 left the GPUs intact; 3 needed GPU resets GPU-hours lost to recovery 2,967 628 with 7 s shadows (-79%) LOSING 1 OF 2 REPLICAS UNDER LOAD (5.5) warm restart 148 s: median TTFT 1.3 s → ~20 s, 6 requests failed; shadow 5.8 s: 1 failed
Dynamo separates what survives a crash from what doesn't: a per-GPU service owns the model weights, a parked shadow engine keeps a ready runtime, and only the lost requests are replayed.
Research notes: the problem, approach and results
< 7 s

replica recovery with a shadow engine, versus 80-157 s for a warm restart with everything cached

77%

of 5,762 production restarts over 18 weeks left the GPUs intact and their memory reusable (4,443 restarts)

79%

of GPU-hours lost to recovery in the production trace that 7-second shadow promotion would have reclaimed

THE PROBLEM

A serving replica spans several GPUs and runs for weeks, so failures are routine; one crashed worker takes down the replica, and restarting rebuilds weights, communicators, compiled kernels and CUDA graphs for minutes even with everything cached. Operators overprovision GPUs to cover the gap.

THE IDEA

Recovery should restore ready serving capacity, not request progress, which replays in seconds. Most failures leave the GPU intact, so keep its state: a GPU Memory Service process owns model weights outside the engine and lets new engines map them read-only; a Shadow Engine keeps a second initialized runtime parked on the same GPUs; and Snapshots checkpoint an initialized engine once for failures that need a GPU reset.

THE RESULT

Across four models on vLLM and SGLang with eight B200 GPUs, shadow engines recovered a replica in 4.6-6.2 seconds, 13-29x faster than a warm restart, costing 4.3-8.1 GiB per GPU. Replaying 18 weeks of production failures, they would have reclaimed 79% of the 2,967 GPU-hours lost to recovery.

02

Why it matters to an FDE

Customers running their own model fleets pay for failures twice: in user-visible slowdowns while a replica is down, and in idle spare GPUs held to cover those minutes. The paper reframes reliability as a recovery-time problem with a concrete production base rate.

Ask how long a replica takes to come back, measured. Time from crash to serving, with weights cached. If it's minutes, that number drives both incident impact and overprovisioning.

Most failures are software, not hardware. In this trace, crashes, hangs and out-of-memory errors that left GPUs healthy dominated. Designs that assume "a failure means a dead GPU" overpay.

Recovery speed buys back capacity. The faster a replica recovers, the fewer spares are needed and the less the survivors are pushed into queueing. With minutes of recovery, a two-replica deployment under load saw median time to first token rise from 1.3 s to about 20 s.

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

    What to preserve, the three mechanisms, the tiered path, costs and three misreadings

    Free account
  2. 04How it works

    Engine state categories, GMS mappings, shadow election and promotion, snapshots and replenishment

    Premium
  3. 05The numbers that matter

    The production trace, recovery latency by mechanism, memory cost, serving impact and fleet savings

    Premium
  4. 06Try it yourself

    Recheck the trace arithmetic, size spare capacity by recovery time, and replay the two-replica test

    Premium
  5. 07Where it breaks

    Requests still replayed, hardware failures, single-node evidence, safety of reuse and slips

    Premium
  6. 08Using it on a deployment

    Measuring recovery, classifying failures, sizing spares and enabling the mechanisms

    Premium
  7. 09Interview angles

    Five questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →