Added
- Agent: block IO latency is now split into its three phases, each a histogram
broken down byop(read, write, flush, discard).blockio_queue_latencyis
the time a request waited before the device began servicing it — the
component that grows under saturation, where device latency alone stays flat.
blockio_total_latencyis the end-to-end span the issuing workload actually
experiences, measured directly rather than summed (two histograms cannot be
added). The sampler already tracedblock_rq_insert, but insert and issue
shared one timestamp and issue overwrote it, discarding the interval — so
this needs no new probe attach. A request that goes straight to the driver
has no queue phase and records no queue sample. (#1054, #1124)
Changed
- Agent:
blockio_latencyis renamedblockio_device_latency. It is the
same measurement — the pre-split metric always reported the issue-to-complete
span — but the bare name became ambiguous once the queue and end-to-end
phases were split out alongside it. Readers treat the two names as one
metric: the viewer, dashboard, and TUI resolve whichever name a recording
carries (blockio_device_latency_metric), so existing recordings keep
rendering unchanged. External consumers that queryblockio_latencyby name
— Prometheus rules, Grafana dashboards, saved PromQL — need updating.
(#1054, #1124)
Fixed
- Exporter:
/metrics/binaryserved zero bytes when the agent could not be
reached. To a scraper that only reads the body that is the same as an empty
snapshot, but not to a consumer that probes the endpoint to decide what it
speaks: zero bytes are not a msgpack document, so the probe concluded the
endpoint was Prometheus and fell through to the text route.rezolus record
probes exactly that way, so pointed at an exporter whose source had not come
up yet it reporteddetected Prometheus, refused with.rez requires a rezolus (msgpack) endpoint, and recorded nothing for the whole run — even
when the source appeared seconds later. It now serves a valid msgpack
document carrying no metrics, which is both true and recoverable: the
consumer keeps its connection and picks up real data the moment the agent
appears. An empty body from the agent is normalized the same way. (#1176)
Removed
- Debian 11 (bullseye) packages are no longer published. Debian 11 has
reached end of life:bullseye-securitywas last signed on 2026-08-31 and
itsReleasefile expired on 2026-09-07. apt refuses an expiredRelease,
soapt-get updatefails inside the build container and cannot be made to
succeed without disabling the freshness check — which would mean shipping
packages built against an archive that receives no further security updates.
Debian 11 users should stay on 5.19.0 or upgrade to bookworm or trixie. The
install script and the supported-distribution list are updated to match, so
it reports the release as unsupported rather than adding a repository that
has no packages for it.