Repository navigation
[DO NOT MERGE] Benchmark RLE dictionary reads by default - #27252
Rich-T-kid wants to merge 2 commits into
Conversation
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpch
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpch
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Next benchmark phaseThe completed results above are the RLE dictionary reads off → on comparison. Next I will add one commit on top that pins Arrow/Parquet to the current
This keeps RLE enabled on both sides and isolates the progress from Arrow main. The first commit and its off/on results remain unchanged for the later comparison. |
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark tpch
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark tpch
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to 036f737 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Arrow main comparisonRLE dictionary reads are enabled on both sides. Released Arrow (
The ClickBench gain is concentrated in Q33/Q34, followed by Q13, Q5, Q12, and Q14. It is real progress, but does not remove the original RLE-on regression. Chaining the paired ratios from the earlier RLE off -> on run with this released Arrow -> live main run gives the directional residual versus RLE off:
The direct commit-to-commit deltas above are the primary result; the chained figures are directional because they combine two separate hosted runs. |
Benchmark phase: views disabled, released ArrowThe earlier runs used the default This round repeats the original RLE off -> on comparison on released Arrow with
Only the RLE default differs between the two refs. The view setting and memory limit are identical. After this completes, a separate clearly labeled round will repeat RLE off -> on on live Arrow main. |
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 036f737 (036f737) to b8534c7 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
ref: "036f7377e2bb1c1919e42713996f420736a0937f"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Released Arrow result; next: live Arrow with views disabledWith
This is distinct from the earlier default-view run. Disabling views makes TPCH much closer, makes dictionaries clearly faster on TPCDS, and reduces—but does not remove—the ClickBench regression. Next round: live Arrow main at |
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true" |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpch — base (merge-base)
tpch — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usagetpcds — base (merge-base)
tpcds — branch
File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing fa57639 (fa57639) to fa57639 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "false"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
ref: "fa57639f4d548947bc6b5e40aaff6bd63dd0ea03"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"CPU Details (lscpu)Details
Memory Pool PeaksPeak Base:
Pool accounting vs. process RSS Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Final comparison:
|
| Suite | Released Arrow | Live Arrow main | Progress |
|---|---|---|---|
| TPCH | +1.74% |
-1.44% |
-3.18 pp |
| TPCDS | -8.39% |
-10.75% |
-2.36 pp |
| ClickBench partitioned | +84.77% |
+73.58% |
-11.19 pp |
Live Arrow makes dictionaries faster overall on TPCH and improves the existing TPCDS win. For ClickBench it removes about 13.2% of the dictionary overhead, but the remaining +73.58% regression is still large.
The ClickBench progress is concentrated in Q34, Q33, Q12, Q13, Q5, and Q14. Q22 remains about +150%, and Q23 moves from about +142% to +146%, so Q22/Q23 remain the clearest bottlenecks.
For context, disabling views on released Arrow changes the earlier RLE deltas from +8.69% / +0.38% / +109.52% to +1.74% / -8.39% / +84.77% for TPCH/TPCDS/ClickBench. That confirms Utf8View is a materially stronger baseline than plain Utf8.
Which issue does this PR close?
N/A. Benchmark-only PR.
What changes are included in this PR?
Flip the enable_rle_to_dictionary default from false to true.
What is the testing strategy for this PR?
Compare upstream main (RLE dictionary reads off) with this one-line change (on) using hosted TPC-H, TPC-DS, and ClickBench.
Are there any user-facing changes?
No; this PR is not intended to merge.