Skip to content

Evaluate ClickHouse/ClickHouse#104431 (single-file Parquet parallelism) on ClickBench - #1436

Draft
alexey-milovidov wants to merge 8 commits into
mainfrom
eval-ch-pr-104431
Draft

Evaluate ClickHouse/ClickHouse#104431 (single-file Parquet parallelism) on ClickBench#1436
alexey-milovidov wants to merge 8 commits into
mainfrom
eval-ch-pr-104431

Conversation

@alexey-milovidov

Copy link
Copy Markdown
Member

Measurement harness, not for merging.

Evaluates ClickHouse/ClickHouse#104431
("Parallelize reads from a single Parquet file in StorageFile, again") on ClickBench,
on every machine type of the daily runs.

clickhouse-parquet-104431 and clickhouse-parquet-baseline are copies of
clickhouse-parquet whose install pins a specific RelWithDebInfo build from
ClickHouse CI instead of downloading the latest release:

directory build commit
clickhouse-parquet-104431 PRs/104431/.../build_{amd,arm}_release 07303b95365362daace76759e4c51e39efefd25a (pull request head)
clickhouse-parquet-baseline REFs/master/.../build_{amd,arm}_release aec8b1d56234cdf035fcc0fc65afe31a9a0f224d (master)

aec8b1d5 is the honest A/B parent: ClickHouse CI built the pull request as the merge commit
e350489c26 = "Merge 07303b95 into 2a539919", and 2a539919's only difference from its
parent aec8b1d5 is test files, so the binaries are source identical. 2a539919 itself has no
build_amd_release - master CI skips that job - while aec8b1d5 has both architectures.

Everything else (queries.sql, create.sql, query, benchmark.sh, the dataset) is byte
identical to clickhouse-parquet, so the two directories differ only by the pull request.
Neither directory carries results/, so nothing is added to the website.

The pull request only changes the single local Parquet file path, which is what
clickhouse-parquet exercises. With the pull request's default
input_format_parquet_min_bytes_to_split = 2 GiB, 12 of the 43 queries split
hits.parquet into several sources at max_threads = 16 (Q21-Q24, Q28, Q29, Q34, Q35,
Q37-Q40 - the ones reading URL, Title or Referer); the rest keep a single source, so they
measure the cost of making the decision. The number of queries that split is expected to vary
with the machine's core count, which is why this runs on all nine machine types.

`clickhouse-parquet-104431` and `clickhouse-parquet-baseline` are copies of
`clickhouse-parquet` whose `install` pins a specific RelWithDebInfo build from
ClickHouse CI instead of downloading the latest release:

- `clickhouse-parquet-104431`  - head of ClickHouse/ClickHouse#104431
  ("Parallelize reads from a single Parquet file in `StorageFile`, again"),
  `07303b95365362daace76759e4c51e39efefd25a`;
- `clickhouse-parquet-baseline` - the master commit CI merged it into,
  `aec8b1d56234cdf035fcc0fc65afe31a9a0f224d`.

Everything else - `queries.sql`, `create.sql`, `query`, the dataset - is byte
identical to `clickhouse-parquet`, so the two directories differ only by the
pull request.

Not for merging: this is a measurement harness for one pull request.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@alexey-milovidov alexey-milovidov added the machine:all PR benchmark on every machine type label Aug 17, 2026
@alexey-milovidov
alexey-milovidov deployed to benchmark-approval August 17, 2026 04:35 — with GitHub Actions Active
…et-baseline (c6a.2xlarge, c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl)
@github-actions

Copy link
Copy Markdown
Contributor

Results for clickhouse-parquet-104431 are ready for: c6a.2xlarge, c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl.
Results for clickhouse-parquet-baseline are ready for: c6a.2xlarge, c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl.
The result files are committed as cc77d85.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for clickhouse-parquet-104431 are ready for: c6a.large, c6a.xlarge.
Results for clickhouse-parquet-baseline are ready for: c6a.large, c6a.xlarge.
The result files are committed as 88e9f62.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for clickhouse-parquet-104431 are ready for: t3a.small.
Results for clickhouse-parquet-baseline are ready for: t3a.small.
The result files are committed as 041a020.

Logs:

@alexey-milovidov
alexey-milovidov marked this pull request as draft August 17, 2026 05:52
alexey-milovidov and others added 2 commits August 17, 2026 05:59
… off

`clickhouse-parquet-104431-nosplit` runs the same pinned #104431 binary as
`clickhouse-parquet-104431`, with `input_format_parquet_min_bytes_to_split`
raised to 1 PB so no read clears the floor.

The decision still runs - the pull request computes the projected read size,
and so parses the footer, before comparing it against the floor - so the three
directories decompose the difference:

    baseline -> nosplit   cost of making the split decision
    nosplit  -> 104431    effect of actually splitting

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rge, c6a.4xlarge, c6a.metal, c6a.xlarge, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl)
@github-actions

Copy link
Copy Markdown
Contributor

Results for clickhouse-parquet-104431-nosplit are ready for: c6a.2xlarge, c6a.4xlarge, c6a.metal, c6a.xlarge, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl.
The result files are committed as fc8df78.

Logs:

@github-actions

Copy link
Copy Markdown
Contributor

Results for clickhouse-parquet-104431-nosplit are ready for: c6a.large, t3a.small.
The result files are committed as bd4116e.

Logs:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

machine:all PR benchmark on every machine type

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant