Run SQL benchmarks with plan v2 (full stack vs develop) - #9342
Run SQL benchmarks with plan v2 (full stack vs develop)#9342joseph-isaacs wants to merge 9 commits into
Conversation
Polar Signals Profiling ResultsLatest Run
Previous Runs (60)
Powered by Polar Signals Cloud |
Benchmarks: PolarSignals Profiling 📖Vortex (geomean): 1.024x ➖ datafusion / vortex-file-compressed / ns (1.024x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: String Encoding 📖vortex / vortex-file-compressed / ms (0.999x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / % (1.000x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.073x ➖, 0↑ 6↓)
datafusion / vortex-compact / ns (1.043x ➖, 1↑ 6↓)
datafusion / parquet / ns (0.991x ➖, 2↑ 2↓)
duckdb / vortex-file-compressed / ns (0.972x ➖, 1↑ 0↓)
duckdb / vortex-compact / ns (0.984x ➖, 0↑ 1↓)
duckdb / parquet / ns (0.998x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: FineWeb NVMe 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.280x ❌, 0↑ 5↓)
datafusion / vortex-compact / ns (1.017x ➖, 1↑ 1↓)
datafusion / parquet / ns (0.998x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.087x ➖, 0↑ 4↓)
duckdb / vortex-compact / ns (0.969x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.002x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench Sorted on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.043x ➖, 1↑ 4↓)
datafusion / vortex-compact / ns (1.201x ❌, 0↑ 5↓)
datafusion / parquet / ns (0.992x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (1.026x ➖, 0↑ 2↓)
duckdb / vortex-compact / ns (1.026x ➖, 0↑ 1↓)
duckdb / parquet / ns (0.997x ➖, 1↑ 0↓)
File Size Changes (200 files changed, +0.0% overall, 99↑ 101↓)
Totals:
|
Benchmarks: TPC-DS SF=1 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.060x ➖, 1↑ 21↓)
datafusion / vortex-compact / ns (1.015x ➖, 5↑ 7↓)
datafusion / parquet / ns (0.995x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.996x ➖, 5↑ 4↓)
duckdb / vortex-compact / ns (0.979x ➖, 5↑ 1↓)
duckdb / parquet / ns (1.005x ➖, 3↑ 6↓)
No file size changes detected. |
Benchmarks: Statistical and Population Genetics 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
duckdb / vortex-file-compressed / ns (0.973x ➖, 3↑ 3↓)
duckdb / vortex-compact / ns (1.038x ➖, 0↑ 1↓)
duckdb / parquet / ns (1.004x ➖, 0↑ 0↓)
No file size changes detected. |
Benchmarks: Clickbench on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.060x ➖, 3↑ 7↓)
datafusion / vortex-compact / ns (1.117x ❌, 1↑ 13↓)
datafusion / parquet / ns (0.999x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.999x ➖, 2↑ 3↓)
duckdb / vortex-compact / ns (1.018x ➖, 2↑ 5↓)
duckdb / parquet / ns (0.989x ➖, 1↑ 0↓)
No file size changes detected. |
Benchmarks: Appian on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-compact / ns (1.022x ➖, 0↑ 0↓)
datafusion / parquet / ns (1.005x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (1.005x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.996x ➖, 0↑ 0↓)
File Size Changes (10 files changed, -63.8% overall, 0↑ 10↓)
Totals:
|
Benchmarks: TPC-H SF=1 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.990x ➖, 7↑ 8↓)
datafusion / vortex-compact / ns (1.115x ➖, 1↑ 7↓)
datafusion / parquet / ns (0.968x ➖, 1↑ 0↓)
duckdb / vortex-file-compressed / ns (0.992x ➖, 1↑ 0↓)
duckdb / vortex-compact / ns (1.044x ➖, 0↑ 3↓)
duckdb / parquet / ns (0.995x ➖, 0↑ 0↓)
|
Benchmarks: TPC-H SF=10 on NVME 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (1.186x ❌, 0↑ 16↓)
datafusion / vortex-compact / ns (1.128x ❌, 1↑ 14↓)
datafusion / parquet / ns (1.009x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.994x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (0.992x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.008x ➖, 0↑ 1↓)
No file size changes detected. |
Benchmarks: Random Access 📖Verdict: No clear signal (low confidence) How to read Verdict and Engines
random-access / vortex-file-compressed / ns (1.000x ➖, 0↑ 0↓)
random-access / parquet / ns (0.996x ➖, 0↑ 0↓)
random-access / lance / ns (1.006x ➖, 0↑ 0↓)
|
Benchmarks: Compression 📖vortex / vortex-file-compressed / ns (0.993x ➖, 1↑ 0↓)
vortex / vortex-file-compressed / bytes (1.001x ➖, 0↑ 0↓)
vortex / vortex-file-compressed / ratio (0.992x ➖, 1↑ 0↓)
vortex / parquet / ns (1.005x ➖, 0↑ 0↓)
vortex / parquet / bytes (1.000x ➖, 0↑ 0↓)
|
Benchmarks: FineWeb S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-file-compressed / ns (0.716x ➖, 5↑ 0↓)
datafusion / vortex-compact / ns (0.775x ➖, 4↑ 0↓)
datafusion / parquet / ns (0.910x ➖, 0↑ 0↓)
duckdb / vortex-file-compressed / ns (0.996x ➖, 0↑ 0↓)
duckdb / vortex-compact / ns (1.008x ➖, 0↑ 0↓)
duckdb / parquet / ns (1.159x ➖, 1↑ 2↓)
|
Benchmarks: TPC-H SF=10 on S3 📖Verdict: No clear signal (environment too noisy confidence) How to read Verdict and Engines
datafusion / vortex-compact / ns (1.182x ➖, 1↑ 7↓)
datafusion / parquet / ns (0.897x ➖, 4↑ 4↓)
duckdb / vortex-compact / ns (0.953x ➖, 0↑ 0↓)
duckdb / parquet / ns (0.973x ➖, 0↑ 0↓)
|
Merging this PR will improve performance by 12.71%
Performance Changes
Tip Curious why this is faster? Comment Comparing Footnotes
|
f2c5c38 to
daa0791
Compare
19bdd2c to
e9aefff
Compare
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk>
Translate each partition's byte range to the row range whose natural splits it owns, mirroring the LayoutReader path, so plan-v2 scans no longer require repartitioning to be disabled. Benchmarks can now run against the same DataFusion configuration as the stored baseline. Log the plan-v2 scan path once per process so benchmark and CI logs record which scan path produced their timings. Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MjXw22CLhx6NgA8mxjJCmQ
Signed-off-by: Joe Isaacs <joe.isaacs@live.co.uk> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MjXw22CLhx6NgA8mxjJCmQ
e9aefff to
b472e97
Compare
Rationale for this change
#9341 targets
ji/vx-plan-perf, so it sits mid-stack and the PR benchmark dispatch—which listens forpull_requestlabel events on PRs intodevelop—does not run for it. This draft carries the complete remaining Plan V2 stack directly on currentdevelopso CI can benchmark it against the current baseline.This is the benchmarking-only sibling of #9341.
What is included?
The branch contains 9 commits:
VORTEX_USE_PLAN_V2=1DataFusion path and CI benchmark settingVORTEX_PLAN_V2_FILTER_MODEThe physical plan model is already in
developvia #9142. The former standalone pushdown PR #9166 is folded into #9196.COUNT(*)reduction belongs to #9196, childless-Packsplit handling belongs to #9240, and the zero-read end-to-end regression belongs to #9244.Rebase verification
developata0a0b207d8range-diffmatches the zoned, execution, pruning, performance, CI, DataFusion repartitioning, and tracing commitsUser-facing behavior
No stable API changes.
LayoutReaderremains the default whenVORTEX_USE_PLAN_V2is unset; Plan V2 remains opt-in and experimental.Checks
cargo +nightly fmt --all -- --checkyamllint --strict -c .yamllint.yaml .github/workflows/sql-bench-matrix.ymlcargo test -p vortex-layout -p vortex-scan-v2 -p vortex-datafusioncargo clippy -p vortex-layout -p vortex-scan-v2 -p vortex-datafusion --all-targets --all-features -- -D warningsgit diff --check origin/develop...HEAD