Skip to content

ci: probe the tic statement's analysis cost on a runner (do not merge) - #563

Closed
MarcusKainth wants to merge 2 commits into
mainfrom
ci/probe-analysis-cost
Closed

MarcusKainth wants to merge 2 commits into
mainfrom
ci/probe-analysis-cost

Conversation

@MarcusKainth

@MarcusKainth MarcusKainth commented Sep 24, 2026 •

Copy link
Copy Markdown
Owner

What this changes, and why

A measurement, not a change to merge. It adds a temporary workflow that runs on
ubuntu-latest and reports, from system.query_log, what one resident stage1 and
stage2 analysis of the tic statement costs: one session alone, four sessions at
once in separate databases, and four at once beside one run_statement batch
tic. The CI plan uses these numbers in place of local numbers scaled by a
guessed ratio.

The first-tic timeout is raised to 1,800 s on this branch only, so a loaded
runner finishes its analyses and they reach query_log.

Evidence

The probe job's log carries the runner's CPU model, core count, RAM and the
query_log table. Run ids are recorded when the runs finish.

Invariants

None. Nothing here is meant to land.

Spec impact

  • None. No contract in SPEC.md is touched

Anything else

Close without merging.

Written mostly by Claude Opus 5.5.

Results

Run 36059942650, two attempts on ubuntu-latest (4 vCPU, 15 GiB), ClickHouse 26.8.2.7, ProfileEvents['QueryAnalysisMicroseconds'] from system.query_log. Attempt 1 ran on an AMD EPYC 7763, attempt 2 on an AMD EPYC 9V74. Run 36059341362 failed before measuring (the probe script had no exec bit).

Stage1 analysis, seconds (EPYC 7763 / EPYC 9V74):

analysis user CPU
one session alone 150.7 / 142.3 161.9 / 151.9
four sessions at once 419 to 430 / 421 to 450 210 to 215 / 218 to 229
four at once plus one run_statement tic 504 to 520 / 533 to 557 about 216 / about 224

Stage2 analysis: 2.9 / 2.8 s alone, 12.8 to 18.1 s with four at once. Peak memory per stage1 about 860 MiB.

Alone, a runner analyses 3.5 to 3.7 times slower than a development machine's 40.9 s. The analysis is single-threaded and CPU-bound, and four at once take about three times as long each while CPU time rises from about 150 s to about 215 s: the 4-vCPU runner behaves as about two physical cores, so it completes about one analysis per 110 s whatever the thread count.

Temporary. Measures one stage1 and stage2 resident analysis alone, four at
once, and four at once beside a run_statement batch tic, from
system.query_log on ubuntu-latest. The first-tic timeout is raised so a
loaded runner still finishes its analyses. Not for merging.
@github-actions github-actions Bot added area: ci Workflows, the Makefile, and the scripts they run area: native Native mode: the tic simulation and renderer as SQL, and the WAD loader labels Sep 24, 2026
@MarcusKainth

Copy link
Copy Markdown
Owner Author

Measurement done: runs 36059942650 (attempts 1 and 2). Closing without merging.

@MarcusKainth
MarcusKainth deleted the ci/probe-analysis-cost branch September 24, 2026 22:14
MarcusKainth added a commit that referenced this pull request Sep 25, 2026
A dated post for docs/blog/ on the CI work of 24 and 25 September: the
required check that no job reported, one statement analysis per test, the
analyser pass that hashed nested subqueries for every comparison in a
chain, the smaller test archive and the regrouping, and the nightly
regression record. Every figure cites a committed file, a pull request
body or a CI run by id. The runner probe's and the queue delay's figures
were added to the bodies of #563 and #564 so the post has a durable
source for them.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ci Workflows, the Makefile, and the scripts they run area: native Native mode: the tic simulation and renderer as SQL, and the WAD loader

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant