LLM serving is becoming a deadline-aware admission-control system
Modern inference runtimes can continuously batch, chunk prefills, prioritize requests, pause work and scale separate prefill and decode pools. The difficult production problem is no longer filling the GPU. It is deciding which heterogeneous requests may enter, how much shared latency slack they may consume and when overload must produce an explicit queue, fallback or rejection instead of hidden SLO failure.
What is happening?
An AI request is not like a normal web request. One prompt may need a few milliseconds of work, while another can occupy GPU memory and generation slots for minutes. Modern servers mix many users together one token step at a time. That is efficient, but adding one large or urgent request can slow everyone already running. The scheduler is therefore becoming an admission controller: it estimates the work, checks deadlines and memory, decides whether to accept or delay the request, builds each microbatch and rejects work cleanly when the service cannot meet its promise. The goal is not to keep the GPU full at any cost. It is to deliver the largest amount of correct work within the promised latency and fairness limits.
Why this trend is moving
- 01Prompt length, expected output, multimodal work, adapters and branch width make request count an unreliable proxy for accelerator demand.
- 02Continuous batching improves utilization but lets every new sequence change the step time experienced by active users.
- 03Chunked prefill and decode prioritization expose a direct policy tradeoff between prompt responsiveness, streaming smoothness and kernel efficiency.
- 04KV-cache pressure can force pauses, eviction or recomputation after a request has already been admitted.
- 05Serving runtimes now expose explicit priority, capacity, preemption and scheduler-extension interfaces instead of one fixed queue discipline.
- 06Disaggregated prefill and decode require separate scaling and routing decisions because TTFT and ITL respond to different resources.
- 07New 2026 research treats slack, urgency, branch externality, operator-level preemption and long-tail request imbalance as first-class control problems.
- 08Attackers and badly configured clients can create overload with long prompts, large output caps, adapters, branches or cancellation churn without breaking model safety.
What this means in practice
- Every production request class needs explicit TTFT, inter-token and completion objectives rather than one generic latency target.
- Admission should use prompt, output, phase, KV-cache, adapter and topology estimates instead of requests per second alone.
- Priority must be authenticated and combined with aging or reserved shares so lower classes cannot starve indefinitely.
- Chunk size, token budget and decode preference are service-policy settings that require workload replay, not universal tuning values.
- Preemption, recomputation and migration need a measured net-benefit threshold because state movement can cost more than the delay avoided.
- Autoscaling should observe queued and scheduled tokens, phase mix, KV pressure and startup delay, with separate models for prefill and decode when disaggregated.
- Overload behavior must be explicit: queue, reroute, use a qualified fallback, reduce optional work or reject with a retry contract.
- Release acceptance should report SLO goodput, fairness, prediction error, preemption stability and complete cost—not only tokens per second.
What the headline leaves out
This is the practical technical view: how the system is put together, where it can fail, and what a real deployment asks from the team running it.
How it is built
A production scheduler begins with a versioned service contract fixing the model, tokenizer, adapters, precision, context ranges, sampling paths, hardware topology and per-class TTFT, ITL, completion and availability objectives. A workload estimator predicts prompt work, output range, KV growth, multimodal or branch expansion and residency requirements with uncertainty. An authenticated policy layer assigns priority, quota, deadline, cancellation and fairness rules. The admission controller compares predicted work and deadline slack with accelerator, token, sequence, KV, network and recovery headroom, then accepts, queues, routes, degrades or rejects. A step scheduler builds each continuous microbatch from decodes, chunked prefills, encoder work and optional branches under marginal step-cost constraints. Runtime telemetry records queue age, batch composition, forward time, cache occupancy, pauses and delivered tokens. A controlled intervention layer may recompute, migrate or cancel work only when net SLO value is positive. A planner adjusts aggregated or separate prefill/decode replicas from measured performance models and traffic forecasts. Trace replay, canarying and rollback bind every policy version to quality, SLO goodput, fairness, stability and complete cost.
How inference behaves
At arrival, the gateway authenticates the tenant and service class, tokenizes or estimates the prompt and predicts resource demand and deadline risk. The controller reserves capacity or places the request in a bounded queue. At every model step, the scheduler first protects active decode work according to ITL slack, then admits chunked prefill, multimodal and optional branch work that fits token, sequence, memory and marginal-latency budgets. KV allocation may require a watermark so newly started work does not force repeated eviction. When urgency changes or overload appears, the scheduler can pause, recompute, migrate, reroute or cancel, but each transition carries state and collateral cost. Autoscaling consumes queued and scheduled token metrics, forward-pass timing, KV occupancy and startup models rather than raw request count. The policy produces an auditable record of why each request was accepted, delayed, preempted, degraded or rejected.
What the tests can miss
Replay production-shaped traces preserving correlated bursts, prompt and output length distributions, cancellations, adapters, multimodal inputs, tenant classes and arrival order. Compare FCFS, priority, shortest-estimated-work, urgency/slack-aware, chunked-prefill, conservative no-evict and aggressive utilization policies. Report TTFT, ITL or TPOT and completion SLO attainment by class and request shape; quality-accepted SLO goodput; queue age; rejection and retry outcomes; fairness relative to entitlement; batch-step externality; KV occupancy and preemption; prediction error; cold-scale delay; migration cost; p95 and p99 tails; and complete cost per accepted task. Include abrupt bursts, long-prompt attacks, output underprediction, cache pressure, rank failure, model or adapter misses and planner error. A candidate passes only when it improves useful delivered service without hidden starvation, quality changes, oscillation or cost transfer.
What deployment involves
Start with one deterministic baseline, bounded queues and explicit overload rejection. Instrument arrival, admission, scheduled tokens, phase, cache demand, queue age and delivered latency before adding prediction. Introduce chunked prefill and class-aware budgets through offline trace replay, then shadow decisions without changing execution. Canary one pool with conservative headroom and a previous-policy rollback. Add authenticated priority with aging and maximum queue residence. Enable preemption or migration only after measuring save, transfer, recompute and destination costs. Scale from token and phase demand using startup-aware performance models; keep reserve capacity for uncertainty and failures. Promote only after sustained SLO goodput, fairness and cost gains across representative and adversarial workloads.
Where the risks sit
The admission controller is an availability boundary. Authenticate priority and quota, cap prompt and output tokens, concurrency, multimodal size, branch width, adapters and optional reasoning work. Rate-limit repeated cancellations and retries so cheap client churn cannot destabilize batches. Reserve capacity per tenant or class and prevent one caller from consuming all KV memory. Treat scheduler extensions, predictors and migration code as privileged native or control-plane components. Validate token counts, deadlines, cache reservations and state transitions. Avoid exposing exact queue position, cache state or cross-tenant timing that could leak workload information. Log overrides and policy changes, bound telemetry cardinality and fail closed when demand estimates or scheduler state become inconsistent.
What it really costs
Scheduling cost includes accelerator execution, idle reserve, queue infrastructure, tokenization and estimation, KV memory, preemption, recomputation, state transfer, model or adapter loading, autoscaling cold starts, retries, fallbacks, telemetry, simulation and operations. Maximum utilization can be more expensive when it creates SLO misses or repeated pauses. Conservative headroom has an opportunity cost but can raise accepted-task goodput by preventing collapse under bursts. Compare policies at fixed output quality and service objectives using cost per accepted request or token, with rejected, cancelled and retried work included in the numerator.
What the evidence supports
The evidence shows a clear convergence toward policy-rich, workload-aware scheduling rather than one final universal algorithm. vLLM exposes FCFS and priority policies, chunked prefill, token budgets, partial-prefill limits and KV watermarks. TensorRT-LLM separates capacity and microbatch scheduling, supports request pausing and documents conservative versus maximum-utilization policies. NVIDIA Dynamo plans prefill and decode capacity from performance models, traffic prediction and forward-pass metrics, and provides trace-driven simulation. SGLang documents prefill/decode disaggregation and transfer queues. Foundational systems such as Orca, vLLM, Sarathi-Serve, DistServe, Splitwise, FastServe and Llumnix established iteration batching, phase separation, chunking and migration. Newer work studies operator-level preemption, urgency and slack, branch admission, prefix-aware batches and multi-model offload cost. Reported gains are workload- and hardware-specific, but the shared production conclusion is strong: admission, queueing and batch policy determine whether raw accelerator capacity becomes reliable user-facing service.
How it works in practice
An LLM serving system is not qualified by maximum tokens per second alone. Production scheduling must admit, batch, pause, migrate and scale heterogeneous requests against explicit time-to-first-token, inter-token, completion, fairness and capacity objectives while preserving output semantics and a safe overload mode.
How the parts work together
The headline technology is only one part of the product. Reliability, security and cost are usually decided by the handoffs around it.
- 1
Freeze the service and workload contract
Record the model, tokenizer, adapters, precision, context limits, sampling paths, speculative modes, hardware topology, traffic classes and the exact TTFT, ITL, completion and availability objectives.
- 2
Measure request work before admission
Estimate prompt tokens, expected output range, multimodal encoder work, KV-cache demand, adapter state, branch width and topology cost instead of treating every request as one equal queue item.
- 3
Assign a governed service class
Bind each request to an authenticated priority, deadline, quota, tenant, cancellation policy and fairness rule. Untrusted clients must not be allowed to self-declare unlimited urgency.
- 4
Perform capacity-aware admission control
Accept, delay, degrade or reject work using predicted accelerator time, KV headroom, queue state and deadline slack. Preserve reserve capacity for active decodes and recovery.
- 5
Build the next microbatch
Choose decode tokens, chunked prefills, multimodal work and speculative branches under token, sequence, memory and phase budgets while controlling head-of-line blocking and iteration variance.
- 6
Run and observe each scheduling step
Record admitted, queued, scheduled, paused and completed work with per-step forward time, batch composition, KV occupancy, preemption events and delivered user latency.
- 7
Preempt, migrate or cancel deliberately
Use recomputation, state transfer, instance migration or cancellation only when the expected SLO benefit exceeds save, reload, cache, network and collateral-delay cost.
- 8
Scale from workload-aware signals
Adjust aggregated or disaggregated prefill and decode capacity from token demand, queue age, KV pressure and measured performance models rather than request count alone.
- 9
Promote or roll back from replay evidence
Canary policy changes against trace replay and live shadow metrics. Promote only when SLO goodput, fairness, quality, stability and complete cost improve together.
Estimate the limits before the demo
These equations are planning tools rather than substitutes for testing. They help expose a design that is unlikely to fit its hardware, budget, reliability or risk limits.
Predicted deadline slack
S_i(t) = D_i - t - T_hat_i(state, batch, topology) D_i is the request deadline, t is current time and T_hat_i is the predicted remaining service time under the current queue, batch and hardware state. Negative slack predicts a miss unless the request is accelerated, degraded or rejected.
- Calculate separate slack for TTFT, next-token delivery and final completion.
- Refresh the prediction after every material queue, cache or topology change.
- Do not use an average request duration for long-tail prompts and outputs.
Admission load ratio
rho_W = sum_i C_hat_i / C_available(W) C_hat_i is predicted accelerator and memory work for requests admitted into horizon W. The ratio should remain below a governed operating limit that includes uncertainty and recovery headroom.
- Use token- and phase-aware work rather than request count.
- Maintain a lower limit when output length prediction is uncertain.
- Calculate separate constraints for compute, KV memory and network transfer.
SLO goodput
G_SLO = N_quality_and_SLO_pass / accelerator_time Only outputs that meet quality and the declared service objective count in the numerator. Aggressive batching that raises raw throughput but causes deadline misses can reduce goodput.
- Report by service class and prompt/output-length bucket.
- Exclude cancelled, retried, truncated and fallback responses unless the contract accepts them.
- Pair goodput with fairness so one premium class cannot hide starvation elsewhere.
Net value of preemption or migration
V = L_avoided - C_pause - C_state - C_recompute - L_collateral A scheduling intervention is beneficial only when avoided deadline loss exceeds pause, state movement, recomputation and the delay imposed on other requests.
- Recomputation can be cheaper than swapping state for some runtimes and prompts.
- Migrating a request can worsen congestion if the destination queue is estimated poorly.
- Use hysteresis so policies do not repeatedly move the same request.
One request is not a stable unit of LLM serving work
A traditional request-rate autoscaler can assume that requests are broadly comparable. LLM requests are not. A short prompt asking for one token, a 128K-token document analysis, a multimodal request and a multi-branch reasoning job can differ by orders of magnitude in compute, memory and duration.
Admission and scaling decisions therefore need token, phase, cache, adapter and topology estimates. Request count remains useful for business volume, but it is an unsafe sole control signal for accelerator capacity.
The estimate will always be uncertain because output length and tool behavior are not known exactly. Production controls need conservative intervals and an explicit overload margin rather than pretending to predict every request perfectly.
- Prompt tokens predict prefill work but not final decode duration.
- Expected output tokens affect KV growth and active-sequence residence time.
- Adapters, multimodal encoders and speculative branches add separate resources.
- Topology determines whether a nominally identical batch creates local or cross-node work.
TTFT, ITL and completion are different deadlines
Time to first token is dominated by queueing and prefill. Inter-token latency is dominated by repeated decode scheduling and batch step time. End-to-end completion adds output length, cancellation and stream delivery.
A policy that maximizes TTFT attainment can still produce poor streaming quality if decode steps are repeatedly delayed by new prefills. A decode-first policy can preserve ITL while starving long prompts. The scheduler must know which objective applies to each service class.
Service objectives should be explicit ranges with measurement boundaries: arrival timestamp, admission timestamp, first byte or first token, final accepted token and client cancellation. Otherwise teams compare incompatible latency numbers.
- Measure queue delay separately from model execution.
- Track p50, p95 and p99 by request shape.
- Record deadline misses, not only average latency.
- Define whether fallback or truncation counts as success.
Admission control must happen before the microbatch is full
Continuous batching can keep adding work whenever tokens or sequence slots appear available. That improves utilization, but a locally fitting request can still create future KV pressure, extend batch steps or consume the slack needed by active streams.
A production admission controller asks whether starting the request is safe for the complete service horizon, not only whether the next iteration can fit. The answer can be accept, queue, route elsewhere, use a smaller qualified model, reduce optional work or reject with a retry signal.
Failing to reject early converts a clear overload response into hidden queueing, repeated preemption and widespread tail-latency failure.
Every admitted sequence changes the batch seen by other users
Iteration-level batching lets completed requests leave and new requests join without waiting for a static batch boundary. It is foundational to modern LLM throughput.
The shared step also creates externalities. Longer contexts can increase attention work, branch expansion can widen the batch, and a prefill chunk can lengthen the step experienced by every decode stream. Local throughput gains are not free when they consume another request’s latency slack.
The scheduler needs a prediction of marginal step cost and a rule for who may consume available slack. Fixed batch-size limits cannot express that decision across changing context lengths and hardware states.
- Record batch composition at every forward pass.
- Estimate marginal rather than average step cost.
- Measure the latency imposed on already admitted requests.
- Cap opportunistic branches and optional work under pressure.
Long prefills create head-of-line blocking unless they are interruptible
Prefill is compute intensive and can monopolize an iteration when a long prompt is processed as one unit. Shorter requests arriving behind it may miss TTFT objectives even when total accelerator utilization looks good.
Chunked prefill improves interruptibility by dividing the prompt across scheduling steps and interleaving it with decode. Small chunks increase responsiveness but can reduce kernel efficiency and add scheduling overhead; large chunks restore efficiency but recreate blocking.
Newer work explores operator-level or event-driven preemption so responsiveness is not tied to one globally fixed chunk size. The policy still requires replay on the actual model and hardware because the best granularity depends on shapes and load.
KV-cache capacity determines whether an admitted request can remain active
A request that fits compute budgets can still exhaust KV capacity as generation continues. When memory is tight, runtimes may pause, evict, swap or recompute requests. Those actions have different latency and bandwidth costs.
Conservative schedulers reserve enough state to complete admitted work without eviction. Aggressive policies pack more requests for utilization but risk pauses when predictions are wrong. Watermarks and headroom reduce oscillation near the capacity boundary.
Admission should include expected KV growth, uncertainty, prefix-sharing behavior and recovery reserve. A policy that repeatedly admits and preempts the same long sequence is usually worse than delaying it once.
- Track KV blocks reserved, used, evicted and recomputed.
- Separate prompt-cache reuse from decode-state growth.
- Measure pause duration and number of repeated preemptions.
- Keep emergency headroom for failures and traffic bursts.
Priority without fairness becomes starvation
Priority scheduling can protect interactive or contractual traffic, but an always-busy high-priority class can prevent lower classes from ever running. First-come-first-served avoids explicit preference while still allowing a few very long requests to dominate.
A governed scheduler needs authenticated classes, quotas, aging, maximum queue residence and tenant isolation. Priority must be assigned by policy, not trusted from an arbitrary client field.
Fairness should be measured in delivered service relative to entitlement and request cost. Counting completed requests can make a tenant with many tiny prompts appear over-served or under-served incorrectly.
- Use aging or reserved shares to prevent indefinite waiting.
- Limit priority escalation and audit overrides.
- Report SLO attainment separately for every class.
- Define a maximum queue age and a clear rejection behavior.
Preemption and live migration are expensive scheduling tools
When a high-urgency request arrives or an instance becomes overloaded, the system can pause another request, recompute its prefix later, move its KV state or migrate it to a different instance.
These controls can improve tail latency and isolation, but they introduce serialization, network transfer, destination uncertainty and state-consistency obligations. Multi-model systems may additionally need to reload weights or adapters, making preemption cost strongly model dependent.
The decision should compare avoided SLO loss with full intervention cost and collateral delay. A request should carry a migration generation or lease so two workers cannot continue the same state concurrently.
LLM autoscaling needs performance models, not CPU-style thresholds
Traditional autoscaling often reacts to CPU utilization or requests per second. LLM latency depends on prompt length, output length, active sequences, KV pressure, phase mix and model topology, so the relationship between load and replicas is not linear.
Aggregated serving needs workload-aware replica estimates. Disaggregated serving needs separate prefill and decode capacity because their resource curves differ. Scaling also has startup, weight-loading and cache-warming delays that can exceed the burst being handled.
Trace-driven simulation and measured forward-pass models can explore configurations before consuming a large cluster. Final decisions still require real hardware verification because kernel, network and cache effects can invalidate simplified models.
- Scale from queued and scheduled tokens, not only accepted requests.
- Include cold-start and drain time in the control loop.
- Use forecast uncertainty to maintain reserve capacity.
- Verify planner recommendations against live SLO attainment.
Model and adapter diversity turn scheduling into placement as well as batching
A shared service may host several base models, quantizations, adapters and speculative draft models. The scheduler must decide not only when a request runs but where the required weights and state are resident.
Offloading and reload cost are nonlinear across models and hardware. A policy optimized for one model can create severe stalls when another requires weight movement or different parallelism. Adapter-heavy traffic adds its own cache and batching constraints.
Qualification should include the actual model mix, transition frequency and residency policy. A single-model benchmark cannot justify a multi-model admission controller.
- Track model and adapter residency misses.
- Measure weight-load and graph-recapture delays.
- Reserve capacity for high-priority model classes.
- Avoid accepting work whose required model cannot become resident before its deadline.
Scheduling controls are also denial-of-service controls
An attacker does not need to break model safety to exhaust an inference service. Long prompts, large maximum-output requests, branch expansion, expensive adapters and repeated cancellations can occupy compute, KV memory and queue slots.
Admission must authenticate service classes, enforce token and concurrency quotas, cap speculative or branch work and charge for admitted resource reservations. Cancellation should release resources promptly without allowing cheap churn to destabilize batching.
Per-tenant telemetry needs bounded cardinality and privacy controls. Queue position, cache hits and detailed timing can reveal information about other tenants if exposed carelessly.
Policy changes need deterministic traces and counterfactual replay
Average latency cannot explain why a scheduler succeeded or failed. Useful evidence links arrival, class, predicted work, admission decision, queue age, each batch membership, preemption, cache state, delivered tokens and completion outcome.
A sanitized trace can replay the same workload through alternative policies to compare SLO goodput, fairness and cost before live rollout. The replay must preserve request timing and shape correlations; randomly shuffled requests hide burst and head-of-line behavior.
Live canaries should shadow the candidate policy or limit it to one pool, retain the previous configuration and define automatic rollback thresholds for deadline misses, starvation, oscillation and cost regression.
- Version the scheduler policy and all thresholds.
- Record prediction error, not only predicted values.
- Preserve arrival order and correlated bursts in replay.
- Audit every manual priority or overload override.
What a benchmark worth believing should report
A performance number means little unless the workload, system configuration and quality bar are fixed. This is the minimum record a team should keep.
| Metric | How to measure it | Why it matters |
|---|---|---|
| TTFT SLO attainment | Share of accepted requests receiving the first token within the declared deadline, stratified by prompt length and class. | Shows whether queueing and prefill scheduling meet the interactive contract. |
| ITL or TPOT SLO attainment | Share of streamed token intervals within the class threshold, including p95 and p99. | Detects decode disruption hidden by fast first-token results. |
| End-to-end SLO attainment | Share of quality-accepted requests completing before the final deadline. | Prevents policies from optimizing only the first visible token. |
| SLO goodput | Quality- and deadline-compliant requests or tokens per accelerator-hour. | Connects utilization with useful delivered service. |
| Queue age and rejection | Queue residence distribution, admission delay, rejection reason and retry outcome by class. | Makes overload behavior and starvation visible. |
| Fairness | Delivered service versus entitlement using token- or work-weighted shares and maximum wait. | Prevents premium or short-request traffic from hiding starvation. |
| Batch externality | Marginal step-time and SLO impact imposed on active requests by each admitted prefill, branch or sequence. | Measures the shared cost of opportunistic work. |
| Memory stability | KV occupancy, watermark crossings, pauses, evictions, swaps, recomputations and repeated preemptions. | Detects unsafe admission near the memory boundary. |
| Prediction quality | Error of prompt work, output length, remaining time and deadline-risk estimates by bucket. | Admission decisions are only as safe as their uncertainty model. |
| Complete cost | GPU, CPU, network, storage, retries, preemption, migration, cold start and operations cost per accepted SLO-compliant task. | Prevents apparent latency gains from shifting cost into hidden control paths. |
Four sensible deployment patterns
Conservative single-pool admission
- Where it fits
- One model, predictable interactive traffic and strict no-eviction preference.
- What you take on
- Simple and stable, but may leave accelerator capacity unused during benign workloads.
Chunked-prefill continuous batching
- Where it fits
- Mixed prompt lengths where decode streaming must remain responsive.
- What you take on
- Requires workload-specific chunk and token-budget tuning; small chunks can reduce prefill efficiency.
Class-based reserved capacity
- Where it fits
- Multi-tenant services with contractual premium and background classes.
- What you take on
- Protects critical traffic but can strand reserved capacity unless controlled borrowing and aging are defined.
Disaggregated SLO scheduler
- Where it fits
- Large fleets with separate prefill and decode pools and different scaling curves.
- What you take on
- Adds routing, KV transfer, cross-pool prediction and failure coordination.
Migration-capable multi-instance scheduler
- Where it fits
- Heterogeneous or bursty fleets needing load balancing and priority isolation.
- What you take on
- State movement and destination prediction can exceed the avoided delay.
Trace-driven planner with live canary
- Where it fits
- Mature operations changing policies or autoscaling parameters frequently.
- What you take on
- Simulation needs calibrated hardware models and cannot replace live qualification.
Where projects usually go wrong
Request-count admission
What you see: A few long prompts overload the service despite a low requests-per-second value.
What to do: Estimate token-, phase-, cache- and model-aware work with uncertainty headroom.
Head-of-line prefill blocking
What you see: Short requests miss TTFT behind one long prompt.
What to do: Use qualified chunking or interruptible prefill with urgency-aware scheduling.
Decode starvation
What you see: Streams pause whenever new prefills arrive.
What to do: Reserve decode budget and enforce ITL slack before admitting prefill work.
KV thrash
What you see: Requests are repeatedly paused, evicted or recomputed near full memory.
What to do: Use watermarks, completion-aware reservations and a lower admission limit.
Priority starvation
What you see: Background or standard traffic waits indefinitely.
What to do: Apply aging, reserved shares, maximum queue age and class-specific reports.
Preemption oscillation
What you see: The same requests repeatedly move or restart without net progress.
What to do: Require a net-value threshold, cooldown and migration generation.
Cold-scale miss
What you see: Replicas arrive after the traffic burst and add cost without restoring SLOs.
What to do: Model startup and weight-loading time; maintain forecast-based reserve capacity.
Prediction overconfidence
What you see: Output-length or remaining-time estimates systematically understate work.
What to do: Track prediction intervals and fall back to conservative admission when uncertainty rises.
Client-forged priority
What you see: Untrusted callers crowd out governed service classes.
What to do: Derive priority from authenticated policy, quota and billing records.
Throughput-only promotion
What you see: Tokens per second improve while p99 latency, fairness or cost deteriorates.
What to do: Promote on SLO goodput, fairness, quality and complete cost together.
A checklist you can actually use
- Freeze model, tokenizer, adapter, precision and hardware identities before scheduler comparison.
- Define TTFT, ITL and completion objectives separately for every service class.
- Authenticate priority and quota assignments; never trust arbitrary client priority fields.
- Estimate prompt, output, multimodal, branch, adapter and KV work before admission.
- Set explicit compute, sequence, KV and network headroom limits.
- Define accept, queue, reroute, degrade and reject outcomes for overload.
- Benchmark continuous batching and chunked prefill on production-shaped traces.
- Measure the marginal batch-step cost imposed on active requests.
- Prevent starvation with aging, reserved shares or maximum queue residence.
- Record every pause, eviction, recomputation, migration and cancellation.
- Require a positive net-value threshold before preemption or migration.
- Scale from token and phase demand rather than request count alone.
- Include model-loading, cache-warming and drain time in autoscaling tests.
- Replay correlated bursts and long-tail request shapes without random shuffling.
- Canary scheduler changes with the previous policy available for immediate rollback.
- Promote only when quality, SLO goodput, fairness, stability and complete cost all pass.
Terms worth knowing
- Admission control
- The decision to accept, delay, reroute, degrade or reject work before it consumes protected service capacity.
- Continuous batching
- Iteration-level scheduling that lets requests join and leave a batch between model steps.
- Chunked prefill
- Dividing prompt processing into smaller units so decode and other work can be interleaved.
- TTFT
- Time from request arrival to the first delivered output token.
- ITL
- Inter-token latency between successive streamed output tokens.
- TPOT
- Time per output token, often used as an aggregate decode-latency measure.
- SLO
- A measurable service-level objective such as a latency, availability or quality threshold.
- Slack
- Time remaining between predicted completion and a request deadline.
- Goodput
- Useful work that meets required quality and service objectives per unit of capacity or time.
- Head-of-line blocking
- Delay imposed on later work because an earlier request monopolizes a constrained resource.
- Preemption
- Pausing or removing active work so other work can use the resource.
- Recomputation
- Rebuilding discarded model state by rerunning earlier prompt work.
- Live migration
- Moving an active request and its execution state to another worker or instance.
- KV watermark
- Reserved cache headroom used to reduce eviction and repeated preemption near full capacity.
- Batch externality
- The additional latency or resource cost one admitted request imposes on co-batched requests.
- Aging
- Increasing effective priority as queue residence grows to prevent indefinite starvation.
- Disaggregated serving
- Running prefill and decode on separate worker pools with state transfer between them.
- Trace replay
- Re-executing recorded request timing and shapes through a candidate policy for controlled comparison.
Primary references and technical starting points
These sources support the architecture, runtime, benchmark and security claims. Vendor capabilities can change, so the article records the distinction between established evidence, measured product behavior and editorial interpretation.
- 01 vLLM scheduler configuration — policies, partial prefills and chunkingdocs.vllm.ai
- 02 vLLM optimization guide — chunked prefill and decode prioritydocs.vllm.ai
- 03 vLLM serve CLI — scheduling policy, watermark and token limitsdocs.vllm.ai
- 04 vLLM — Easy, Fast, and Cheap LLM Serving with PagedAttentionarxiv.org
- 05 Orca — A Distributed Serving System for Transformer-Based Generative Modelsusenix.org
- 06 Sarathi-Serve — taming the throughput-latency tradeoffarxiv.org
- 07 DistServe — disaggregating prefill and decoding for goodputarxiv.org
- 08 Splitwise — efficient generative LLM inference using phase splittingarxiv.org
- 09 Llumnix — dynamic scheduling and live migrationarxiv.org
- 10 FastServe — distributed inference with preemptive schedulingarxiv.org
- 11 AlpaServe — statistical multiplexing with model parallelismarxiv.org
- 12 Clockwork — predictable serving for machine learningarxiv.org
- 13 FlexGen — high-throughput generative inference with offloadingarxiv.org
- 14 TensorRT-LLM scheduler — capacity and microbatch schedulingnvidia.github.io
- 15 TensorRT-LLM max batch size and token-budget tuningnvidia.github.io
- 16 TensorRT-LLM paged attention, in-flight batching and schedulingnvidia.github.io
- 17 TensorRT-LLM runtime scheduler policiesnvidia.github.io
- 18 TensorRT-LLM overlap schedulernvidia.github.io
- 19 TensorRT-LLM executor API and iteration statisticsnvidia.github.io
- 20 NVIDIA Dynamo Planner — SLA-aware prefill and decode scalingdocs.nvidia.com
- 21 NVIDIA Dynamo SLA Planner overviewdocs.nvidia.com
- 22 DynoSim — workload-driven serving simulationdocs.nvidia.com
- 23 SGLang prefill-decode disaggregationdocs.sglang.ai
- 24 SGLang v0.4 — zero-overhead batch schedulerlmsys.org
- 25 FlowPrefill — adaptive preemption for head-of-line blockingarxiv.org
- 26 Kairos — SLO-aware scheduling for disaggregated inferencearxiv.org
- 27 TAPER — regulating branch parallelism in LLM servingarxiv.org
- 28 AlignedServe — prefix-aware batchingarxiv.org
- 29 BlockServe — block-grained continuous batching for diffusion LLMsarxiv.org
- 30 Towards Multi-Model LLM Schedulers — offloading and preemptionarxiv.org
- 31 DeepSpeed-FastGen — high-throughput text generation inferencearxiv.org
- 32 Punica — serving multiple LoRA models on shared GPUsarxiv.org
- 33 S-LoRA — scalable serving of thousands of LoRA adaptersarxiv.org
- 34 NanoFlow — optimal large-language-model serving throughputarxiv.org
- 35 BATON — dynamic re-batching for LLM inferencearxiv.org
- 36 Multi-Bin Batching — queueing-aware request groupingarxiv.org
- 37 MuxServe — flexible spatial-temporal multiplexing for multiple LLMsarxiv.org
- 38 ExeGPT — constraint-aware resource scheduling for LLM inferencearxiv.org
- 39 DeepSpeed-MII — model implementation for inferencegithub.com
- 40 Ray Serve LLM autoscaling and deployment guidancedocs.ray.io