{% from "partials/_macros.html" import card_header %}
{{ card_header("system resources") }}
{% if resources %}
{% set r = resources.row %}
{% set u = r.uptime_seconds or 0 %}
{# ---- current-value tiles ---- #}
memory
{{ "%.0f"|format(r.mem_percent) if r.mem_percent is not none else "—" }}%
{{ "%.0f"|format(r.cpu_percent) if r.cpu_percent is not none else "—" }}%
{{ r.cpu_count_logical or "?" }} cores
load avg
{% if r.load_1 is not none %}
{{ "%.2f"|format(r.load_1) }} · {{ "%.2f"|format(r.load_5) }} · {{ "%.2f"|format(r.load_15) }}
{% else %}—{% endif %}
1 · 5 · 15 min
uptime
{{ u // 86400 }}d {{ (u % 86400) // 3600 }}h {{ (u % 3600) // 60 }}m
tasks
{{ r.tasks_total if r.tasks_total is not none else "—" }}
·
{{ r.tasks_running or 0 }} run
{{ r.threads_total or 0 }} threads
{# ---- trend charts (filled by /api/chart/resources via dashboard.html JS) ---- #}
memory & swap %
cpu %
{# ---- per-core breakdown: a mini bar-strip so a hot core stands out
at a glance (bar height + colour encode load; value on hover)
instead of 16 near-identical text chips you have to read. ---- #}
{% if resources.per_core %}
per-core cpu %
{% for core in resources.per_core %}
{% set p = core or 0 %}
{{ loop.index0 }}
{% endfor %}
{% endif %}
{# ---- disk usage (df) ---- #}
disk usage
{% if disks %}
mount
device
fstype
used / total
%
{% for d in disks %}
{% set pct = d.percent or 0 %}