Choose a Planner Mode

Select a deployment topology, optimization target, scaling method, and runtime environment for the Dynamo Planner.
View as Markdown

The Planner has several settings that describe different decisions. Choose them in this order so that topology, scaling policy, and runtime behavior stay aligned.

DecisionConfigurationQuestion
Deployment topologymodeWhich worker roles does this Planner scale?
Optimization targetoptimization_targetWhat outcome should trigger scaling?
Scaling methodenable_throughput_scaling, enable_load_scalingHow should the Planner calculate replica recommendations for an sla target?
Runtime environmentenvironmentShould the Planner apply changes locally, delegate them, or simulate them?
RequirementOptimization TargetScaling Method
No specific latency SLAthroughput by default; latency when shorter queues matter more than GPU efficiencyLoad-based, enabled automatically
Specific TTFT and ITL SLAslaEnable throughput-based and load-based scaling together

Use load instead of throughput or latency only when you want to supply the prefill queue-token and decode KV-utilization thresholds yourself.

Choose the Deployment Topology

Set mode to match the worker topology that the Planner controls.

modeWorker TopologyUse When
disagg (default)Separate prefill and decode workersThe deployment uses disaggregated serving and each worker role must scale independently.
aggOne worker performs prefill and decodeThe deployment uses aggregated serving and needs one replica count.
prefillPrefill workers onlyThe Planner controls a prefill-only pool, typically in a multi-DGD deployment.
decodeDecode workers onlyThe Planner controls a decode-only pool, typically in a multi-DGD deployment.

For a single DGD, use disagg or agg to match the deployment. Use prefill and decode for independently managed pools. To coordinate multiple DGDs or expose multiple pools through one endpoint, see the Global Planner Guide.

Choose the Optimization Target

Choose the target based on whether you have specific Time To First Token (TTFT) and Inter-Token Latency (ITL) requirements.

optimization_targetUse WhenScaling Behavior
throughput (default)You do not have a specific latency SLA and want the default balance of throughput and GPU use.Uses built-in queue-depth and KV-utilization thresholds.
latencyYou do not have a specific latency SLA but prefer shorter queues and earlier scale-up.Uses more aggressive built-in thresholds.
loadYou know the engine saturation points and want to configure thresholds directly.Uses your prefill queue-token and decode KV-utilization thresholds.
slaYou must target specific TTFT and ITL values.Uses performance-model estimates and lets you select the scaling methods.

The throughput, latency, and load targets always use load-based scaling. They disable throughput-based scaling and ignore enable_throughput_scaling and enable_load_scaling.

Choose Scaling Methods for an SLA

The sla target is the only target that lets you select scaling methods. Enable at least one.

Scaling MethodUse WhenDefault
Throughput-basedTraffic is predictable enough for forecasting and you want a stable capacity floor.On
Load-basedTraffic is bursty or difficult to predict and needs faster reactive adjustments.Off
BothYou want prediction-based baseline capacity and burst response.Recommended

For most SLA-driven production deployments, enable both methods:

1features:
2 planner:
3 mode: disagg
4 backend: vllm
5 optimization_target: sla
6 enable_throughput_scaling: true
7 enable_load_scaling: true
8 ttft_ms: 500.0
9 itl_ms: 50.0

Keep throughput_adjustment_interval_seconds longer than load_adjustment_interval_seconds when both methods are enabled. The throughput-based method sets the capacity floor, then the load-based method adjusts above it.

Choose the Runtime Environment

environmentBehaviorUse When
kubernetes (default)Applies replica changes to the local DynamoGraphDeployment (DGD).One Planner controls one DGD on Kubernetes.
global-plannerSends scale requests to a GlobalPlanner.Multiple DGDs need centralized policy, authorization, or a shared GPU budget.
virtualApplies changes through the VirtualConnector.You are simulating, replaying, or integrating a non-Kubernetes scaling environment.

Set global_planner_namespace when environment is global-planner. See the Global Planner Guide for the control DGD, pool-local Planner, and routing requirements.

Check Dependencies

ChoiceRequiredOptional or Recommended
Any load-based scalingA supported backend that emits ForwardPassMetrics (FPM) through the Dynamo event planeKV-aware routing is optional.
throughput or latency targetFPM from the backendNo SLA values, Prometheus traffic queries, or profiling data are required.
load targetFPM plus the queue-token or KV-utilization thresholds for the active worker rolesNo profiling data is required.
sla targetTTFT and ITL values, Prometheus, and a supported performance-model pathNative AIConfigurator estimates or bootstrap profiling data reduce warmup time; live FPM can warm the regression fallback.
global-planner environmentDynamo Kubernetes Platform, GlobalPlanner, pool-local routers, and Prometheus scraping router metricsProfile each intended pool before composing a multi-pool deployment.

The KV router is not required for load-based scaling. The Planner receives engine load through FPM regardless of the routing strategy. For backend-specific FPM requirements, see Current Limitations. For profiler bootstrap options, see the Profiler Guide.

Validate Before Applying Changes

Set advisory: true to calculate, log, and export recommendations without changing replica counts. Use advisory mode when introducing an SLA, changing targets, or validating a new workload.

1features:
2 planner:
3 optimization_target: sla
4 enable_throughput_scaling: true
5 enable_load_scaling: true
6 advisory: true

Set replica floors and max_gpu_budget before disabling advisory mode. See Tune the Planner for the deployment workflow and the Planner Configuration reference for every field and validation rule.