Skip to content

Add duckdb-vortex-tuned: variant with threads=2 for memory-constrained hosts - #2225

Merged
alexey-milovidov merged 2 commits into
ClickHouse:mainfrom
KazukiKandaKK:add-duckdb-vortex-tuned-c6a-xlarge-20260925
Sep 26, 2026
Merged

alexey-milovidov merged 2 commits into
ClickHouse:mainfrom
KazukiKandaKK:add-duckdb-vortex-tuned-c6a-xlarge-20260925

Conversation

@KazukiKandaKK

Copy link
Copy Markdown
Contributor

Adds duckdb-vortex-tuned/ as a variant of duckdb-vortex/, following the existing postgresql / postgresql-indexed and pinot / pinot-tuned splits.

Why a separate directory

On this run's host (AWS c6a.xlarge, ~7.6 GiB usable RAM), duckdb-vortex's default recipe (threads=4, untouched) does not complete: COPY 'hits.parquet' TO 'hits.vortex' (FORMAT vortex) gets OOM-killed by the kernel before any of the 43 queries run, and lowering memory_limit alone doesn't prevent or delay it. Only reducing threads (to 2 or 1) let the conversion finish. Root-cause investigation is filed upstream at vortex-data/vortex#10046 (open, unresolved); that thread also links to vortex-data/vortex#9674, a broader in-progress effort to make Vortex's buffer allocations accountable to the host engine, which isn't yet wired up on the DuckDB write path.

Per this repo's README (vanilla and tuned results should be reported as separate entries, e.g. "MyDatabase" and "MyDatabase-tuned"), this is duckdb-vortex-tuned/ with "tuned": "yes", not an overwrite of duckdb-vortex/. Unlike pinot/pinot-tuned, which share machine types (e.g. c6a.4xlarge) so the site shows both side by side, duckdb-vortex/results/ has no c6a.xlarge.json for any date and, per the above, can't get one on this specific machine. So duckdb-vortex-tuned/c6a.xlarge.json will appear without a matching vanilla entry.

What's different from duckdb-vortex/

load adds SET threads = 2; before the COPY conversion. Every other script (benchmark.sh, queries.sql, install, start, stop, query, check, data-size, create.sql) is byte-identical to duckdb-vortex/ (checked with diff).

threads=1 also completed and was faster (load_time 1,439.9s vs. 1,540.3s, n=1 each). threads=2 is used here because it's the largest value that still completes, not because it's faster — this PR favors the smallest deviation from default over chasing an unreplicated speed difference.

Result

c6a.xlarge, 2026-09-25, DuckDB v1.5.5. Full 43-query x 3-run timing matrix (cold + 2 hot), no nulls. load_time is the benchmark driver's wall-clock measurement of load (lib/benchmark-common.sh's bench_load), rounded to whole seconds per convention; data_size is du -bcs hits.vortex. Concurrent phase is skipped (BENCH_CONCURRENT_DURATION=0, already set in duckdb-vortex's own benchmark.sh for single-process engines, see #946), so concurrent_qps/concurrent_error_ratio are null, matching duckdb-vortex's own results.

@alexey-milovidov alexey-milovidov added the machine:all PR benchmark on every machine type label Sep 25, 2026
@alexey-milovidov
alexey-milovidov deployed to benchmark-approval September 25, 2026 23:50 — with GitHub Actions Active
…ge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl)
@github-actions

Copy link
Copy Markdown
Contributor

Results for duckdb-vortex-tuned are ready for: c6a.2xlarge, c6a.4xlarge, c6a.metal, c7a.metal-48xl, c8g.4xlarge, c8g.metal-48xl.
The result files are committed as 168ab33.
Removed manually added result files: duckdb-vortex-tuned/results/20260925/c6a.xlarge.json.
The run of duckdb-vortex-tuned on c6a.large did not produce results.
The run of duckdb-vortex-tuned on c6a.xlarge did not produce results.

Logs:

@alexey-milovidov alexey-milovidov self-assigned this Sep 26, 2026
@alexey-milovidov
alexey-milovidov merged commit 11a6148 into ClickHouse:main Sep 26, 2026
1 of 2 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

The run of duckdb-vortex-tuned on t3a.small did not produce results.

Logs:

This branch is waiting to be deployed

1 waiting deployment
benchmark-approval — 168ab33b Waiting Sep 26, 2026 by robot-clickhouse via launch #523
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.

3 participants