Skip to content

Document GPU exporter and gateway metric limits in telemetry docs - #540

Open
tr0njavolta wants to merge 1 commit into
modelplaneai:mainfrom
tr0njavolta:docs/gpu-metrics
Open

tr0njavolta wants to merge 1 commit into
modelplaneai:mainfrom
tr0njavolta:docs/gpu-metrics

Conversation

@tr0njavolta

Copy link
Copy Markdown
Collaborator

Description of your changes

Fixes #519.
Fixes #520.

Modelplane doesn't install a GPU exporter. The collector's modelplane-gpu job scrapes one that's already running: a pod whose app or app.kubernetes.io/name label contains dcgm and that exposes a container port named metrics. Managed clouds and the NVIDIA GPU Operator provide one, but a source: Existing cluster often has none, so no modelplane_gpu_* series arrive. The requirements for an existing cluster now list a DCGM exporter and what the collector matches on, and the telemetry intro links to them.

The gateway records modelplane_frontend_ttft_seconds and modelplane_frontend_tpot_seconds only for streaming responses, and the telemetry docs didn't say so. The metrics table and the p99 example now say both need streaming traffic, and a note points non-streaming deployments to modelplane_frontend_request_duration_seconds.

From the comment on #520: the gateway's histogram buckets stop at fixed upper bounds (81.92s request duration, 60s TTFT, 2.5s TPOT in AI Gateway v1.1.0). A quantile above the top bucket reads as that bound, so the docs now list the bounds and point long requests at the engine's modelplane_request_duration_seconds.

The selector is checked against functions/compose-serving-stack/function/collector.py. Neither behavior was reproduced on a cluster.

I have:

  • Read and followed Modelplane's contribution process.
  • Run nix flake check (or ./nix.sh flake check) and made sure it passes.
  • Added or updated tests covering any composition function changes.
  • Signed off every commit with git commit -s.

@github-actions

Copy link
Copy Markdown

Docs preview: https://modelplane-docs-pr-540.vercel.app (ready once the site's Content workflow finishes)

@tr0njavolta
tr0njavolta requested a review from pluna October 19, 2026 17:33
yourself. The [scheduler pins each pool's pods to
it]({{< ref "/architecture/scheduling.md#pinning-placement-to-a-pool" >}}), so
worker pods stay Pending without it.
- **A DCGM exporter for GPU metrics.** Modelplane doesn't install a GPU

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tr0njavolta PR #526 is merged can you rebase and update here ?

@dennis-upbound

Copy link
Copy Markdown
Collaborator

The DCGM bullet at line 73 duplicates the one #526 added, which is now at line 92 after the merge from main. I'd drop this one and fold anything it adds into #526's. The streaming notes and the gateway bucket limits read well.

@dennis-upbound dennis-upbound left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for dropping the duplicate DCGM bullet. The new content checks out against AI Gateway v1.1.0: token latency is recorded only for streaming responses (processor_impl.go), and the top buckets are 81.92s, 60s and 2.5s (genai.go).

A few things before it can merge:

  • It conflicts with main in telemetry.md now that #546 and #548 are in. Could you rebase?
  • DCO fails because two commits aren't signed off. Squashing to one signed-off commit with a plain subject would fix it and match CONTRIBUTING.
  • main's accept.txt already has DCGM and dcgm-exporter, so those two lines can go. agentic is new and worth keeping.
  • Nit: which requires streaming traffic: has a trailing space, and the hint's first line runs past the wrap the rest of the page uses.

The telemetry docs didn't say that the gateway records
modelplane_frontend_ttft_seconds and modelplane_frontend_tpot_seconds
only for streaming responses, so a deployment without streaming traffic
has no series for either. They also didn't say that the gateway's
histograms stop at fixed upper buckets: 81.92 seconds for request
duration, 60 for time to first token, and 2.5 for time per output token
in AI Gateway v1.1.0. A quantile above the top bucket reads as that
bound no matter how long the request took.

The metrics table and the p99 example now say both TTFT and TPOT need
streaming traffic, and a note points non-streaming deployments at
modelplane_frontend_request_duration_seconds. The bucket bounds are
listed, and long requests are pointed at the engine's
modelplane_request_duration_seconds, whose vLLM buckets reach 7680
seconds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Rae Sharp <resharp20@gmail.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants