The first nightly with the interactive runtime showed reads isolated from
hydration and nothing else moving, and left three questions the benchmarks did
not ask. What a saturated interactive runtime does to maintenance, since two
runtimes are twice the worker threads on the same cores. What publishing every
index costs when there are hundreds of them and nobody reads. And whether
`PeekIsolationUnderExpensivePeeks` guards anything, since its two sides came
out identical.
`MaintenanceUnderPeekSaturation` loads an eight-worker replica, half the cores
of the nightly agents, with one join peek in flight per worker and two
hydration churn loops, while a writer advances a small materialized view. The
measured query reads that view strict serializable from a separate one-worker
cluster, so it cannot answer before the view's write frontier passes the write
and nothing else competes with it: its latency is the view's maintenance lag
under the peek load. Read on the loaded replica it would instead queue behind
the joins on the runtime that serves peeks, which is what the join loops' own
latency reports.
`ManyIndexesIdle` and `ManyIndexesRestart` publish two hundred indexed views
over one table, each a distinct arrangement. The first measures one lookup and,
through the clusterd memory column, the resident cost of two hundred
publications. The second restarts the replica and waits for a read that imports
every index, so every publication is rendered and bound again on the way up.
`ManyReexportsIdle` is the other shape: two hundred indexes on one relation and
key share one arrangement and re-export it, each under its own publication.
`PeekIsolationUnderExpensivePeeks` walks five times as many rows half again as
often, about 60% of the worker where the old sizing measured under 10%, at which
the lookups did not notice the walks. Its docstring now says what it guards:
both queries are peeks, so it measures how the serving runtime interleaves
them, not the split between peeks and maintenance.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VDm7opomJLxbNUEP3r9BLk
Stacks on #38676. Tracked by CPU-216.
The first nightly with the interactive runtime on showed reads isolated from hydration (point lookups 37x better at p99 under churn, introspection reads 100 ms instead of minutes) and nothing else moving. It left three questions the benchmarks did not ask.
What a saturated interactive runtime does to maintenance. Two runtimes are twice the worker threads on the same cores.
MaintenanceUnderPeekSaturationloads an eight-worker replica, half the cores of the nightly agents, with one join peek in flight per worker and two hydration churn loops, while a writer advances a small materialized view. The measured query reads that view strict serializable from a separate one-worker cluster, so it cannot answer before the view's write frontier passes the write and nothing else competes with it: its latency is the view's maintenance lag under the peek load. Read on the loaded replica it would queue behind the joins on the runtime that serves peeks instead, which is what the join loops' own latency reports.What publishing costs at scale with nobody reading.
ManyIndexesIdleandManyIndexesRestartpublish two hundred indexed views over one table, each a distinct arrangement. The first measures one lookup and, through the clusterd memory column, the resident cost of two hundred publications. The second restarts the replica and waits for a read that imports every index, so every publication is rendered and bound again on the way up.ManyReexportsIdleis the other shape: two hundred indexes on one relation and key share one arrangement and its publication point. Before #38389 aliased re-exports it measured 125 to 185 KB per re-export, the operators of a re-import.Whether
PeekIsolationUnderExpensivePeeksguards anything. Its two sides came out identical: at 100k rows and 2/s the walks used under 10% of the worker and the lookups never noticed them. It now walks 500k rows at 3/s, about 60%. Its docstring says what it guards: both queries are peeks, so it measures how the serving runtime interleaves them, not the split between peeks and maintenance, which is why two runtimes cannot move it.🤖 Generated with Claude Code
https://claude.ai/code/session_01VDm7opomJLxbNUEP3r9BLk