Skip to content

Hint at igt-gpu-tools when an Intel GPU's utilization has no readable source#564

Merged
tobocop2 merged 5 commits into
mainfrom
fix/intel-util-hint
Jul 20, 2026
Merged

Hint at igt-gpu-tools when an Intel GPU's utilization has no readable source#564
tobocop2 merged 5 commits into
mainfrom
fix/intel-util-hint

Conversation

@tobocop2

@tobocop2 tobocop2 commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Problem

On Intel hosts where no utilization source can report (kernel older than 5.19, igt-gpu-tools not installed; xpu-smi never covers consumer iGPUs), GPU monitoring showed "--" with no guidance. The hint only covered intel_gpu_top being installed but CAP_PERFMON-blocked, and only rode the SSE stream; the plain JSON endpoints had nothing.

Solution

The hint now distinguishes grant (installed but blocked) from install (tool absent), and every GPU surface carries it: the fleet panel, the SSE stream, all placement routes (new notice field), GET /api/gpus (now an envelope {gpus, notice}), and the MCP get_gpus tool. Also fixes the grant text's no-setup kernel version (6.5, not 6.2) and two stale comments.

tobocop2 added 5 commits July 19, 2026 20:11
… source

On Intel hosts where no utilization source reports (kernel predating
i915's fdinfo counters, igt-gpu-tools absent; xpu-smi never covers
consumer iGPUs), the GPU panel showed "--" with no guidance. The hint
probe only covered intel_gpu_top being installed but CAP_PERFMON-blocked.

Replace the grant-binary probe with a typed IntelUtilHint (grant /
install): when intel_gpu_top is missing entirely, the fleet panel and
the placement SSE stream now say to install igt-gpu-tools plus the
grant, the only utilization path on kernels older than i915's fdinfo
(5.19, or 6.5 under GuC submission). Also correct the no-setup kernel
version in the grant text (6.5, not 6.2) and the stale fdinfo comments.
The hint only rode the SSE stream; the plain JSON surfaces were silent.
PlacementResponse gains a notice field set by every placement handler,
and GET /api/gpus becomes an envelope {gpus, notice} matching the SSE
payload shape. The notice computation lives in app.placement so the
HTTP handlers and the MCP get_gpus tool (which documents itself as the
/api/gpus equivalent) share one path. CLI placement --json keeps
notice: null; from_view stays a pure serializer.
app.placement imported cli.tui.messages to format the notice, putting
the shared orchestration layer under a TUI surface. The composition
(probe stats + evaluate hint) now lives next to the hint in gpu_stats
as probe_intel_util_hint, and each surface formats via messages itself:
the HTTP handlers and the MCP get_gpus tool. app/placement.py returns
to its main-line state.
@tobocop2
tobocop2 merged commit 0d56656 into main Jul 20, 2026
17 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.

1 participant