Skip to content

feat(service): add optional read-only health probes - #123

Closed
aranadive wants to merge 2 commits into
ai-dynamo:pull-request/116from
aranadive:startup-health
Closed

aranadive wants to merge 2 commits into
ai-dynamo:pull-request/116from
aranadive:startup-health

Conversation

@aranadive

@aranadive aranadive commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Add optional, read-only HTTP health probes to the standalone KVCR service so deployments can observe service and Guard progress without claiming pools or changing leases.

Stacked on #116: this draft targets pull-request/116, the upstream copy of PR 116 at 95b3cb2. The review diff contains only the health-probe commit (614b1f8). After #116 merges, rebase as needed and retarget this PR to main; do not merge into the temporary base branch.

Companion deployment draft: ai-dynamo/dynamo#17290.

Changes

  • Enable GET /live and /ready with --health-port; bind to loopback by default. Both return 503 on known failures, shutdown, or stalled Unix accept/Guard actor loops.
  • Support an optional HTTP companion dependency and configurable progress timeout; validate options before pool allocation and stop the listener during shutdown.
  • Keep background preparation nonblocking for readiness. A promotion waiting for preparation can report stalled progress independently of the Guard startup budget.
  • Document probe limits and coordinated recovery: readiness does not establish inference readiness, and restarting only the Guard while engines map its pools is unsafe.

Validation

  • ruff check src tests and ruff format --check src tests: passed.
  • Full tests/unit suite against the rebased source in the qualified Linux/NIXL container: 649 passed. A separate host-native run had four failures, including NIXL backend/FlexIO errors; the container run is the passing reference.
  • Added coverage for invalid options, HTTP routes, dependency failure, shutdown, read-only lease observation, stalled loops, and preparation/promotion health transitions.
  • Every tracked file matches the previously GPU-tested combined PR 116/health snapshot. Earlier integrated testing with a compatible vLLM overlay covered GPU KV reuse and Guard recovery at 2 GiB and 1 TiB pool capacities; 1 TiB is capacity, not transferred payload. GPU tests were not rerun for the rebase.

karya0 and others added 2 commits October 23, 2026 17:27
Guard preparation (NIXL init + pool registration) no longer blocks the claim response; promotion waits for it instead, and the Guard core startup budget defaults to 30 s and can be raised with `--startup-timeout-seconds` (`KVCRConfig.startup_timeout_seconds`). Cores released during registration are kept and closed once registered; a release never waits. Preparation failure remains service-fatal.

Host pools are registered pinned by default: the quick-start image no longer sets `UCX_REG_NONBLOCK_MEM_TYPES`, and the dev-guide explains why ODP is not recommended. With ODP, registering a 50 GiB pool failed intermittently with EBUSY under memory compaction; without it, the first registration of a 150 GiB Guard pool takes 12–19 s on an 8-CPU sidecar, more than the claim path could absorb.

Signed-off-by: Kapil Arya <kapila@nvidia.com>
Observe Unix accept-loop and Guard actor progress without claiming pools. Add an optional HTTP companion check, shutdown cleanup, CLI validation and focused tests.

Signed-off-by: Adit Ranadive <aranadive@nvidia.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants