Repository navigation
[DO NOT MERGE] bench: pin arrow-rs to apache/arrow-rs#11168 (lazy dictionary decode on skip) - #25686
zhuqi-lucas wants to merge 2 commits into
Conversation
… merge Patches every arrow-rs 60.0.0 crate to zhuqi-lucas/arrow-rs@f18aaab so the DataFusion benchmarks can measure deferring dictionary page decode on the Parquet skip path end to end, through pushdown_filters and the predicate cache, before the upstream PR is marked ready for review.
2cecafa to
040b03f
Compare
|
run benchmark clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmark clickbench_1 |
|
Hi @zhuqi-lucas, your benchmark configuration could not be parsed (#25686 (comment)). Error: Usage: Any benchmark name is accepted: Per-side configuration ( env:
# shared env is inherited by BOTH the build and the run, so build
# flags go here. Builds default to no debuginfo for speed; opt back
# in for hung-job gdb dumps and cap jobs to stay within memory:
CARGO_PROFILE_RELEASE_DEBUG: "1"
CARGO_BUILD_JOBS: "1"
baseline:
ref: v45.0.0
env:
# per-side env only reaches the benchmark run, not the build
DATAFUSION_RUNTIME_MEMORY_LIMIT: 1G
changed:
ref: v46.0.0
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: 2GPod size and CPU architecture (each key is optional and keeps the default when absent; requests and limits are set equal): resources:
cpu: "16"
memory: "128Gi"
arch: arm64 # arm64 or amd64File an issue against this benchmark runner |
|
run benchmark clickbench_1 clickbench_pushdown |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_pushdown
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_1
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_pushdown
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"CPU Details (lscpu)Details
Resource Usageclickbench_pushdown — base (merge-base)
clickbench_pushdown — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing bench-arrow-lazy-dict (b842b0f) to 2306a4b (merge-base) diff Run configurationrun benchmark clickbench_1
env:
DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"CPU Details (lscpu)Details
Resource Usageclickbench_1 — base (merge-base)
clickbench_1 — branch
File an issue against this benchmark runner |
Do not merge. This PR exists only to run the DataFusion benchmarks against apache/arrow-rs#11168 (defer dictionary page decode on the Parquet skip path) before that PR is marked ready for review.
What it does
Pins every arrow-rs 60.0.0 crate in the workspace to the
lazy-dict-skipbranch (revf18aaab) via[patch.crates-io]. No DataFusion code changes. The branch is arrow-rsmainplus #11168, at the same 60.0.0 version DataFusion already depends on, so the diff againstmainis exactly the parquet change.Why an end-to-end run
The arrow-rs side already ran
arrow_reader_clickbenchon CI: Q20 and Q21 (selectiveURL LIKEfilters, so heavily skip-driven) were 20 to 23 percent faster, everything else within noise. That benchmark drives the Parquet reader directly. This run checks the same change through DataFusion's own scan path, includingpushdown_filtersand the predicate cache, which is where the skip-heavy access pattern actually comes from in a real engine.The change only affects column chunks that a scan skips into before it reads them: whole-chunk skips no longer decompress the dictionary at all, partial skips pay it on the first data page that needs it, and a plain sequential read is untouched.
Tracking
skip_recordseagerly decompresses dictionary pages for column chunks it never decodes arrow-rs#11154