Skip to content

Schedule lazy scan preparation on the CPU executor - #97

Closed
phillipleblanc wants to merge 1 commit into
spiceai-54from
phillip/scan-prepare-cpu
Closed

phillipleblanc wants to merge 1 commit into
spiceai-54from
phillip/scan-prepare-cpu

Conversation

@phillipleblanc

Copy link
Copy Markdown

WHAT

Schedule lazy scan preparation through the CPU executor while preserving lazy, bounded split admission. This remains a draft experiment: CPU improves, but indexed 64-client p99 rises 65 → 75 ms, so the no-latency-regression gate is unmet.

WHY

Expression optimization and split preparation consume CPU and compete with file I/O when placed on the blocking pool.

HOW

Use the session CPU scheduling API and cover the first-poll executor choice with a test that fails before the change. All 304 layout/file nextest tests, scoped pinned-toolchain Clippy and formatting pass; built Spice from the exact fork and validated real fixture results/full scans plus paired 64-client and 3,000/s offered profiles.

Indexed CPU falls 4.569 → 4.377 ms/lookup; corrected samples show preparation leaves the blocking executor and pool-lock share falls 9.77% → 8.05%. Indexed p99.9 rises 102 → 123.7 ms. Do not merge until the tail-latency gate is resolved.

Detailed local evidence retains exact source/binary digests, raw profiles, commands, full results and attribution limits; artifacts are local, not uploaded. Runtime validation uses spiceai/spiceai#14149 and instrumentation spiceai/spiceai#14174; the fork diff is independent of #96. No lab signoff was run under the explicit instruction.

Signed-off-by: Phillip LeBlanc <879445+phillipleblanc@users.noreply.github.com>
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.

1 participant