Repository navigation
[DO NOT MERGE] Benchmark arrow-rs #12126 - #27249
Rich-T-kid wants to merge 2 commits into
Conversation
|
run benchmark tpch tpcds clickbench_partitioned env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d" |
|
Reopening this exact dependency-only branch as a regular PR so the hosted benchmark service can process the trigger. |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"Results will be posted here when complete File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: Comparing 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark tpch
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"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 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark tpcds
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"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 1293f9c (1293f9c) to 0b062c8 diff Run configurationrun benchmark clickbench_partitioned
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "0b062c85157df1ecc618582decea1346d60db6b0"
changed:
ref: "1293f9c59bc340cfbd91787ea6ab101698e20d1d"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 |
…6826) ## Which issue does this PR close? Closes apache#26812. ## Rationale for this change Dictionary batches often share one values array while only their keys change. Partial aggregation was rehashing the same dictionary values for every batch. ## What changes are included in this PR? The non-streaming group table now caches dictionary value hashes while the values `Arc` is unchanged. A single dictionary group key can also map known keys directly to group indices. ```text Dictionary batch | v single dictionary column + complete cached mapping? | yes | no v v keys -> cached group IDs per-column hashing | | eligible dictionary fallback | | cached value hashes hash column | | scatter through keys -----+ | v hash/equality group lookup ``` New keys, changed or oversized dictionaries, and partial emission use the normal fallback. Multi-column hashing keeps the same semantics as `create_hashes`. The benchmark fixtures are split into apache#27246. ## What is the testing strategy for this PR? Unit tests cover cached and uncached hash consistency, unseen keys, changed dictionaries, null groups, partial emission, and forced collisions. Hosted cases from apache#27246 show [alternating dictionary-only](apache#26826 (comment)) 1.30× faster; [alternating dictionary + Int32](apache#26826 (comment)) and [fresh dictionaries](apache#26826 (comment)) flat; and [shared dictionary + Int32](apache#26826 (comment)) 1.14× faster at 32K values and 1.28× at 100K. Exact-head hosted suites with RLE dictionary reads enabled on both sides: - [TPC-H](apache#27249 (comment)): 796.01 → 799.79 ms (0.5% higher). - [TPC-DS](apache#27249 (comment)): 9.02 → 8.88 s (1.6% lower). - [ClickBench](apache#27249 (comment)): 38.26 → 38.16 s (0.3% lower). ## Are there any user-facing changes? No. --------- Co-authored-by: Jay Zhan <[email protected]>
Which issue does this PR close?
Rationale for this change
Benchmark the DataFusion impact of preserving the requested dictionary value type in Arrow.
What changes are included in this PR?
The first commit pins Arrow to the PR parent (
62a3c43f); the tip pins Arrow to the PR head (83ae72c6). There are no DataFusion runtime changes.What is the testing strategy for this PR?
Exact-head hosted suites with RLE dictionary reads enabled on both sides:
Are there any user-facing changes?
No.