{# Fuller hardware view (hardware-aware W3), htmx-polled. Renders the curated strip (warnings) then the aggregated per-GPU detail and per-service admission over one cached ResourceSnapshot. Instantaneous readings are labelled "now"; cumulative-since-restart figures (peak temperature, throttle events, rejects) are labelled separately so a peak is never read as the current value. ALL markup lives in this fragment so the innerHTML poll swaps identical structure (initial render == refresh). #} {% include "fragments/resource_strip.html" %}

Snapshot age {{ "%.0f"|format(snapshot.collected_age_seconds) }}s. Readings marked now are instantaneous; since restart figures accumulate until the reporting service restarts.

GPUs

{% if snapshot.gpus %} {% for g in snapshot.gpus %} {% set pct = vram_percent(g.vram_used_bytes, g.vram_total_bytes) %} {% set state = device_state(g.utilization_percent) %}

GPU {{ short_uuid(g.gpu_uuid) }} {{ state }}

Shared by: {{ g.services | join(", ") }}

Utilization (now) {% if g.utilization_percent is not none %}{{ g.utilization_percent }}%{% else %}unknown{% endif %}
Memory (now) {% if g.vram_total_bytes is not none %}{{ gib(g.vram_used_bytes) }} / {{ gib(g.vram_total_bytes) }} GiB{% if pct is not none %} ({{ pct }}%){% endif %}{% else %}unknown{% endif %}
Temperature (now) {% if g.temperature_celsius is not none %}{{ g.temperature_celsius }}°C{% else %}unknown{% endif %}
Peak temperature (since restart) {% if g.max_temperature_celsius is not none %}{{ g.max_temperature_celsius }}°C{% else %}unknown{% endif %}
Throttling (now) {% if g.throttle_active is none %}unknown{% elif g.throttle_active %}yes{% if g.throttle_reasons %} ({{ g.throttle_reasons | join(", ") }}){% endif %}{% else %}no{% endif %}
Throttle events (since restart) {% if g.throttle_events_since_start is not none %}{{ g.throttle_events_since_start }}{% else %}unknown{% endif %}
{% endfor %} {% else %}

No GPU telemetry reported. On a CPU-only install this is expected.

{% endif %}

Service queues

{% if snapshot.services %} {# Every probed service is listed, even one that reported no telemetry, so a down or older service is never silently dropped from the view. #}
{% for v in snapshot.services %} {% if v.admission is not none %} {% else %} {% endif %} {% endfor %}
ServiceReachableDevice Queue (now)Rejected (since restart)
{{ v.name }} {{ "yes" if v.up else "no" }} {{ v.device or "unknown" }}{{ v.admission.pending }}/{{ v.admission.max_pending }} {{ v.admission.rejected_since_start }}unavailable unavailable
{% else %}

No service reported queue telemetry.

{% endif %}