{% load silk_filters %}{# "Where the time goes": scatter and heatmap, re-rendered by htmx when the endpoint scope changes. #}

Where the time goes

{{ scoped_count|num }} requests
Queries vs response time
{% if scatter %}

{{ scatter.verdict.0 }} (ρ {{ scatter.rho|floatformat:"2" }}). {{ scatter.verdict.1 }}

{% for t in scatter.yticks %}{{ t.label|dur }}{% endfor %}
{% for t in scatter.yticks %}{% endfor %} {% for d in scatter.dots %}{% endfor %}
{% for x in scatter.xticks %}{{ x }}{% endfor %}
queries per request →requestN+15xx log time scale{% if scatter.shown < scatter.total %} · newest {{ scatter.shown }} of {{ scatter.total }}{% endif %} · click a dot to open it
{% else %}

Not enough requests to plot.

{% endif %}
Latency distribution
{% if heatmap %}
{% for t in heatmap.yticks %}{{ t.label|dur }}{% endfor %}
{% for col in heatmap.columns %}
{% for c in col %}{% endfor %}
{% endfor %}
{{ heatmap.first|date:"M j" }}{{ heatmap.last|date:"M j" }}
requests in order, oldest → newest · darker = more · two bands usually mean two code paths, such as cache hit and miss
{% else %}

Not enough requests to plot.

{% endif %}