Skip to content

[Flow Control] Production readiness: enable the flowControl feature gate by default #1187

Description

@LukeAVanDrie

Tracks enabling the flowControl feature gate by default (#1270). Code references pinned to 6cc1dac7.

Dates. The flip lands ~Jul 28 to soak in nightlies before the end-of-July llm-d-router cut. Go/no-go is Jul 27. The flip itself is one line and is not release-coupled.

Scope. This issue owns the router: blockers, the flip, router perf numbers, and router-side observability and reliability. Guide posture, deployment docs, and guide-level validation are llm-d/llm-d#2114, which binds on the Jul 30 code freeze for llm-d v0.9.0.

Blocking the flip

Boxes are checked on merge, not on PR open. Each item is a small, independently revertible PR; they are independent and can be in flight concurrently.

Go/no-go, Jul 27: if B or E has not merged, the router ships with the gate off and the flip moves to the next cut. B is a wrong-status-code correctness bug on the default path; E is the failure mode where a stale signal halts all dispatch. F and J gate the evidence and observability we need to debug the flip in nightlies, but neither is a correctness risk on its own.

Landing risk: make presubmit fails on clean main at check-latest-tags-strict (#2181). Six PRs have to clear the pre-merge gate this week, and a failure unrelated to the change under test is how the gate gets skipped. Worth fixing first; it is a one-line pin.

Not blocking

The flip reaches llm-d the night it merges

Both llm-d-router-standalone charts render EPP as ghcr.io/llm-d/llm-d-router-endpoint-picker[-dev]:main with pullPolicy: Always, so every guide and every nightly already runs EPP built from router main. There is no chart release or llm-d change between this flip and the whole guide fleet running with flow control on.

Two consequences for the landing plan:

  • The rollout cannot be staged from this side. Anything a guide needs must be committed to llm-d before the flip, decided from pre-flip evidence.
  • Merging on Jul 28 leaves one night of post-flip nightly data before the Jul 30 llm-d code freeze. Slipping the flip past Jul 28 removes that night entirely.

Guide posture, the defaultRequestTTL sizing for cold-start guides, and the docs and CI work are tracked on llm-d/llm-d#2114. Help from guide owners is wanted there.

Landed since this issue opened

Shutdown-drain 503 mapping with outcome-to-status table tests (#1612); flow_control_requests_total{outcome,priority,inference_pool} (#1636); gate-disable syntax (#1728); --drain-timeout with readiness flip during drain (#1885); real-controller integration suite under -race in CI (#1545); capacity-rejection logs with used-vs-limit context; Admit docstring fix (#2009); concurrency-detector saturation fix via dynamic attributes (#1478).

#1478 is not on release-0.8, which explains field reports like #1474 and part of #2060.

Audit goals

The full six-goal breakdown with deployment-side coverage is on llm-d/llm-d#2114 section 2. The router-side half:

  1. Feature completeness -- P/D is not ready; P/D saturation gating is [Flow Control / Disaggregation] Stage-Aware Saturation Gating for Prefill/Decode Pools #1186.
  2. Change of behavior -- sheddable requests buffer until TTL or a capacity limit instead of shedding on saturation. Legacy behavior remains only in LegacyAdmissionController; the priority-holdback policy (feat: add priority based holdback strategies in flow control #1592) gates low-priority traffic earlier. Confirm no other deltas.
  3. Performance -- J covers dispatch-path overhead.
  4. Observability -- C and F. Metrics have nowhere to surface in the guides yet (Add monitoring for llm-d-router to monitoring section in all well lit path guides llm-d#1777).
  5. Reliability -- E is the most important new failure mode.
  6. Operations -- feat: enable the flowControl feature gate by default #2180 adds active-active limitations and queueing-induced latency to docs/operations.md.

Fast-follow

Filed:

Needs an issue:

Benchmark harness in CI coordinates with PR #1638.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions