Skip to content

mz-debug-freshness: fix CPU attribution and read capacity from heap_percent - #90

Merged
sjwiesman merged 3 commits into
MaterializeInc:mainfrom
ggevay:gabor/freshness-cpu-nesting
Oct 7, 2026
Merged

sjwiesman merged 3 commits into
MaterializeInc:mainfrom
ggevay:gabor/freshness-cpu-nesting

Conversation

@ggevay

@ggevay ggevay commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Two separate fixes, one commit each, plus a note on the second. See the commit messages for the details:

  • mz-debug-freshness: count each operator's CPU time once
  • mz-debug-freshness: read replica capacity from heap_percent
  • mz-debug-freshness: say that heap_percent is null on the emulator

@ggevay ggevay changed the title mz-debug-freshness: fix CPU attribution and three workflow gaps mz-debug-freshness: fix CPU attribution and two workflow gaps Oct 6, 2026
@ggevay
ggevay force-pushed the gabor/freshness-cpu-nesting branch 4 times, most recently from 7252482 to 120e7a6 Compare October 6, 2026 17:55
@ggevay ggevay changed the title mz-debug-freshness: fix CPU attribution and two workflow gaps mz-debug-freshness: fix CPU attribution and read capacity from heap_percent Oct 6, 2026
@ggevay
ggevay marked this pull request as ready for review October 6, 2026 17:56
@ggevay
ggevay requested a review from sjwiesman October 6, 2026 17:56
ggevay and others added 3 commits October 7, 2026 11:34
The operator costs and operator skew queries summed mz_scheduling_elapsed
over every operator in a plan node's span. A region's elapsed time
already contains the operators inside it, so joins, reductions, and TopK
were counted 1.5x to 3x. Count only each node's outermost operators, the
ones at the smallest address depth. Also note that EXPLAIN ANALYZE ...
CPU has the same overstatement before v26.46.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
memory_percent counts RAM only. On a replica that uses swap it can sit
near 100 while the replica still has room, so it misreads capacity.
heap_percent counts RAM and swap, which together are the memory limit.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
The emulator reports only CPU and memory for its replicas, so
heap_percent is null there, and memory_percent is measured against the
nominal size rather than the container's memory. Neither column shows
the emulator's capacity.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ggevay
ggevay force-pushed the gabor/freshness-cpu-nesting branch from bc1b82d to 67cd936 Compare October 7, 2026 09:34
@sjwiesman
sjwiesman merged commit 52472cd into MaterializeInc:main Oct 7, 2026
3 checks passed
val-materialize added a commit to MaterializeInc/materialize that referenced this pull request Oct 9, 2026
Release notes for the v26.45 train, published as **v26.45.1**. v26.45.0
did not ship, so (as with v26.44) its notes are folded in here and
[#39477](#39477) is
closed unmerged.

- **v26.45.0 content**: 8 Improvements, 2 Agent Skills, 8 Bug Fixes,
copied verbatim from #39477 with anchors renamed to `{#v26.45.1-…}`.
- **v26.45.1 content**: Alerting for Self-Managed and the external
dependency monitoring Improvement (editor-added). The release's only PR,
[#39659](#39659), is
omitted.
- **Dates**: Cloud 2026-10-08, Self-Managed 2026-10-09. The operator
compatibility row is `v26.45.1`. `v26.45.md` (`patch: 1`, no `rc`) is
already on `main`.

⚠️ **Open questions**

- **Group-sync bullet**: `oidc_group_role_sync_enabled` defaults to
`false` at the tag. Is it on in Cloud? If not, cut the "Quieter logins"
bullet.
- **Certificate SAN requirements**
([#39316](#39316),
[#39415](https://github.com/MaterializeInc/materialize/pull/39415)/[#39459](https://github.com/MaterializeInc/materialize/pull/39459))
need action at upgrade time but sit in Improvements. Should they be
called out more loudly? Also, does
[#39351](#39351) (S3
on rustls) impose the same SAN rule on custom S3 endpoints?
- **[#39659](#39659)
(omitted)**: is `enable_upsert_paged_spill` on in production? A draft
bullet is in
[omitted.md](https://github.com/MaterializeInc/mz-skills/blob/main/data/mz-release-notes/v26.45.1/final/omitted.md#borderline).
- **`EXPLAIN ANALYZE ... CPU`**:
[agent-skills#90](MaterializeInc/agent-skills#90)
says it overstates joins, reductions, and TopK by 1.5x–3x before v26.46.
Not published. Is that a known issue?
- **Metric sinks**:
[#39332](#39332),
[#38910](#38910), and
[#39337](#39337) are
withheld because `enable_metric_sink` is `false`. #39337 fixes a panic
any superuser can reach, so consider publishing it regardless.
- **Possible cuts**:
[#39362](#39362) was
observed only in CI. The latency figures from
[#39179](#39179) were
measured on one noisy machine.
- **Possible adds**:
[#38894](https://github.com/MaterializeInc/materialize/pull/38894)–[#38896](https://github.com/MaterializeInc/materialize/pull/38896)
(MV correction buffer) need an end-to-end number.
[#39149](#39149) fixes
the kind install guide, which crash-loops today.
[#39549](#39549)
(jemalloc page) is omitted because no released version had the
regression.

Snapshot drafts in mz-skills:
[v26.45.0](https://github.com/MaterializeInc/mz-skills/tree/main/data/mz-release-notes/v26.45.0)
(rc.1–rc.4, final),
[v26.45.1](https://github.com/MaterializeInc/mz-skills/tree/main/data/mz-release-notes/v26.45.1/final).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude <[email protected]>
Co-authored-by: Valerie Chiang <[email protected]>
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.

2 participants