Skip to content

feat(observability): show GPU activity from placements and DCGM - #395

Merged
ShubyM merged 1 commit into
openrl-dev:mainfrom
ShubyM:observability/gpu-activity
Oct 30, 2026
Merged

ShubyM merged 1 commit into
openrl-dev:mainfrom
ShubyM:observability/gpu-activity

Conversation

@ShubyM

@ShubyM ShubyM commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Why

Phase 5 of #390. Show which GPUs each run held over time, and how busy they were.

What changed

  • /api/v1/inspect/activity returns one lane per Workload with its role, node, pod, GPUs, runs and held interval. It reads live placements from Workload status and history from Redis. Lanes that share a GPU at the same time are marked shared_gpu.
  • /api/v1/inspect/query?name= runs named PromQL queries (gpu_busy, gpu_util, gpu_memory_mib) scoped to a run's or node's GPUs. gpu_busy reports which DCGM metric it used.

What you configure

To get Do this
GPU metrics Set OPEN_RL_PROMETHEUS_URL to a Prometheus-compatible endpoint, such as the in-cluster GMP frontend. Unset turns /query off.

/activity needs no setup.

Verification

  • make test and make lint pass at each commit.
  • Against the cluster, /query gpu_util returned a node's GPU series and gpu_busy reported DCGM_FI_PROF_GR_ENGINE_ACTIVE.
  • If Redis fails, /activity still returns live lanes with an error.

@ShubyM
ShubyM marked this pull request as ready for review October 30, 2026 18:16
/api/v1/inspect/activity lists one lane per Workload that held GPUs in a
time window. Each lane has its role, node, pod, GPU UUIDs, the runs on its
runtime that lived then, and the intervals it held the GPUs, clipped to the
window. Live placements come from Workload status. Released ones come from
open_rl:placements:<runtime>. When two lanes held one GPU at overlapping
times, both are marked shared_gpu, because that GPU's metrics are not one
lane's own. If Redis fails or times out, it returns the live lanes and
an error naming Redis.

/api/v1/inspect/query runs a named DCGM query (gpu_busy, gpu_util,
gpu_memory_mib) over the GPUs a run's or a node's lanes held. It reads the
Prometheus-compatible endpoint set in OPEN_RL_PROMETHEUS_URL and is off when
that is unset. gpu_busy reads DCGM_FI_PROF_GR_ENGINE_ACTIVE and falls back to
DCGM_FI_DEV_GPU_UTIL where that has no data; the response's metric field
names the one it read.
@ShubyM
ShubyM force-pushed the observability/gpu-activity branch from 2d39ab6 to 130a4d9 Compare October 30, 2026 18:24
@ShubyM
ShubyM merged commit 3eec5c3 into openrl-dev:main Oct 30, 2026
16 checks passed
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