Skip to content

feat(optimizer): preserve profitable Parquet dictionaries for aggregation - #26789

Draft
Rich-T-kid wants to merge 5 commits into
apache:mainfrom
Rich-T-kid:rich-T-kid/wip-cost-based-parquet-dictionary
Draft

Rich-T-kid wants to merge 5 commits into
apache:mainfrom
Rich-T-kid:rich-T-kid/wip-cost-based-parquet-dictionary

Conversation

@Rich-T-kid

@Rich-T-kid Rich-T-kid commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Part of #24117.

This adds a default-off physical optimizer rule that preserves profitable Parquet string dictionaries through aggregation:

SET datafusion.optimizer.enable_dictionary_aggregation = true;

Before:

Parquet dictionary pages
        |
        v
scan: Utf8View
        |
        v
repartition / aggregate: Utf8View
        |
        v
output: Utf8View

After, when the cost and safety checks pass:

Parquet dictionary pages
        |
        v
scan: Dictionary<Int32, Utf8>
        |
        v
repartition / aggregate: Dictionary<Int32, Utf8>
        |
        v
cast after the final aggregate
        |
        v
output: Utf8View

The rule fails closed. It requires Parquet footer metadata proving that every data page is dictionary encoded, native Utf8 dictionary values, at least 16 decoded value bytes per row, a decoded-to-Parquet byte ratio of at least 4:1, and at least 8 MiB of estimated string work at the aggregate. It traces group-key payloads through projections and safe inner equijoins, and skips filtered, limited, ranged, schema-overridden, or otherwise unsupported scan paths. SQL-visible schemas do not change.

Physical encoding metadata is collected only while the option is enabled and cached with the normal file statistics. This draft temporarily pins Arrow to apache/arrow-rs#12161, which lets the Parquet reader emit the requested Dictionary<Int32, Utf8> directly instead of repairing the value type with a per-batch cast.

Benchmarks

Release build, Arrow PR head eff59bb9, flag off vs on. Full TPC-H, TPC-DS, and partitioned ClickBench screens used alternating ABBA + BAAB processes and discarded the first iteration in each process. Every apparent regression above 2% was rerun as an isolated query with longer alternating runs.

Workload Flag off Flag on Change
TPC-DS Q47 128.22 ms 116.70 ms -8.98%
TPC-DS Q57 96.27 ms 88.58 ms -7.99%

No isolated regression remained above 2%:

  • Partitioned ClickBench: four screen flags; worst isolated result was Q4 at +0.43%. Q14 was +0.16% over 312 warm samples per side.
  • TPC-DS: eight screen flags; worst confirmed result was Q61 at +0.35% over 1,592 warm samples per side.
  • Parquet TPC-H: four screen flags; worst confirmed result was Q13 at +0.14% over 792 warm samples per side.

Validation

  • End-to-end Parquet regression verifies that an unannotated binary column requested as Dictionary<Int32, Utf8> is returned directly with that type.
  • Coverage includes mixed dictionary/plain pages, cache backfill and reuse, data filters, scan limits, partition-only filters, unsafe joins, projections, and output-schema restoration.
  • Full workspace all-targets clippy with avro,integration-tests,extended_tests, formatting, typos, catalog-listing tests, and focused Parquet/optimizer tests pass.

@github-actions github-actions Bot added documentation Improvements or additions to documentation optimizer Optimizer rules core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) catalog Related to the catalog crate common Related to common crate execution Related to the execution crate proto Related to proto crate datasource Changes to the datasource crate auto detected api change Auto detected API change labels Oct 27, 2026
@Rich-T-kid
Rich-T-kid force-pushed the rich-T-kid/wip-cost-based-parquet-dictionary branch from 53391c9 to f63f7dd Compare October 27, 2026 04:30
@github-actions github-actions Bot removed the proto Related to proto crate label Oct 27, 2026
@Rich-T-kid
Rich-T-kid force-pushed the rich-T-kid/wip-cost-based-parquet-dictionary branch from f63f7dd to 3a1dc8e Compare October 27, 2026 05:33
@github-actions github-actions Bot removed documentation Improvements or additions to documentation core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) catalog Related to the catalog crate common Related to common crate execution Related to the execution crate datasource Changes to the datasource crate labels Oct 27, 2026
@Rich-T-kid Rich-T-kid changed the title WIP: feat(parquet): choose dictionary encoding from plan usage and cost WIP: feat(optimizer): decode unprofitable dictionary group keys Oct 27, 2026
@github-actions github-actions Bot removed the auto detected api change Auto detected API change label Oct 27, 2026
@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_partitioned

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6443420962-3923-sbrpw 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing rich-T-kid/wip-cost-based-parquet-dictionary (3a1dc8e) to c18e5d9 (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"

Results will be posted here when complete


File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Status
#6443420962 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] running

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing rich-T-kid/wip-cost-based-parquet-dictionary (3a1dc8e) to c18e5d9 (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     1.14 ms │                                      1.15 ms │     no change │
│ QQuery 1  │    11.53 ms │                                     11.13 ms │     no change │
│ QQuery 2  │    36.39 ms │                                     35.60 ms │     no change │
│ QQuery 3  │    31.60 ms │                                     30.71 ms │     no change │
│ QQuery 4  │   233.88 ms │                                    232.76 ms │     no change │
│ QQuery 5  │  1485.47 ms │                                    579.28 ms │ +2.56x faster │
│ QQuery 6  │     1.19 ms │                                      1.21 ms │     no change │
│ QQuery 7  │    12.64 ms │                                     12.24 ms │     no change │
│ QQuery 8  │   338.93 ms │                                    330.01 ms │     no change │
│ QQuery 9  │   480.34 ms │                                    464.63 ms │     no change │
│ QQuery 10 │   199.59 ms │                                    204.41 ms │     no change │
│ QQuery 11 │   209.91 ms │                                    215.26 ms │     no change │
│ QQuery 12 │  1529.28 ms │                                    536.81 ms │ +2.85x faster │
│ QQuery 13 │  2739.29 ms │                                    727.81 ms │ +3.76x faster │
│ QQuery 14 │  1641.04 ms │                                    569.94 ms │ +2.88x faster │
│ QQuery 15 │   294.45 ms │                                    285.12 ms │     no change │
│ QQuery 16 │  3505.95 ms │                                   1010.94 ms │ +3.47x faster │
│ QQuery 17 │  3685.17 ms │                                    939.19 ms │ +3.92x faster │
│ QQuery 18 │  7170.24 ms │                                   1670.62 ms │ +4.29x faster │
│ QQuery 19 │    27.03 ms │                                     26.48 ms │     no change │
│ QQuery 20 │  1047.17 ms │                                   1033.10 ms │     no change │
│ QQuery 21 │  1357.54 ms │                                   1346.44 ms │     no change │
│ QQuery 22 │  3187.66 ms │                                   3182.12 ms │     no change │
│ QQuery 23 │  9246.83 ms │                                   9038.19 ms │     no change │
│ QQuery 24 │    96.18 ms │                                     94.10 ms │     no change │
│ QQuery 25 │   352.27 ms │                                    349.14 ms │     no change │
│ QQuery 26 │    96.82 ms │                                     95.13 ms │     no change │
│ QQuery 27 │  1125.73 ms │                                   1120.75 ms │     no change │
│ QQuery 28 │  2770.39 ms │                                   2728.31 ms │     no change │
│ QQuery 29 │    39.03 ms │                                     38.85 ms │     no change │
│ QQuery 30 │   541.88 ms │                                    539.98 ms │     no change │
│ QQuery 31 │   526.53 ms │                                    534.51 ms │     no change │
│ QQuery 32 │   974.75 ms │                                    979.65 ms │     no change │
│ QQuery 33 │ 13281.24 ms │                                   2460.95 ms │ +5.40x faster │
│ QQuery 34 │ 13054.69 ms │                                   2535.92 ms │ +5.15x faster │
│ QQuery 35 │   294.65 ms │                                    294.07 ms │     no change │
│ QQuery 36 │   166.22 ms │                                    108.22 ms │ +1.54x faster │
│ QQuery 37 │    95.92 ms │                                     95.87 ms │     no change │
│ QQuery 38 │    80.39 ms │                                     76.87 ms │     no change │
│ QQuery 39 │   379.20 ms │                                    293.01 ms │ +1.29x faster │
│ QQuery 40 │    13.50 ms │                                     14.35 ms │  1.06x slower │
│ QQuery 41 │    13.14 ms │                                     13.11 ms │     no change │
│ QQuery 42 │    12.77 ms │                                     12.85 ms │     no change │
└───────────┴─────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 72389.54ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 34870.79ms │
│ Average Time (HEAD)                                         │  1683.48ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   810.95ms │
│ Queries Faster                                              │         11 │
│ Queries Slower                                              │          1 │
│ Queries with No Change                                      │         31 │
│ Queries with Failure                                        │          0 │
└─────────────────────────────────────────────────────────────┴────────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                      HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │              1.14 / 4.20 ±5.98 / 16.15 ms │                 1.15 / 4.13 ±5.88 / 15.88 ms │     no change │
│ QQuery 1  │            11.53 / 11.67 ±0.08 / 11.77 ms │               11.13 / 11.40 ±0.22 / 11.69 ms │     no change │
│ QQuery 2  │            36.39 / 37.15 ±0.75 / 38.43 ms │               35.60 / 35.98 ±0.36 / 36.66 ms │     no change │
│ QQuery 3  │            31.60 / 32.39 ±1.03 / 34.41 ms │               30.71 / 31.08 ±0.24 / 31.37 ms │     no change │
│ QQuery 4  │         233.88 / 239.62 ±3.89 / 244.88 ms │            232.76 / 236.27 ±2.54 / 239.43 ms │     no change │
│ QQuery 5  │     1485.47 / 1520.39 ±34.87 / 1587.18 ms │            579.28 / 583.89 ±3.35 / 588.26 ms │ +2.60x faster │
│ QQuery 6  │               1.19 / 1.34 ±0.22 / 1.78 ms │                  1.21 / 1.37 ±0.24 / 1.85 ms │     no change │
│ QQuery 7  │            12.64 / 15.41 ±5.10 / 25.60 ms │               12.24 / 12.31 ±0.07 / 12.43 ms │ +1.25x faster │
│ QQuery 8  │         338.93 / 344.12 ±7.03 / 357.52 ms │            330.01 / 338.08 ±8.53 / 353.93 ms │     no change │
│ QQuery 9  │        480.34 / 493.52 ±11.72 / 511.13 ms │            464.63 / 472.11 ±8.67 / 488.34 ms │     no change │
│ QQuery 10 │         199.59 / 200.76 ±0.82 / 201.94 ms │            204.41 / 208.76 ±4.60 / 214.59 ms │     no change │
│ QQuery 11 │         209.91 / 211.34 ±1.25 / 213.54 ms │            215.26 / 216.11 ±0.82 / 217.55 ms │     no change │
│ QQuery 12 │     1529.28 / 1575.98 ±56.36 / 1681.65 ms │            536.81 / 541.62 ±5.43 / 551.17 ms │ +2.91x faster │
│ QQuery 13 │    2739.29 / 2906.60 ±142.18 / 3131.28 ms │           727.81 / 745.83 ±15.67 / 770.98 ms │ +3.90x faster │
│ QQuery 14 │     1641.04 / 1686.46 ±40.20 / 1742.03 ms │            569.94 / 576.99 ±5.43 / 584.30 ms │ +2.92x faster │
│ QQuery 15 │         294.45 / 299.53 ±4.81 / 307.78 ms │           285.12 / 297.69 ±11.80 / 312.15 ms │     no change │
│ QQuery 16 │    3505.95 / 3708.23 ±107.97 / 3806.75 ms │         1010.94 / 1026.17 ±8.88 / 1035.50 ms │ +3.61x faster │
│ QQuery 17 │     3685.17 / 3768.10 ±69.60 / 3845.28 ms │          939.19 / 962.67 ±27.33 / 1015.81 ms │ +3.91x faster │
│ QQuery 18 │     7170.24 / 7204.64 ±27.59 / 7252.38 ms │        1670.62 / 1700.41 ±18.14 / 1724.53 ms │ +4.24x faster │
│ QQuery 19 │            27.03 / 27.43 ±0.36 / 28.08 ms │               26.48 / 27.63 ±0.97 / 29.15 ms │     no change │
│ QQuery 20 │      1047.17 / 1052.66 ±9.07 / 1070.74 ms │         1033.10 / 1043.89 ±8.49 / 1054.49 ms │     no change │
│ QQuery 21 │     1357.54 / 1368.17 ±12.79 / 1391.95 ms │         1346.44 / 1355.65 ±9.06 / 1372.32 ms │     no change │
│ QQuery 22 │     3187.66 / 3216.44 ±25.10 / 3260.69 ms │        3182.12 / 3214.31 ±25.79 / 3254.74 ms │     no change │
│ QQuery 23 │    9246.83 / 9375.51 ±133.10 / 9539.24 ms │       9038.19 / 9255.05 ±124.96 / 9423.96 ms │     no change │
│ QQuery 24 │           96.18 / 97.99 ±2.31 / 102.51 ms │            94.10 / 113.42 ±23.09 / 149.65 ms │  1.16x slower │
│ QQuery 25 │         352.27 / 356.56 ±3.18 / 361.83 ms │           349.14 / 371.37 ±40.12 / 451.55 ms │     no change │
│ QQuery 26 │           96.82 / 98.79 ±3.19 / 105.15 ms │               95.13 / 96.32 ±0.77 / 97.22 ms │     no change │
│ QQuery 27 │     1125.73 / 1143.53 ±12.55 / 1159.05 ms │        1120.75 / 1140.33 ±13.32 / 1158.41 ms │     no change │
│ QQuery 28 │     2770.39 / 2798.88 ±19.80 / 2829.41 ms │        2728.31 / 2788.69 ±30.44 / 2807.89 ms │     no change │
│ QQuery 29 │           39.03 / 47.60 ±16.12 / 79.83 ms │              38.85 / 44.13 ±10.04 / 64.21 ms │ +1.08x faster │
│ QQuery 30 │         541.88 / 549.23 ±7.96 / 562.63 ms │            539.98 / 547.54 ±4.32 / 552.03 ms │     no change │
│ QQuery 31 │        526.53 / 550.50 ±20.65 / 576.22 ms │            534.51 / 540.86 ±8.50 / 557.43 ms │     no change │
│ QQuery 32 │      974.75 / 1026.10 ±57.69 / 1135.23 ms │         979.65 / 1030.82 ±30.75 / 1065.58 ms │     no change │
│ QQuery 33 │ 13281.24 / 14067.76 ±425.28 / 14569.70 ms │        2460.95 / 2559.26 ±85.44 / 2680.15 ms │ +5.50x faster │
│ QQuery 34 │ 13054.69 / 13990.48 ±499.91 / 14506.04 ms │        2535.92 / 2614.25 ±49.08 / 2678.33 ms │ +5.35x faster │
│ QQuery 35 │        294.65 / 340.86 ±55.39 / 426.69 ms │           294.07 / 320.74 ±41.89 / 403.85 ms │ +1.06x faster │
│ QQuery 36 │        166.22 / 180.54 ±10.57 / 193.12 ms │           108.22 / 126.49 ±11.63 / 144.36 ms │ +1.43x faster │
│ QQuery 37 │           95.92 / 99.12 ±2.72 / 103.21 ms │            95.87 / 107.89 ±11.91 / 129.88 ms │  1.09x slower │
│ QQuery 38 │            80.39 / 82.37 ±2.49 / 86.84 ms │               76.87 / 79.38 ±2.03 / 82.71 ms │     no change │
│ QQuery 39 │        379.20 / 402.24 ±11.84 / 411.99 ms │            293.01 / 308.75 ±9.65 / 318.39 ms │ +1.30x faster │
│ QQuery 40 │            13.50 / 14.05 ±0.64 / 15.26 ms │               14.35 / 16.76 ±2.91 / 21.74 ms │  1.19x slower │
│ QQuery 41 │            13.14 / 13.45 ±0.22 / 13.68 ms │               13.11 / 13.32 ±0.21 / 13.73 ms │     no change │
│ QQuery 42 │            12.77 / 13.68 ±1.60 / 16.88 ms │               12.85 / 13.20 ±0.29 / 13.68 ms │     no change │
└───────────┴───────────────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 75175.37ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 35732.90ms │
│ Average Time (HEAD)                                         │  1748.26ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   831.00ms │
│ Queries Faster                                              │         14 │
│ Queries Slower                                              │          3 │
│ Queries with No Change                                      │         26 │
│ Queries with Failure                                        │          0 │
└─────────────────────────────────────────────────────────────┴────────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: c18e5d9 (merge-base) | Changed: rich-T-kid/wip-cost-based-parquet-dictionary

clickbench_partitioned

Query Base Changed Change
Query 0 0 B 0 B 0.0%
Query 1 104 B 104 B +0.0%
Query 2 936 B 936 B +0.0%
Query 3 312 B 312 B +0.0%
Query 4 827.2 MiB 811.1 MiB -1.9%
Query 5 1.4 GiB 1.2 GiB -14.7%
Query 6 0 B 0 B 0.0%
Query 7 50.3 MiB 50.3 MiB +0.2%
Query 8 990.7 MiB 946.8 MiB -4.4%
Query 9 593.9 MiB 594.0 MiB +0.0%
Query 10 74.5 MiB 73.8 MiB -0.9%
Query 11 74.2 MiB 76.6 MiB +3.3%
Query 12 1.6 GiB 1.5 GiB -6.2%
Query 13 2.0 GiB 1.6 GiB -19.1%
Query 14 1.9 GiB 1.5 GiB -21.8%
Query 15 1.2 GiB 1.2 GiB +0.9%
Query 16 3.5 GiB 3.2 GiB -8.1%
Query 17 3.4 GiB 3.2 GiB -6.1%
Query 18 7.1 GiB 6.9 GiB -4.0%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 1.4 MiB 1.8 MiB +26.2%
Query 22 2.2 MiB 2.1 MiB -3.9%
Query 23 12.8 MiB 12.8 MiB +0.1%
Query 24 5.9 MiB 6.7 MiB +13.4%
Query 25 7.6 MiB 7.6 MiB -0.3%
Query 26 8.0 MiB 8.0 MiB +0.1%
Query 27 2.7 MiB 2.5 MiB -6.9%
Query 28 2.0 GiB 1.9 GiB -5.3%
Query 29 624 B 624 B +0.0%
Query 30 677.6 MiB 673.4 MiB -0.6%
Query 31 1.5 GiB 1.5 GiB -0.0%
Query 32 7.1 GiB 7.2 GiB +0.4%
Query 33 12.7 GiB 9.3 GiB -26.9%
Query 34 12.4 GiB 9.9 GiB -20.1%
Query 35 669.9 MiB 670.6 MiB +0.1%
Query 36 474.1 MiB 91.2 MiB -80.8%
Query 37 8.1 MiB 6.4 MiB -20.5%
Query 38 5.3 MiB 6.2 MiB +18.1%
Query 39 450.8 MiB 315.3 MiB -30.1%
Query 40 2.5 MiB 2.5 MiB +0.7%
Query 41 3.1 MiB 3.1 MiB -0.0%
Query 42 1.7 MiB 1.7 MiB +0.3%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
clickbench_partitioned base (c18e5d9 (merge-base)) 12.7 GiB 12.7 GiB −68.3 MiB 1.0×
clickbench_partitioned changed (rich-T-kid/wip-cost-based-parquet-dictionary) 9.9 GiB 12.8 GiB 2.9 GiB 1.3×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 380.1s
Peak memory 12.7 GiB
Avg memory 5.8 GiB
CPU user 3287.9s
CPU sys 193.9s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 180.1s
Peak memory 12.8 GiB
Avg memory 5.1 GiB
CPU user 1842.2s
CPU sys 115.5s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch tpcds wide_schema

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Status
#6444070385 apache/datafusion #26789 Rich-T-kid ["tpch"] running
#6444070385 apache/datafusion #26789 Rich-T-kid ["tpcds"] running
#6444070385 apache/datafusion #26789 Rich-T-kid ["wide_schema"] running

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

Exhaustive TPC-H dictionary selection validation

This run is not comparing a different Arrow revision, the global RLE dictionary-read default, or unrelated PR code against main. Both sides use the exact same rebased PR SHA and have DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY=false; only datafusion.optimizer.enable_dictionary_preservation changes.

The column-by-column TPC-H sweep selected only these paths:

  • Q1: l_returnflag, l_linestatus
  • Q16: p_type
  • Q19: l_shipinstruct, l_shipmode

Every other tested string column remains Utf8View. The purpose of this hosted run is to confirm the intended Q1/Q16/Q19 wins and expose any slowdown elsewhere in the full TPC-H suite. A query outside those three should have the same physical plan on both sides.

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch

env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: arm64

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6859110975 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6860133524 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6860132596 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6861087719 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6861095878 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] default running
#6861098038 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] default running
#6861100496 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 running
#6861102908 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 running
#6861106692 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending
#6861119286 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending
#6861229644 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6861400837 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6861402519 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6861401682 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default pending
#6861404095 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default pending
#6861403233 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default pending
#6861655505 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6861775944 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6861852300 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6861775944-5008-wmrl2 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing f7f780a (f7f780a) to f7f780a diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing f7f780a (f7f780a) to f7f780a diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "f7f780a700375bf0f5d944cdd74a96062a7f3462"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 41.49 ms │                                     40.06 ms │     no change │
│ QQuery 2  │ 18.92 ms │                                     18.88 ms │     no change │
│ QQuery 3  │ 29.55 ms │                                     29.25 ms │     no change │
│ QQuery 4  │ 18.06 ms │                                     18.00 ms │     no change │
│ QQuery 5  │ 36.63 ms │                                     36.74 ms │     no change │
│ QQuery 6  │ 14.02 ms │                                     14.08 ms │     no change │
│ QQuery 7  │ 42.38 ms │                                     43.05 ms │     no change │
│ QQuery 8  │ 41.85 ms │                                     41.62 ms │     no change │
│ QQuery 9  │ 50.70 ms │                                     49.53 ms │     no change │
│ QQuery 10 │ 41.98 ms │                                     41.68 ms │     no change │
│ QQuery 11 │ 14.11 ms │                                     14.19 ms │     no change │
│ QQuery 12 │ 18.48 ms │                                     18.06 ms │     no change │
│ QQuery 13 │ 43.51 ms │                                     42.48 ms │     no change │
│ QQuery 14 │ 24.96 ms │                                     24.58 ms │     no change │
│ QQuery 15 │ 32.42 ms │                                     31.94 ms │     no change │
│ QQuery 16 │ 13.92 ms │                                     14.21 ms │     no change │
│ QQuery 17 │ 73.27 ms │                                     74.23 ms │     no change │
│ QQuery 18 │ 41.82 ms │                                     42.96 ms │     no change │
│ QQuery 19 │ 32.79 ms │                                     30.47 ms │ +1.08x faster │
│ QQuery 20 │ 33.07 ms │                                     33.28 ms │     no change │
│ QQuery 21 │ 58.56 ms │                                     59.03 ms │     no change │
│ QQuery 22 │ 14.54 ms │                                     14.54 ms │     no change │
└───────────┴──────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 737.04ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 732.85ms │
│ Average Time (HEAD)                                         │  33.50ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  33.31ms │
│ Queries Faster                                              │        1 │
│ Queries Slower                                              │        0 │
│ Queries with No Change                                      │       21 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 41.49 / 42.32 ±1.02 / 44.30 ms │               40.06 / 41.25 ±1.34 / 43.32 ms │     no change │
│ QQuery 2  │ 18.92 / 19.32 ±0.27 / 19.73 ms │               18.88 / 19.13 ±0.20 / 19.41 ms │     no change │
│ QQuery 3  │ 29.55 / 29.67 ±0.10 / 29.85 ms │               29.25 / 29.43 ±0.14 / 29.60 ms │     no change │
│ QQuery 4  │ 18.06 / 18.46 ±0.58 / 19.59 ms │               18.00 / 18.84 ±0.63 / 19.65 ms │     no change │
│ QQuery 5  │ 36.63 / 36.84 ±0.23 / 37.23 ms │               36.74 / 37.59 ±1.07 / 39.65 ms │     no change │
│ QQuery 6  │ 14.02 / 14.54 ±0.74 / 15.99 ms │               14.08 / 14.16 ±0.07 / 14.25 ms │     no change │
│ QQuery 7  │ 42.38 / 44.76 ±2.31 / 48.88 ms │               43.05 / 44.15 ±0.73 / 45.16 ms │     no change │
│ QQuery 8  │ 41.85 / 42.54 ±0.73 / 43.96 ms │               41.62 / 42.82 ±1.08 / 44.14 ms │     no change │
│ QQuery 9  │ 50.70 / 51.40 ±0.49 / 52.22 ms │               49.53 / 51.57 ±1.52 / 53.79 ms │     no change │
│ QQuery 10 │ 41.98 / 42.54 ±0.49 / 43.41 ms │               41.68 / 42.45 ±0.83 / 44.02 ms │     no change │
│ QQuery 11 │ 14.11 / 14.28 ±0.16 / 14.58 ms │               14.19 / 14.34 ±0.09 / 14.45 ms │     no change │
│ QQuery 12 │ 18.48 / 18.65 ±0.20 / 19.02 ms │               18.06 / 18.73 ±0.46 / 19.40 ms │     no change │
│ QQuery 13 │ 43.51 / 44.90 ±1.55 / 47.39 ms │               42.48 / 43.76 ±1.45 / 46.28 ms │     no change │
│ QQuery 14 │ 24.96 / 25.07 ±0.06 / 25.14 ms │               24.58 / 24.91 ±0.19 / 25.17 ms │     no change │
│ QQuery 15 │ 32.42 / 33.14 ±0.90 / 34.88 ms │               31.94 / 32.44 ±0.40 / 32.99 ms │     no change │
│ QQuery 16 │ 13.92 / 14.24 ±0.40 / 15.00 ms │               14.21 / 14.47 ±0.15 / 14.66 ms │     no change │
│ QQuery 17 │ 73.27 / 73.99 ±0.73 / 75.18 ms │               74.23 / 74.54 ±0.28 / 74.96 ms │     no change │
│ QQuery 18 │ 41.82 / 43.31 ±1.47 / 45.68 ms │               42.96 / 44.19 ±1.37 / 46.85 ms │     no change │
│ QQuery 19 │ 32.79 / 32.92 ±0.13 / 33.17 ms │               30.47 / 30.61 ±0.10 / 30.76 ms │ +1.08x faster │
│ QQuery 20 │ 33.07 / 33.19 ±0.10 / 33.33 ms │               33.28 / 33.47 ±0.19 / 33.77 ms │     no change │
│ QQuery 21 │ 58.56 / 60.03 ±1.34 / 61.69 ms │               59.03 / 60.46 ±1.60 / 63.57 ms │     no change │
│ QQuery 22 │ 14.54 / 14.59 ±0.06 / 14.71 ms │               14.54 / 14.91 ±0.73 / 16.37 ms │     no change │
└───────────┴────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 750.71ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 748.23ms │
│ Average Time (HEAD)                                         │  34.12ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  34.01ms │
│ Queries Faster                                              │        1 │
│ Queries Slower                                              │        0 │
│ Queries with No Change                                      │       21 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: f7f780a700375bf0f5d944cdd74a96062a7f3462 | Changed: f7f780a700375bf0f5d944cdd74a96062a7f3462

tpch — tpch_sf1

Query Base Changed Change
Query 1 30.0 MiB 40.1 MiB +33.7%
Query 2 15.9 MiB 15.9 MiB +0.0%
Query 3 10.9 MiB 10.6 MiB -2.3%
Query 4 32.7 MiB 33.0 MiB +0.9%
Query 5 43.5 MiB 43.4 MiB -0.1%
Query 6 832 B 832 B +0.0%
Query 7 105.5 MiB 105.5 MiB +0.0%
Query 8 39.8 MiB 39.8 MiB -0.0%
Query 9 140.4 MiB 157.5 MiB +12.1%
Query 10 38.7 MiB 38.6 MiB -0.2%
Query 11 71.7 MiB 51.3 MiB -28.4%
Query 12 22.7 MiB 22.6 MiB -0.1%
Query 13 72.5 MiB 82.3 MiB +13.6%
Query 14 6.7 MiB 6.7 MiB +0.0%
Query 15 11.9 MiB 12.1 MiB +1.7%
Query 16 44.6 MiB 43.6 MiB -2.2%
Query 17 150.3 MiB 150.3 MiB +0.0%
Query 18 167.1 MiB 167.1 MiB +0.0%
Query 19 725.7 KiB 725.7 KiB +0.0%
Query 20 58.3 MiB 60.2 MiB +3.4%
Query 21 42.2 MiB 42.0 MiB -0.5%
Query 22 32.9 MiB 32.9 MiB +0.0%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpch base (f7f780a700375bf0f5d944cdd74a96062a7f3462) 167.1 MiB 1.3 GiB 1.1 GiB 7.7×
tpch changed (f7f780a700375bf0f5d944cdd74a96062a7f3462) 167.1 MiB 1.2 GiB 1.0 GiB 7.1×
Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.3 GiB
Avg memory 501.6 MiB
CPU user 20.4s
CPU sys 1.8s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 489.0 MiB
CPU user 20.2s
CPU sys 1.9s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

The first same-SHA TPC-H run showed the intended wins in Q1 and Q19, but Q16 moved in the wrong direction under the stricter zero-regression gate:

  • Q1: 41.49 -> 40.06 ms minimum (-3.45%)
  • Q16: 13.92 -> 14.21 ms minimum (+2.08%)
  • Q19: 32.79 -> 30.47 ms minimum (-7.08%)

Commit c37a2aa removes the Q16-specific filtered grouping path while retaining the Q1 source-filtered grouping path and Q19 equality/IN filter-only path. It also adds negative coverage for the exact Q16 NOT LIKE shape at catalog selection and physical optimization.

A fresh Q1-Q22 plan audit with RLE dictionary reads disabled now has only Q1 visibly changing. Q16 and the other 20 queries are byte-identical with the optimizer off; Q19 remains textually identical because its dictionary representation is internal to the scan/filter boundary.

The next benchmark compares this exact SHA against itself with only DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION toggled.

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch

env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: arm64

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6862821451-5013-w6nsz 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 42.22 ms │                                     39.85 ms │ +1.06x faster │
│ QQuery 2  │ 18.93 ms │                                     18.77 ms │     no change │
│ QQuery 3  │ 28.88 ms │                                     28.86 ms │     no change │
│ QQuery 4  │ 17.88 ms │                                     18.07 ms │     no change │
│ QQuery 5  │ 35.84 ms │                                     35.88 ms │     no change │
│ QQuery 6  │ 13.89 ms │                                     13.93 ms │     no change │
│ QQuery 7  │ 41.71 ms │                                     43.03 ms │     no change │
│ QQuery 8  │ 40.55 ms │                                     40.60 ms │     no change │
│ QQuery 9  │ 50.13 ms │                                     49.95 ms │     no change │
│ QQuery 10 │ 41.08 ms │                                     40.83 ms │     no change │
│ QQuery 11 │ 13.93 ms │                                     14.04 ms │     no change │
│ QQuery 12 │ 18.15 ms │                                     18.07 ms │     no change │
│ QQuery 13 │ 41.20 ms │                                     41.48 ms │     no change │
│ QQuery 14 │ 24.47 ms │                                     24.49 ms │     no change │
│ QQuery 15 │ 32.09 ms │                                     31.50 ms │     no change │
│ QQuery 16 │ 13.82 ms │                                     13.89 ms │     no change │
│ QQuery 17 │ 71.30 ms │                                     71.91 ms │     no change │
│ QQuery 18 │ 40.94 ms │                                     41.67 ms │     no change │
│ QQuery 19 │ 32.08 ms │                                     29.91 ms │ +1.07x faster │
│ QQuery 20 │ 32.37 ms │                                     32.19 ms │     no change │
│ QQuery 21 │ 56.76 ms │                                     57.48 ms │     no change │
│ QQuery 22 │ 14.17 ms │                                     14.09 ms │     no change │
└───────────┴──────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 722.40ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 720.50ms │
│ Average Time (HEAD)                                         │  32.84ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  32.75ms │
│ Queries Faster                                              │        2 │
│ Queries Slower                                              │        0 │
│ Queries with No Change                                      │       20 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 42.22 / 43.09 ±0.93 / 44.55 ms │               39.85 / 40.81 ±1.15 / 42.88 ms │ +1.06x faster │
│ QQuery 2  │ 18.93 / 19.14 ±0.15 / 19.35 ms │               18.77 / 19.13 ±0.28 / 19.59 ms │     no change │
│ QQuery 3  │ 28.88 / 29.15 ±0.25 / 29.55 ms │               28.86 / 29.03 ±0.23 / 29.47 ms │     no change │
│ QQuery 4  │ 17.88 / 18.86 ±0.78 / 19.70 ms │               18.07 / 18.51 ±0.52 / 19.20 ms │     no change │
│ QQuery 5  │ 35.84 / 37.42 ±1.71 / 39.92 ms │               35.88 / 37.36 ±1.48 / 39.54 ms │     no change │
│ QQuery 6  │ 13.89 / 14.09 ±0.18 / 14.42 ms │               13.93 / 14.02 ±0.07 / 14.12 ms │     no change │
│ QQuery 7  │ 41.71 / 43.48 ±1.44 / 45.50 ms │               43.03 / 44.13 ±0.88 / 45.58 ms │     no change │
│ QQuery 8  │ 40.55 / 41.40 ±0.98 / 43.31 ms │               40.60 / 41.01 ±0.34 / 41.62 ms │     no change │
│ QQuery 9  │ 50.13 / 50.52 ±0.38 / 51.08 ms │               49.95 / 51.11 ±1.19 / 53.36 ms │     no change │
│ QQuery 10 │ 41.08 / 41.28 ±0.18 / 41.56 ms │               40.83 / 42.09 ±1.39 / 43.84 ms │     no change │
│ QQuery 11 │ 13.93 / 14.05 ±0.11 / 14.25 ms │               14.04 / 14.18 ±0.11 / 14.37 ms │     no change │
│ QQuery 12 │ 18.15 / 18.82 ±0.62 / 19.73 ms │               18.07 / 18.41 ±0.24 / 18.75 ms │     no change │
│ QQuery 13 │ 41.20 / 42.16 ±1.01 / 44.12 ms │               41.48 / 42.74 ±1.05 / 44.16 ms │     no change │
│ QQuery 14 │ 24.47 / 24.70 ±0.18 / 25.01 ms │               24.49 / 24.64 ±0.10 / 24.74 ms │     no change │
│ QQuery 15 │ 32.09 / 32.88 ±0.60 / 33.78 ms │               31.50 / 31.83 ±0.21 / 32.06 ms │     no change │
│ QQuery 16 │ 13.82 / 13.95 ±0.11 / 14.14 ms │               13.89 / 14.04 ±0.18 / 14.39 ms │     no change │
│ QQuery 17 │ 71.30 / 72.78 ±1.89 / 76.07 ms │               71.91 / 72.59 ±0.54 / 73.57 ms │     no change │
│ QQuery 18 │ 40.94 / 42.55 ±2.05 / 46.59 ms │               41.67 / 42.25 ±0.39 / 42.75 ms │     no change │
│ QQuery 19 │ 32.08 / 32.58 ±0.57 / 33.58 ms │               29.91 / 30.97 ±1.63 / 34.21 ms │     no change │
│ QQuery 20 │ 32.37 / 32.76 ±0.25 / 33.10 ms │               32.19 / 32.73 ±0.33 / 33.13 ms │     no change │
│ QQuery 21 │ 56.76 / 57.72 ±0.80 / 58.82 ms │               57.48 / 58.32 ±1.23 / 60.75 ms │     no change │
│ QQuery 22 │ 14.17 / 14.34 ±0.10 / 14.49 ms │               14.09 / 14.74 ±1.07 / 16.85 ms │     no change │
└───────────┴────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 737.70ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 734.64ms │
│ Average Time (HEAD)                                         │  33.53ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  33.39ms │
│ Queries Faster                                              │        1 │
│ Queries Slower                                              │        0 │
│ Queries with No Change                                      │       21 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: c37a2aada6b21adc699c3fd6d1ddb648c130ec84 | Changed: c37a2aada6b21adc699c3fd6d1ddb648c130ec84

tpch — tpch_sf1

Query Base Changed Change
Query 1 30.0 MiB 40.1 MiB +33.7%
Query 2 15.9 MiB 15.9 MiB +0.0%
Query 3 10.6 MiB 10.6 MiB +0.0%
Query 4 33.2 MiB 33.1 MiB -0.1%
Query 5 62.9 MiB 42.7 MiB -32.1%
Query 6 832 B 832 B +0.0%
Query 7 102.7 MiB 105.9 MiB +3.2%
Query 8 32.4 MiB 39.8 MiB +23.0%
Query 9 141.3 MiB 147.8 MiB +4.5%
Query 10 38.6 MiB 38.7 MiB +0.2%
Query 11 62.1 MiB 82.1 MiB +32.2%
Query 12 16.2 MiB 22.7 MiB +40.1%
Query 13 62.3 MiB 72.5 MiB +16.2%
Query 14 6.7 MiB 6.7 MiB +0.0%
Query 15 11.9 MiB 12.0 MiB +0.9%
Query 16 54.1 MiB 64.1 MiB +18.5%
Query 17 150.3 MiB 150.3 MiB +0.0%
Query 18 167.1 MiB 167.1 MiB +0.0%
Query 19 725.7 KiB 725.7 KiB +0.0%
Query 20 58.0 MiB 58.8 MiB +1.4%
Query 21 42.0 MiB 42.2 MiB +0.5%
Query 22 23.3 MiB 32.7 MiB +40.3%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpch base (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 167.1 MiB 1.2 GiB 1.0 GiB 7.4×
tpch changed (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 167.1 MiB 1.1 GiB 1005.7 MiB 7.0×
Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 494.3 MiB
CPU user 20.1s
CPU sys 1.7s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 485.2 MiB
CPU user 19.8s
CPU sys 1.6s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

The c37a2aa same-SHA rerun passes the TPC-H timing gate with RLE dictionary reads disabled:

  • Q1: 42.22 -> 39.85 ms minimum (-5.61%); 43.09 -> 40.81 ms mean (-5.29%)
  • Q19: 32.08 -> 29.91 ms minimum (-6.76%); 32.58 -> 30.97 ms mean (-4.94%)
  • Q16 is now byte-identical with the optimizer disabled. Its residual +0.51% minimum / +0.65% mean movement is run noise rather than the removed rewrite.

The bot reports 2 faster, 0 slower, 20 unchanged, and 0 failures. Total minimum time improves 722.40 -> 720.50 ms (-0.26%); total mean improves 737.70 -> 734.64 ms (-0.41%).

The column search is exhaustive for this workload: 29 TPC-H string columns accounted for, all 23 read by Q1-Q22 tested across 52 query/column pairs. The last plausible Q19 compound was also rejected: adding p_brand or p_container to l_shipinstruct+l_shipmode regressed about 0.97% each, and adding both was unstable with essentially no pooled-median gain.

Memory caveat: Q1 again increases its MemoryPool peak from 30.0 to 40.1 MiB (+10.1 MiB), although the suite maximum remains 167.1 MiB, peak RSS falls from 1.2 to 1.1 GiB, average RSS falls from 494.3 to 485.2 MiB, and neither side spills. The PR remains draft.

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

This control isolates raw RLE dictionary reads after the Arrow dictionary-value conversion fix. Both sides use exact SHA c37a2aada6b21adc699c3fd6d1ddb648c130ec84, schema_force_view_types=true, a 32 GB memory limit, and the dictionary-preservation optimizer disabled. The only changed setting is enable_rle_to_dictionary=false versus true. This does not benchmark the physical optimizer or a PR-versus-main code diff.

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch tpcds clickbench_partitioned

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: arm64

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6861404095 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6862973147 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6862975030 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6862974025 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default running
#6862975958 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6862982499 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863053553 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6863054978 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6863195214 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default pending
#6863194417 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default pending
#6863196892 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default pending
#6863196091 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default pending
#6863197705 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default pending
#6863683497 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpcds"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] 12 CPU, 65Gi, arm64 pending
#6863871215 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6862975030 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6862975958 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6862982499 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863195214 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default running
#6863194417 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6863196892 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6863196091 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6863197705 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863683497 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpcds"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] 12 CPU, 65Gi, arm64 pending
#6863871215 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6862975958 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6862982499 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863195214 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default running
#6863194417 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6863196892 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6863196091 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6863197705 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863683497 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpcds"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] 12 CPU, 65Gi, arm64 pending
#6863871215 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6862975958 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6862982499 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863194417 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default running
#6863196892 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6863196091 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6863197705 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863683497 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpcds"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] 12 CPU, 65Gi, arm64 pending
#6863871215 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, you asked to view the benchmark queue (#26789 (comment)).

Comment Repo PR User Benchmarks Resources Status
#6862975958 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6862982499 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863196892 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default running
#6863196091 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default running
#6863197705 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default running
#6863683497 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpch"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["tpcds"] 12 CPU, 65Gi, arm64 pending
#6863756779 apache/datafusion #26789 Rich-T-kid ["clickbench_partitioned"] 12 CPU, 65Gi, arm64 pending
#6863871215 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending
#6864634857 apache/arrow-rs #11973 Rich-T-kid ["mutable_array"] default pending
#6864635663 apache/arrow-rs #11973 Rich-T-kid ["concatenate_kernel"] default pending
#6864637368 apache/arrow-rs #11973 Rich-T-kid ["take_kernels"] default pending
#6864636533 apache/arrow-rs #11973 Rich-T-kid ["interleave_kernels"] default pending
#6864639545 apache/arrow-rs #11973 Rich-T-kid ["merge_kernels"] default pending
#6864638814 apache/arrow-rs #11973 Rich-T-kid ["zip_kernels"] default pending
#6864638093 apache/arrow-rs #11973 Rich-T-kid ["filter_kernels"] default pending
#6864690518 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] default running
#6864691948 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] default running
#6864693605 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6864695620 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6864697000 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 running
#6864699158 apache/arrow-rs #12058 mbutrovich ["arithmetic_kernels"] amd64 pending
#6864709006 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] default pending
#6864710340 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] default pending
#6864713381 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending
#6864715626 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending
#6864718429 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending
#6864720043 apache/arrow-rs #12062 mbutrovich ["arithmetic_kernels"] amd64 pending

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6863756779-5042-qsn5t 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6863756779-5043-8pxnx 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6863756779-5041-v59zp 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.32 ms │                                     38.99 ms │     no change │
│ QQuery 2  │ 18.11 ms │                                     19.06 ms │  1.05x slower │
│ QQuery 3  │ 27.84 ms │                                     28.02 ms │     no change │
│ QQuery 4  │ 17.15 ms │                                     17.04 ms │     no change │
│ QQuery 5  │ 34.83 ms │                                     34.96 ms │     no change │
│ QQuery 6  │ 13.45 ms │                                     13.33 ms │     no change │
│ QQuery 7  │ 42.16 ms │                                     40.97 ms │     no change │
│ QQuery 8  │ 39.79 ms │                                     39.99 ms │     no change │
│ QQuery 9  │ 47.37 ms │                                     49.68 ms │     no change │
│ QQuery 10 │ 39.78 ms │                                     52.83 ms │  1.33x slower │
│ QQuery 11 │ 13.37 ms │                                     13.69 ms │     no change │
│ QQuery 12 │ 17.42 ms │                                     21.51 ms │  1.23x slower │
│ QQuery 13 │ 39.00 ms │                                     46.52 ms │  1.19x slower │
│ QQuery 14 │ 23.67 ms │                                     23.47 ms │     no change │
│ QQuery 15 │ 30.54 ms │                                     30.72 ms │     no change │
│ QQuery 16 │ 13.51 ms │                                     14.19 ms │  1.05x slower │
│ QQuery 17 │ 66.86 ms │                                     66.90 ms │     no change │
│ QQuery 18 │ 40.06 ms │                                     48.16 ms │  1.20x slower │
│ QQuery 19 │ 31.57 ms │                                     28.82 ms │ +1.10x faster │
│ QQuery 20 │ 31.17 ms │                                     33.50 ms │  1.07x slower │
│ QQuery 21 │ 54.68 ms │                                     52.22 ms │     no change │
│ QQuery 22 │ 13.48 ms │                                     15.71 ms │  1.17x slower │
└───────────┴──────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 696.13ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 730.29ms │
│ Average Time (HEAD)                                         │  31.64ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  33.19ms │
│ Queries Faster                                              │        1 │
│ Queries Slower                                              │        8 │
│ Queries with No Change                                      │       13 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.32 / 42.23 ±1.63 / 45.04 ms │               38.99 / 40.21 ±1.43 / 42.20 ms │     no change │
│ QQuery 2  │ 18.11 / 18.93 ±0.57 / 19.62 ms │               19.06 / 19.56 ±0.76 / 21.07 ms │     no change │
│ QQuery 3  │ 27.84 / 28.77 ±0.90 / 30.45 ms │               28.02 / 28.15 ±0.16 / 28.45 ms │     no change │
│ QQuery 4  │ 17.15 / 17.53 ±0.51 / 18.52 ms │               17.04 / 17.25 ±0.12 / 17.37 ms │     no change │
│ QQuery 5  │ 34.83 / 35.85 ±0.75 / 37.09 ms │               34.96 / 35.27 ±0.32 / 35.89 ms │     no change │
│ QQuery 6  │ 13.45 / 14.24 ±0.61 / 15.30 ms │               13.33 / 13.41 ±0.10 / 13.61 ms │ +1.06x faster │
│ QQuery 7  │ 42.16 / 43.23 ±0.56 / 43.67 ms │               40.97 / 42.53 ±1.39 / 44.82 ms │     no change │
│ QQuery 8  │ 39.79 / 40.38 ±0.54 / 41.11 ms │               39.99 / 41.00 ±1.74 / 44.46 ms │     no change │
│ QQuery 9  │ 47.37 / 49.26 ±1.35 / 51.49 ms │               49.68 / 50.81 ±1.20 / 52.64 ms │     no change │
│ QQuery 10 │ 39.78 / 40.20 ±0.70 / 41.59 ms │               52.83 / 54.91 ±1.79 / 56.94 ms │  1.37x slower │
│ QQuery 11 │ 13.37 / 13.51 ±0.12 / 13.73 ms │               13.69 / 14.75 ±1.10 / 16.62 ms │  1.09x slower │
│ QQuery 12 │ 17.42 / 18.16 ±0.66 / 19.18 ms │               21.51 / 21.63 ±0.12 / 21.79 ms │  1.19x slower │
│ QQuery 13 │ 39.00 / 40.04 ±0.91 / 41.72 ms │               46.52 / 47.04 ±0.78 / 48.58 ms │  1.17x slower │
│ QQuery 14 │ 23.67 / 23.84 ±0.16 / 24.09 ms │               23.47 / 23.62 ±0.15 / 23.90 ms │     no change │
│ QQuery 15 │ 30.54 / 31.25 ±0.67 / 32.35 ms │               30.72 / 31.36 ±0.51 / 31.91 ms │     no change │
│ QQuery 16 │ 13.51 / 13.82 ±0.20 / 14.08 ms │               14.19 / 14.30 ±0.09 / 14.45 ms │     no change │
│ QQuery 17 │ 66.86 / 67.60 ±0.64 / 68.69 ms │               66.90 / 68.01 ±0.72 / 69.14 ms │     no change │
│ QQuery 18 │ 40.06 / 40.66 ±0.52 / 41.31 ms │               48.16 / 50.92 ±1.53 / 52.59 ms │  1.25x slower │
│ QQuery 19 │ 31.57 / 33.16 ±1.00 / 34.30 ms │               28.82 / 29.10 ±0.28 / 29.62 ms │ +1.14x faster │
│ QQuery 20 │ 31.17 / 31.55 ±0.27 / 31.88 ms │               33.50 / 33.69 ±0.23 / 34.14 ms │  1.07x slower │
│ QQuery 21 │ 54.68 / 55.61 ±0.76 / 56.94 ms │               52.22 / 52.75 ±0.38 / 53.38 ms │ +1.05x faster │
│ QQuery 22 │ 13.48 / 14.08 ±1.03 / 16.13 ms │               15.71 / 15.78 ±0.05 / 15.86 ms │  1.12x slower │
└───────────┴────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 713.92ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 746.04ms │
│ Average Time (HEAD)                                         │  32.45ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │  33.91ms │
│ Queries Faster                                              │        3 │
│ Queries Slower                                              │        7 │
│ Queries with No Change                                      │       12 │
│ Queries with Failure                                        │        0 │
└─────────────────────────────────────────────────────────────┴──────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: c37a2aada6b21adc699c3fd6d1ddb648c130ec84 | Changed: c37a2aada6b21adc699c3fd6d1ddb648c130ec84

tpch — tpch_sf1

Query Base Changed Change
Query 1 31.4 MiB 30.1 MiB -4.0%
Query 2 15.9 MiB 23.1 MiB +45.5%
Query 3 10.6 MiB 10.6 MiB +0.0%
Query 4 23.4 MiB 22.2 MiB -5.2%
Query 5 62.8 MiB 42.8 MiB -31.9%
Query 6 832 B 832 B +0.0%
Query 7 103.5 MiB 106.5 MiB +2.9%
Query 8 39.8 MiB 39.8 MiB +0.0%
Query 9 141.4 MiB 142.5 MiB +0.8%
Query 10 38.6 MiB 53.3 MiB +38.1%
Query 11 41.7 MiB 41.4 MiB -0.9%
Query 12 22.6 MiB 22.5 MiB -0.5%
Query 13 52.6 MiB 62.3 MiB +18.5%
Query 14 6.7 MiB 6.7 MiB +0.0%
Query 15 11.9 MiB 13.3 MiB +11.7%
Query 16 55.0 MiB 43.8 MiB -20.3%
Query 17 150.3 MiB 150.3 MiB +0.0%
Query 18 167.1 MiB 106.6 MiB -36.2%
Query 19 725.7 KiB 212.1 KiB -70.8%
Query 20 58.1 MiB 59.0 MiB +1.6%
Query 21 42.2 MiB 35.7 MiB -15.4%
Query 22 33.0 MiB 31.8 MiB -3.6%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpch base (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 167.1 MiB 1.2 GiB 1.0 GiB 7.4×
tpch changed (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 150.3 MiB 1.1 GiB 1022.0 MiB 7.8×
Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 495.6 MiB
CPU user 19.2s
CPU sys 1.4s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 488.0 MiB
CPU user 19.6s
CPU sys 1.4s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.34 ms │                                      5.79 ms │  1.08x slower │
│ QQuery 2  │   80.36 ms │                                     77.41 ms │     no change │
│ QQuery 3  │   29.13 ms │                                     29.22 ms │     no change │
│ QQuery 4  │  457.56 ms │                                    550.97 ms │  1.20x slower │
│ QQuery 5  │   50.26 ms │                                     50.66 ms │     no change │
│ QQuery 6  │   36.07 ms │                                     33.68 ms │ +1.07x faster │
│ QQuery 7  │   72.36 ms │                                     71.70 ms │     no change │
│ QQuery 8  │   36.81 ms │                                     39.39 ms │  1.07x slower │
│ QQuery 9  │   52.61 ms │                                     51.87 ms │     no change │
│ QQuery 10 │   60.41 ms │                                     59.12 ms │     no change │
│ QQuery 11 │  288.76 ms │                                    351.86 ms │  1.22x slower │
│ QQuery 12 │   29.25 ms │                                     27.10 ms │ +1.08x faster │
│ QQuery 13 │  113.56 ms │                                    113.51 ms │     no change │
│ QQuery 14 │  379.22 ms │                                    378.76 ms │     no change │
│ QQuery 15 │   55.35 ms │                                     53.22 ms │     no change │
│ QQuery 16 │    6.09 ms │                                      6.24 ms │     no change │
│ QQuery 17 │   76.08 ms │                                     77.56 ms │     no change │
│ QQuery 18 │  104.56 ms │                                    104.54 ms │     no change │
│ QQuery 19 │   40.98 ms │                                     41.63 ms │     no change │
│ QQuery 20 │   36.11 ms │                                     32.37 ms │ +1.12x faster │
│ QQuery 21 │   17.16 ms │                                     16.94 ms │     no change │
│ QQuery 22 │   63.90 ms │                                     66.45 ms │     no change │
│ QQuery 23 │  295.55 ms │                                    294.17 ms │     no change │
│ QQuery 24 │  196.45 ms │                                    196.77 ms │     no change │
│ QQuery 25 │  104.33 ms │                                    105.19 ms │     no change │
│ QQuery 26 │   45.79 ms │                                     45.05 ms │     no change │
│ QQuery 27 │    5.10 ms │                                      5.34 ms │     no change │
│ QQuery 28 │   57.65 ms │                                     57.31 ms │     no change │
│ QQuery 29 │   91.72 ms │                                     93.65 ms │     no change │
│ QQuery 30 │   32.80 ms │                                     35.95 ms │  1.10x slower │
│ QQuery 31 │  108.48 ms │                                    108.63 ms │     no change │
│ QQuery 32 │   20.30 ms │                                     20.06 ms │     no change │
│ QQuery 33 │   37.22 ms │                                     37.16 ms │     no change │
│ QQuery 34 │    5.62 ms │                                      5.74 ms │     no change │
│ QQuery 35 │   72.36 ms │                                     70.01 ms │     no change │
│ QQuery 36 │    5.54 ms │                                      6.20 ms │  1.12x slower │
│ QQuery 37 │    6.96 ms │                                      7.85 ms │  1.13x slower │
│ QQuery 38 │   61.60 ms │                                     62.80 ms │     no change │
│ QQuery 39 │   73.89 ms │                                     71.98 ms │     no change │
│ QQuery 40 │   23.98 ms │                                     22.89 ms │     no change │
│ QQuery 41 │   13.05 ms │                                     14.60 ms │  1.12x slower │
│ QQuery 42 │   24.13 ms │                                     23.91 ms │     no change │
│ QQuery 43 │    4.61 ms │                                      4.75 ms │     no change │
│ QQuery 44 │    5.60 ms │                                      5.45 ms │     no change │
│ QQuery 45 │   37.74 ms │                                     35.76 ms │ +1.06x faster │
│ QQuery 46 │   11.97 ms │                                     11.48 ms │     no change │
│ QQuery 47 │  227.86 ms │                                    201.81 ms │ +1.13x faster │
│ QQuery 48 │   91.06 ms │                                     91.66 ms │     no change │
│ QQuery 49 │   69.76 ms │                                     69.88 ms │     no change │
│ QQuery 50 │   56.13 ms │                                     57.06 ms │     no change │
│ QQuery 51 │   92.57 ms │                                     94.79 ms │     no change │
│ QQuery 52 │   24.51 ms │                                     24.84 ms │     no change │
│ QQuery 53 │   29.44 ms │                                     30.77 ms │     no change │
│ QQuery 54 │   54.19 ms │                                     54.92 ms │     no change │
│ QQuery 55 │   23.97 ms │                                     24.16 ms │     no change │
│ QQuery 56 │   38.54 ms │                                     38.97 ms │     no change │
│ QQuery 57 │  168.25 ms │                                    153.18 ms │ +1.10x faster │
│ QQuery 58 │  108.02 ms │                                    105.27 ms │     no change │
│ QQuery 59 │  115.88 ms │                                    109.13 ms │ +1.06x faster │
│ QQuery 60 │   38.94 ms │                                     39.01 ms │     no change │
│ QQuery 61 │    9.18 ms │                                      9.55 ms │     no change │
│ QQuery 62 │   43.88 ms │                                     38.76 ms │ +1.13x faster │
│ QQuery 63 │   29.51 ms │                                     29.75 ms │     no change │
│ QQuery 64 │  353.97 ms │                                    370.74 ms │     no change │
│ QQuery 65 │   68.66 ms │                                     72.23 ms │  1.05x slower │
│ QQuery 66 │   75.31 ms │                                     74.48 ms │     no change │
│ QQuery 67 │  257.29 ms │                                    222.21 ms │ +1.16x faster │
│ QQuery 68 │    6.66 ms │                                      6.73 ms │     no change │
│ QQuery 69 │   56.09 ms │                                     54.49 ms │     no change │
│ QQuery 70 │  104.31 ms │                                     98.68 ms │ +1.06x faster │
│ QQuery 71 │   35.01 ms │                                     35.39 ms │     no change │
│ QQuery 72 │ 1615.86 ms │                                   1612.36 ms │     no change │
│ QQuery 73 │    5.37 ms │                                      5.41 ms │     no change │
│ QQuery 74 │  203.19 ms │                                    225.86 ms │  1.11x slower │
│ QQuery 75 │  139.91 ms │                                    139.02 ms │     no change │
│ QQuery 76 │   34.71 ms │                                     34.95 ms │     no change │
│ QQuery 77 │   60.14 ms │                                     59.85 ms │     no change │
│ QQuery 78 │  277.83 ms │                                    265.02 ms │     no change │
│ QQuery 79 │   67.11 ms │                                     67.40 ms │     no change │
│ QQuery 80 │   95.14 ms │                                     94.66 ms │     no change │
│ QQuery 81 │   26.46 ms │                                     28.40 ms │  1.07x slower │
│ QQuery 82 │   16.84 ms │                                     17.43 ms │     no change │
│ QQuery 83 │   33.07 ms │                                     33.20 ms │     no change │
│ QQuery 84 │   29.86 ms │                                     30.96 ms │     no change │
│ QQuery 85 │   97.66 ms │                                    100.32 ms │     no change │
│ QQuery 86 │   25.41 ms │                                     24.19 ms │     no change │
│ QQuery 87 │   62.80 ms │                                     63.62 ms │     no change │
│ QQuery 88 │   60.45 ms │                                     60.71 ms │     no change │
│ QQuery 89 │   35.16 ms │                                     35.73 ms │     no change │
│ QQuery 90 │   16.62 ms │                                     16.37 ms │     no change │
│ QQuery 91 │   40.99 ms │                                     39.94 ms │     no change │
│ QQuery 92 │   29.58 ms │                                     29.78 ms │     no change │
│ QQuery 93 │   49.97 ms │                                     49.13 ms │     no change │
│ QQuery 94 │   38.47 ms │                                     38.45 ms │     no change │
│ QQuery 95 │   79.01 ms │                                     78.36 ms │     no change │
│ QQuery 96 │   23.85 ms │                                     23.72 ms │     no change │
│ QQuery 97 │   50.55 ms │                                     50.28 ms │     no change │
│ QQuery 98 │   43.20 ms │                                     38.88 ms │ +1.11x faster │
│ QQuery 99 │   65.43 ms │                                     56.74 ms │ +1.15x faster │
└───────────┴────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 8937.98ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 9011.90ms │
│ Average Time (HEAD)                                         │   90.28ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   91.03ms │
│ Queries Faster                                              │        12 │
│ Queries Slower                                              │        11 │
│ Queries with No Change                                      │        76 │
│ Queries with Failure                                        │         0 │
└─────────────────────────────────────────────────────────────┴───────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.34 / 6.03 ±1.00 / 8.00 ms │                  5.79 / 6.41 ±1.10 / 8.60 ms │  1.06x slower │
│ QQuery 2  │        80.36 / 80.71 ±0.23 / 80.98 ms │               77.41 / 77.80 ±0.29 / 78.22 ms │     no change │
│ QQuery 3  │        29.13 / 29.25 ±0.13 / 29.46 ms │               29.22 / 29.33 ±0.09 / 29.43 ms │     no change │
│ QQuery 4  │     457.56 / 462.97 ±3.28 / 466.94 ms │            550.97 / 558.75 ±6.38 / 566.66 ms │  1.21x slower │
│ QQuery 5  │        50.26 / 53.75 ±5.24 / 64.15 ms │               50.66 / 50.99 ±0.36 / 51.53 ms │ +1.05x faster │
│ QQuery 6  │        36.07 / 36.29 ±0.17 / 36.56 ms │               33.68 / 34.59 ±0.80 / 35.85 ms │     no change │
│ QQuery 7  │        72.36 / 72.77 ±0.29 / 73.19 ms │               71.70 / 73.85 ±2.65 / 78.74 ms │     no change │
│ QQuery 8  │        36.81 / 37.14 ±0.22 / 37.47 ms │               39.39 / 39.55 ±0.12 / 39.70 ms │  1.07x slower │
│ QQuery 9  │        52.61 / 56.72 ±4.29 / 64.76 ms │               51.87 / 53.98 ±1.84 / 56.91 ms │     no change │
│ QQuery 10 │        60.41 / 61.24 ±0.73 / 62.57 ms │               59.12 / 59.42 ±0.25 / 59.84 ms │     no change │
│ QQuery 11 │     288.76 / 292.63 ±3.69 / 298.92 ms │            351.86 / 356.86 ±5.33 / 365.43 ms │  1.22x slower │
│ QQuery 12 │        29.25 / 30.73 ±2.47 / 35.64 ms │               27.10 / 27.20 ±0.08 / 27.30 ms │ +1.13x faster │
│ QQuery 13 │     113.56 / 114.10 ±0.83 / 115.74 ms │            113.51 / 115.45 ±2.59 / 120.58 ms │     no change │
│ QQuery 14 │     379.22 / 384.52 ±3.97 / 388.82 ms │            378.76 / 381.68 ±2.23 / 385.36 ms │     no change │
│ QQuery 15 │        55.35 / 56.07 ±0.46 / 56.68 ms │               53.22 / 54.03 ±0.53 / 54.74 ms │     no change │
│ QQuery 16 │           6.09 / 6.27 ±0.15 / 6.54 ms │                  6.24 / 6.32 ±0.08 / 6.46 ms │     no change │
│ QQuery 17 │        76.08 / 77.47 ±1.39 / 79.86 ms │               77.56 / 78.93 ±1.55 / 80.95 ms │     no change │
│ QQuery 18 │     104.56 / 104.91 ±0.32 / 105.32 ms │            104.54 / 105.76 ±0.79 / 107.02 ms │     no change │
│ QQuery 19 │        40.98 / 41.39 ±0.30 / 41.90 ms │               41.63 / 41.96 ±0.28 / 42.34 ms │     no change │
│ QQuery 20 │        36.11 / 36.99 ±0.81 / 38.23 ms │               32.37 / 32.58 ±0.19 / 32.83 ms │ +1.14x faster │
│ QQuery 21 │        17.16 / 17.55 ±0.48 / 18.47 ms │               16.94 / 17.30 ±0.20 / 17.57 ms │     no change │
│ QQuery 22 │        63.90 / 64.92 ±0.82 / 66.11 ms │               66.45 / 66.85 ±0.24 / 67.12 ms │     no change │
│ QQuery 23 │     295.55 / 297.69 ±1.41 / 299.86 ms │            294.17 / 300.54 ±4.57 / 305.69 ms │     no change │
│ QQuery 24 │     196.45 / 201.12 ±5.21 / 210.74 ms │            196.77 / 198.96 ±2.06 / 201.95 ms │     no change │
│ QQuery 25 │     104.33 / 106.35 ±1.73 / 109.14 ms │            105.19 / 107.24 ±2.30 / 111.40 ms │     no change │
│ QQuery 26 │        45.79 / 46.39 ±0.32 / 46.74 ms │               45.05 / 45.40 ±0.20 / 45.61 ms │     no change │
│ QQuery 27 │           5.10 / 5.26 ±0.13 / 5.47 ms │                  5.34 / 5.54 ±0.18 / 5.85 ms │  1.05x slower │
│ QQuery 28 │        57.65 / 60.96 ±2.18 / 64.02 ms │               57.31 / 60.65 ±1.71 / 61.85 ms │     no change │
│ QQuery 29 │       91.72 / 94.45 ±3.00 / 100.26 ms │              93.65 / 98.51 ±5.80 / 109.34 ms │     no change │
│ QQuery 30 │        32.80 / 33.44 ±0.62 / 34.47 ms │               35.95 / 36.40 ±0.29 / 36.83 ms │  1.09x slower │
│ QQuery 31 │     108.48 / 109.23 ±0.97 / 111.11 ms │            108.63 / 110.61 ±1.78 / 113.76 ms │     no change │
│ QQuery 32 │        20.30 / 20.42 ±0.10 / 20.57 ms │               20.06 / 20.36 ±0.24 / 20.64 ms │     no change │
│ QQuery 33 │        37.22 / 37.66 ±0.36 / 38.18 ms │               37.16 / 37.37 ±0.11 / 37.50 ms │     no change │
│ QQuery 34 │           5.62 / 5.78 ±0.15 / 6.06 ms │                  5.74 / 5.92 ±0.21 / 6.33 ms │     no change │
│ QQuery 35 │        72.36 / 72.77 ±0.41 / 73.38 ms │               70.01 / 70.80 ±0.71 / 72.13 ms │     no change │
│ QQuery 36 │           5.54 / 5.70 ±0.22 / 6.14 ms │                  6.20 / 6.37 ±0.19 / 6.73 ms │  1.12x slower │
│ QQuery 37 │           6.96 / 7.12 ±0.10 / 7.27 ms │                  7.85 / 7.96 ±0.09 / 8.11 ms │  1.12x slower │
│ QQuery 38 │        61.60 / 62.00 ±0.36 / 62.50 ms │               62.80 / 65.40 ±2.06 / 68.55 ms │  1.05x slower │
│ QQuery 39 │        73.89 / 76.34 ±4.17 / 84.66 ms │               71.98 / 72.84 ±0.85 / 74.21 ms │     no change │
│ QQuery 40 │        23.98 / 24.93 ±0.65 / 25.61 ms │               22.89 / 23.43 ±0.40 / 23.93 ms │ +1.06x faster │
│ QQuery 41 │        13.05 / 13.26 ±0.17 / 13.47 ms │               14.60 / 14.76 ±0.12 / 14.94 ms │  1.11x slower │
│ QQuery 42 │        24.13 / 25.19 ±0.97 / 26.97 ms │               23.91 / 24.22 ±0.32 / 24.80 ms │     no change │
│ QQuery 43 │           4.61 / 4.75 ±0.22 / 5.18 ms │                  4.75 / 4.85 ±0.18 / 5.21 ms │     no change │
│ QQuery 44 │           5.60 / 5.68 ±0.07 / 5.78 ms │                 5.45 / 6.54 ±2.01 / 10.57 ms │  1.15x slower │
│ QQuery 45 │        37.74 / 38.58 ±0.72 / 39.89 ms │               35.76 / 37.26 ±1.85 / 40.90 ms │     no change │
│ QQuery 46 │        11.97 / 12.28 ±0.20 / 12.55 ms │               11.48 / 11.85 ±0.26 / 12.16 ms │     no change │
│ QQuery 47 │     227.86 / 231.13 ±2.83 / 235.76 ms │            201.81 / 208.04 ±4.43 / 214.19 ms │ +1.11x faster │
│ QQuery 48 │        91.06 / 92.27 ±0.79 / 93.49 ms │               91.66 / 92.06 ±0.28 / 92.37 ms │     no change │
│ QQuery 49 │        69.76 / 70.59 ±0.78 / 71.77 ms │               69.88 / 71.64 ±2.57 / 76.70 ms │     no change │
│ QQuery 50 │        56.13 / 58.76 ±4.26 / 67.26 ms │               57.06 / 57.50 ±0.41 / 58.21 ms │     no change │
│ QQuery 51 │        92.57 / 95.87 ±2.26 / 98.19 ms │               94.79 / 95.49 ±0.43 / 96.03 ms │     no change │
│ QQuery 52 │        24.51 / 24.74 ±0.34 / 25.41 ms │               24.84 / 26.67 ±3.54 / 33.74 ms │  1.08x slower │
│ QQuery 53 │        29.44 / 29.79 ±0.20 / 30.04 ms │               30.77 / 31.58 ±1.24 / 34.02 ms │  1.06x slower │
│ QQuery 54 │        54.19 / 56.13 ±3.41 / 62.94 ms │               54.92 / 55.80 ±0.47 / 56.30 ms │     no change │
│ QQuery 55 │        23.97 / 24.29 ±0.28 / 24.78 ms │               24.16 / 24.59 ±0.27 / 24.91 ms │     no change │
│ QQuery 56 │        38.54 / 38.85 ±0.30 / 39.39 ms │               38.97 / 39.67 ±0.48 / 40.47 ms │     no change │
│ QQuery 57 │     168.25 / 170.18 ±1.86 / 173.27 ms │            153.18 / 155.47 ±2.67 / 160.27 ms │ +1.09x faster │
│ QQuery 58 │     108.02 / 108.75 ±0.70 / 109.72 ms │            105.27 / 107.12 ±1.88 / 110.62 ms │     no change │
│ QQuery 59 │     115.88 / 116.44 ±0.51 / 117.32 ms │            109.13 / 110.43 ±1.18 / 112.14 ms │ +1.05x faster │
│ QQuery 60 │        38.94 / 39.58 ±0.52 / 40.12 ms │               39.01 / 39.45 ±0.35 / 40.07 ms │     no change │
│ QQuery 61 │           9.18 / 9.27 ±0.10 / 9.45 ms │                  9.55 / 9.63 ±0.08 / 9.76 ms │     no change │
│ QQuery 62 │        43.88 / 44.22 ±0.21 / 44.44 ms │               38.76 / 39.99 ±1.82 / 43.55 ms │ +1.11x faster │
│ QQuery 63 │        29.51 / 29.77 ±0.17 / 29.98 ms │               29.75 / 30.33 ±0.53 / 30.98 ms │     no change │
│ QQuery 64 │     353.97 / 359.75 ±5.08 / 367.70 ms │            370.74 / 377.77 ±4.69 / 384.63 ms │  1.05x slower │
│ QQuery 65 │        68.66 / 70.03 ±1.20 / 71.67 ms │               72.23 / 73.80 ±1.36 / 75.44 ms │  1.05x slower │
│ QQuery 66 │        75.31 / 75.68 ±0.25 / 75.95 ms │               74.48 / 75.03 ±0.66 / 76.12 ms │     no change │
│ QQuery 67 │     257.29 / 262.65 ±4.05 / 267.29 ms │            222.21 / 227.56 ±4.56 / 235.44 ms │ +1.15x faster │
│ QQuery 68 │           6.66 / 6.79 ±0.11 / 6.96 ms │                  6.73 / 6.89 ±0.18 / 7.24 ms │     no change │
│ QQuery 69 │        56.09 / 58.89 ±4.43 / 67.72 ms │               54.49 / 58.03 ±4.55 / 66.51 ms │     no change │
│ QQuery 70 │     104.31 / 105.24 ±1.05 / 107.28 ms │             98.68 / 100.35 ±1.34 / 102.33 ms │     no change │
│ QQuery 71 │        35.01 / 35.46 ±0.45 / 36.26 ms │               35.39 / 35.71 ±0.22 / 36.00 ms │     no change │
│ QQuery 72 │ 1615.86 / 1651.98 ±27.13 / 1693.12 ms │        1612.36 / 1649.41 ±25.14 / 1679.96 ms │     no change │
│ QQuery 73 │           5.37 / 5.52 ±0.14 / 5.75 ms │                  5.41 / 5.53 ±0.21 / 5.95 ms │     no change │
│ QQuery 74 │     203.19 / 205.02 ±1.67 / 207.80 ms │            225.86 / 230.06 ±3.65 / 236.49 ms │  1.12x slower │
│ QQuery 75 │     139.91 / 140.24 ±0.28 / 140.59 ms │            139.02 / 142.22 ±5.44 / 153.06 ms │     no change │
│ QQuery 76 │        34.71 / 34.90 ±0.11 / 35.03 ms │               34.95 / 35.59 ±0.42 / 36.20 ms │     no change │
│ QQuery 77 │        60.14 / 63.61 ±5.68 / 74.91 ms │               59.85 / 60.45 ±0.37 / 60.97 ms │     no change │
│ QQuery 78 │     277.83 / 287.16 ±7.74 / 299.34 ms │            265.02 / 273.55 ±6.27 / 281.14 ms │     no change │
│ QQuery 79 │        67.11 / 70.91 ±6.68 / 84.27 ms │               67.40 / 70.60 ±4.48 / 79.48 ms │     no change │
│ QQuery 80 │       95.14 / 96.83 ±1.78 / 100.26 ms │               94.66 / 95.96 ±1.18 / 98.16 ms │     no change │
│ QQuery 81 │        26.46 / 26.76 ±0.19 / 26.96 ms │               28.40 / 28.60 ±0.11 / 28.70 ms │  1.07x slower │
│ QQuery 82 │        16.84 / 17.14 ±0.29 / 17.66 ms │               17.43 / 18.03 ±0.66 / 19.14 ms │  1.05x slower │
│ QQuery 83 │        33.07 / 33.47 ±0.26 / 33.88 ms │               33.20 / 36.62 ±4.72 / 45.60 ms │  1.09x slower │
│ QQuery 84 │        29.86 / 32.67 ±4.87 / 42.40 ms │               30.96 / 31.19 ±0.28 / 31.73 ms │     no change │
│ QQuery 85 │        97.66 / 98.64 ±0.65 / 99.53 ms │            100.32 / 101.96 ±1.12 / 103.47 ms │     no change │
│ QQuery 86 │        25.41 / 25.82 ±0.22 / 26.04 ms │               24.19 / 24.46 ±0.17 / 24.71 ms │ +1.06x faster │
│ QQuery 87 │        62.80 / 63.22 ±0.47 / 63.99 ms │               63.62 / 65.02 ±2.48 / 69.97 ms │     no change │
│ QQuery 88 │        60.45 / 61.16 ±1.28 / 63.72 ms │               60.71 / 61.12 ±0.31 / 61.60 ms │     no change │
│ QQuery 89 │        35.16 / 35.55 ±0.46 / 36.38 ms │               35.73 / 36.04 ±0.35 / 36.66 ms │     no change │
│ QQuery 90 │        16.62 / 16.70 ±0.13 / 16.96 ms │               16.37 / 16.49 ±0.06 / 16.54 ms │     no change │
│ QQuery 91 │        40.99 / 41.16 ±0.17 / 41.38 ms │               39.94 / 40.18 ±0.18 / 40.42 ms │     no change │
│ QQuery 92 │        29.58 / 29.73 ±0.11 / 29.86 ms │               29.78 / 31.66 ±1.79 / 33.88 ms │  1.06x slower │
│ QQuery 93 │        49.97 / 50.56 ±0.45 / 51.07 ms │               49.13 / 50.04 ±0.71 / 51.29 ms │     no change │
│ QQuery 94 │        38.47 / 39.24 ±0.70 / 40.31 ms │               38.45 / 38.86 ±0.42 / 39.65 ms │     no change │
│ QQuery 95 │        79.01 / 80.01 ±0.68 / 81.02 ms │               78.36 / 79.16 ±0.56 / 79.88 ms │     no change │
│ QQuery 96 │        23.85 / 24.00 ±0.11 / 24.14 ms │               23.72 / 25.78 ±3.42 / 32.60 ms │  1.07x slower │
│ QQuery 97 │        50.55 / 52.27 ±1.46 / 54.43 ms │               50.28 / 51.48 ±1.59 / 54.54 ms │     no change │
│ QQuery 98 │        43.20 / 44.05 ±0.53 / 44.67 ms │               38.88 / 39.33 ±0.41 / 40.08 ms │ +1.12x faster │
│ QQuery 99 │        65.43 / 65.58 ±0.18 / 65.91 ms │               56.74 / 57.37 ±0.47 / 58.07 ms │ +1.14x faster │
└───────────┴───────────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 9100.77ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 9190.71ms │
│ Average Time (HEAD)                                         │   91.93ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   92.84ms │
│ Queries Faster                                              │        12 │
│ Queries Slower                                              │        21 │
│ Queries with No Change                                      │        66 │
│ Queries with Failure                                        │         0 │
└─────────────────────────────────────────────────────────────┴───────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: c37a2aada6b21adc699c3fd6d1ddb648c130ec84 | Changed: c37a2aada6b21adc699c3fd6d1ddb648c130ec84

tpcds — tpcds_sf1

Query Base Changed Change
Query 1 135.4 KiB 135.4 KiB +0.0%
Query 2 90.5 MiB 72.7 MiB -19.7%
Query 3 3.5 MiB 1.7 MiB -51.9%
Query 4 119.5 MiB 85.5 MiB -28.5%
Query 5 14.7 MiB 13.0 MiB -11.8%
Query 6 7.8 MiB 4.7 MiB -40.1%
Query 7 9.6 MiB 3.8 MiB -60.4%
Query 8 3.6 MiB 2.1 MiB -41.8%
Query 9 32.1 KiB 32.1 KiB +0.0%
Query 10 3.1 MiB 2.0 MiB -34.7%
Query 11 84.0 MiB 58.1 MiB -30.8%
Query 12 131.1 MiB 114.4 MiB -12.8%
Query 13 17.6 MiB 13.0 MiB -26.1%
Query 14 170.9 MiB 170.9 MiB +0.0%
Query 15 7.1 MiB 4.2 MiB -41.1%
Query 16 161.5 KiB 118.6 KiB -26.6%
Query 17 39.7 MiB 39.6 MiB -0.4%
Query 18 21.0 MiB 21.2 MiB +1.2%
Query 19 5.9 MiB 2.2 MiB -63.6%
Query 20 131.3 MiB 114.6 MiB -12.7%
Query 21 4.5 MiB 4.0 MiB -11.2%
Query 22 93.4 MiB 61.8 MiB -33.9%
Query 23 217.1 MiB 212.0 MiB -2.3%
Query 24 45.9 MiB 36.4 MiB -20.6%
Query 25 84.3 MiB 85.6 MiB +1.6%
Query 26 10.2 MiB 5.8 MiB -43.0%
Query 27 987.6 KiB 929.3 KiB -5.9%
Query 28 1.5 MiB 1.3 MiB -9.1%
Query 29 96.9 MiB 97.2 MiB +0.3%
Query 30 7.2 MiB 3.8 MiB -47.3%
Query 31 18.0 MiB 13.4 MiB -25.5%
Query 32 2.7 MiB 2.7 MiB +0.0%
Query 33 5.9 MiB 4.0 MiB -31.6%
Query 34 96.3 KiB 96.3 KiB +0.0%
Query 35 25.5 MiB 13.8 MiB -45.7%
Query 36 10.6 MiB 10.3 MiB -2.4%
Query 37 3.8 MiB 3.3 MiB -12.9%
Query 38 19.4 MiB 10.4 MiB -46.1%
Query 39 41.5 MiB 42.9 MiB +3.2%
Query 40 13.9 MiB 11.2 MiB -19.6%
Query 41 2.1 MiB 2.1 MiB -3.8%
Query 42 1.7 MiB 1.3 MiB -23.0%
Query 43 192.4 KiB 275.0 KiB +42.9%
Query 44 192.4 KiB 97.6 KiB -49.3%
Query 45 8.0 MiB 4.7 MiB -41.2%
Query 46 9.4 MiB 5.4 MiB -42.4%
Query 47 157.3 MiB 141.4 MiB -10.1%
Query 48 15.6 MiB 11.7 MiB -24.9%
Query 49 71.1 MiB 52.8 MiB -25.8%
Query 50 14.9 MiB 16.5 MiB +10.6%
Query 51 177.9 MiB 177.7 MiB -0.1%
Query 52 3.3 MiB 2.0 MiB -40.8%
Query 53 20.4 MiB 30.6 MiB +49.7%
Query 54 4.1 MiB 2.0 MiB -52.3%
Query 55 3.0 MiB 1.7 MiB -42.1%
Query 56 5.0 MiB 2.9 MiB -40.5%
Query 57 141.0 MiB 132.3 MiB -6.1%
Query 58 6.3 MiB 3.9 MiB -38.3%
Query 59 14.9 MiB 11.6 MiB -21.9%
Query 60 7.0 MiB 5.7 MiB -18.8%
Query 61 2.3 KiB 2.4 KiB +3.4%
Query 62 7.0 MiB 3.0 MiB -57.6%
Query 63 30.4 MiB 20.4 MiB -32.9%
Query 64 130.3 MiB 115.3 MiB -11.6%
Query 65 29.4 MiB 29.7 MiB +1.1%
Query 66 16.0 MiB 11.9 MiB -25.8%
Query 67 517.2 MiB 138.1 MiB -73.3%
Query 68 96.4 KiB 218.2 KiB +126.5%
Query 69 46.7 MiB 4.0 MiB -91.4%
Query 70 53.7 MiB 41.7 MiB -22.4%
Query 71 70.5 MiB 60.6 MiB -14.0%
Query 72 91.1 MiB 91.2 MiB +0.1%
Query 73 96.3 KiB 96.3 KiB +0.0%
Query 74 48.9 MiB 35.5 MiB -27.5%
Query 75 22.5 MiB 23.1 MiB +2.6%
Query 76 6.3 MiB 4.4 MiB -30.4%
Query 77 3.9 MiB 4.4 MiB +13.3%
Query 78 316.9 MiB 316.9 MiB +0.0%
Query 79 11.6 MiB 9.3 MiB -19.5%
Query 80 42.8 MiB 42.8 MiB +0.1%
Query 81 11.4 MiB 4.1 MiB -63.8%
Query 82 3.8 MiB 4.9 MiB +30.2%
Query 83 11.7 MiB 8.1 MiB -30.6%
Query 84 12.0 MiB 11.7 MiB -3.0%
Query 85 21.9 MiB 17.0 MiB -22.3%
Query 86 104.8 MiB 91.9 MiB -12.3%
Query 87 20.6 MiB 12.9 MiB -37.4%
Query 88 1.6 MiB 1.5 MiB -10.4%
Query 89 129.1 MiB 112.2 MiB -13.1%
Query 90 348.6 KiB 348.6 KiB +0.0%
Query 91 22.9 MiB 31.2 MiB +36.6%
Query 92 2.7 MiB 2.7 MiB +0.0%
Query 93 15.1 MiB 15.4 MiB +1.7%
Query 94 3.4 MiB 3.4 MiB -0.0%
Query 95 19.4 MiB 19.4 MiB +0.0%
Query 96 224.7 KiB 224.7 KiB +0.0%
Query 97 33.1 MiB 33.1 MiB -0.2%
Query 98 131.5 MiB 124.4 MiB -5.4%
Query 99 7.1 MiB 1.9 MiB -73.1%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpcds base (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 517.2 MiB 2.1 GiB 1.6 GiB 4.1×
tpcds changed (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 316.9 MiB 2.1 GiB 1.8 GiB 6.7×
Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 2.1 GiB
Avg memory 1.4 GiB
CPU user 192.1s
CPU sys 5.6s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 50.0s
Peak memory 2.1 GiB
Avg memory 1.4 GiB
CPU user 187.6s
CPU sys 5.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

Instance: c4a-highmem-16 (12 vCPU / 65 GiB)

Comparing c37a2aa (c37a2aa) to c37a2aa diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_OPTIMIZER_ENABLE_DICTIONARY_PRESERVATION: "false"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "c37a2aada6b21adc699c3fd6d1ddb648c130ec84"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
resources:
  cpu: "12"
  memory: "65Gi"
  arch: "arm64"
CPU Details (lscpu)
Architecture:                            aarch64
CPU op-mode(s):                          64-bit
Byte Order:                              Little Endian
CPU(s):                                  16
On-line CPU(s) list:                     0-15
Vendor ID:                               ARM
Model name:                              Neoverse-V2
Model:                                   1
Thread(s) per core:                      1
Core(s) per cluster:                     16
Socket(s):                               -
Cluster(s):                              1
Stepping:                                r0p1
BogoMIPS:                                2000.00
Flags:                                   fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm jscvt fcma lrcpc dcpop sha3 sm3 sm4 asimddp sha512 sve asimdfhm dit uscat ilrcpc flagm sb paca pacg dcpodp sve2 sveaes svepmull svebitperm svesha3 svesm4 flagm2 frint svei8mm svebf16 i8mm bf16 dgh rng bti
L1d cache:                               1 MiB (16 instances)
L1i cache:                               1 MiB (16 instances)
L2 cache:                                32 MiB (16 instances)
L3 cache:                                80 MiB (1 instance)
NUMA node(s):                            1
NUMA node0 CPU(s):                       0-15
Vulnerability Gather data sampling:      Not affected
Vulnerability Indirect target selection: Not affected
Vulnerability Itlb multihit:             Not affected
Vulnerability L1tf:                      Not affected
Vulnerability Mds:                       Not affected
Vulnerability Meltdown:                  Not affected
Vulnerability Mmio stale data:           Not affected
Vulnerability Reg file data sampling:    Not affected
Vulnerability Retbleed:                  Not affected
Vulnerability Spec rstack overflow:      Not affected
Vulnerability Spec store bypass:         Mitigation; Speculative Store Bypass disabled via prctl
Vulnerability Spectre v1:                Mitigation; __user pointer sanitization
Vulnerability Spectre v2:                Mitigation; CSV2, BHB
Vulnerability Srbds:                     Not affected
Vulnerability Tsa:                       Not affected
Vulnerability Tsx async abort:           Not affected
Vulnerability Vmscape:                   Not affected
Details

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.15 ms │                                      1.08 ms │ +1.07x faster │
│ QQuery 1  │   11.57 ms │                                     11.07 ms │     no change │
│ QQuery 2  │   34.79 ms │                                     34.49 ms │     no change │
│ QQuery 3  │   31.19 ms │                                     30.52 ms │     no change │
│ QQuery 4  │  234.04 ms │                                    233.86 ms │     no change │
│ QQuery 5  │  270.52 ms │                                    658.41 ms │  2.43x slower │
│ QQuery 6  │    1.21 ms │                                      1.13 ms │ +1.07x faster │
│ QQuery 7  │   12.92 ms │                                     12.41 ms │     no change │
│ QQuery 8  │  324.80 ms │                                    326.52 ms │     no change │
│ QQuery 9  │  457.36 ms │                                    458.57 ms │     no change │
│ QQuery 10 │   64.07 ms │                                    199.91 ms │  3.12x slower │
│ QQuery 11 │   75.44 ms │                                    211.20 ms │  2.80x slower │
│ QQuery 12 │  258.48 ms │                                    675.16 ms │  2.61x slower │
│ QQuery 13 │  352.34 ms │                                    915.27 ms │  2.60x slower │
│ QQuery 14 │  278.41 ms │                                    718.05 ms │  2.58x slower │
│ QQuery 15 │  280.30 ms │                                    280.77 ms │     no change │
│ QQuery 16 │  602.24 ms │                                   1207.02 ms │  2.00x slower │
│ QQuery 17 │  608.95 ms │                                   1162.30 ms │  1.91x slower │
│ QQuery 18 │ 1193.98 ms │                                   1888.86 ms │  1.58x slower │
│ QQuery 19 │   27.66 ms │                                     26.83 ms │     no change │
│ QQuery 20 │  516.70 ms │                                   1047.72 ms │  2.03x slower │
│ QQuery 21 │  509.09 ms │                                   1367.79 ms │  2.69x slower │
│ QQuery 22 │  981.28 ms │                                   3239.62 ms │  3.30x slower │
│ QQuery 23 │ 3029.78 ms │                                   9347.46 ms │  3.09x slower │
│ QQuery 24 │   41.07 ms │                                     97.69 ms │  2.38x slower │
│ QQuery 25 │  104.63 ms │                                    353.23 ms │  3.38x slower │
│ QQuery 26 │   41.25 ms │                                     97.20 ms │  2.36x slower │
│ QQuery 27 │  510.26 ms │                                   1124.99 ms │  2.20x slower │
│ QQuery 28 │ 2783.65 ms │                                   2498.26 ms │ +1.11x faster │
│ QQuery 29 │   37.53 ms │                                     37.84 ms │     no change │
│ QQuery 30 │  305.65 ms │                                    541.89 ms │  1.77x slower │
│ QQuery 31 │  282.06 ms │                                    526.38 ms │  1.87x slower │
│ QQuery 32 │  921.01 ms │                                   1057.48 ms │  1.15x slower │
│ QQuery 33 │ 1419.57 ms │                                   2944.10 ms │  2.07x slower │
│ QQuery 34 │ 1454.93 ms │                                   3080.22 ms │  2.12x slower │
│ QQuery 35 │  288.19 ms │                                    299.79 ms │     no change │
│ QQuery 36 │   63.70 ms │                                    120.29 ms │  1.89x slower │
│ QQuery 37 │   33.52 ms │                                     94.05 ms │  2.81x slower │
│ QQuery 38 │   39.96 ms │                                     77.82 ms │  1.95x slower │
│ QQuery 39 │  138.64 ms │                                    269.36 ms │  1.94x slower │
│ QQuery 40 │   13.15 ms │                                     13.54 ms │     no change │
│ QQuery 41 │   12.34 ms │                                     12.88 ms │     no change │
│ QQuery 42 │   11.89 ms │                                     12.91 ms │  1.09x slower │
└───────────┴────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 18661.25ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 37315.95ms │
│ Average Time (HEAD)                                         │   433.98ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   867.81ms │
│ Queries Faster                                              │          3 │
│ Queries Slower                                              │         27 │
│ Queries with No Change                                      │         13 │
│ Queries with Failure                                        │          0 │
└─────────────────────────────────────────────────────────────┴────────────┘

Distribution per query (min / mean ±stddev / max):

Comparing HEAD and rich-T-kid_wip-cost-based-parquet-dictionary
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ rich-T-kid_wip-cost-based-parquet-dictionary ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │           1.15 / 1.76 ±1.12 / 4.00 ms │                  1.08 / 1.66 ±1.08 / 3.82 ms │ +1.06x faster │
│ QQuery 1  │        11.57 / 11.75 ±0.12 / 11.89 ms │               11.07 / 11.27 ±0.15 / 11.50 ms │     no change │
│ QQuery 2  │        34.79 / 35.31 ±0.36 / 35.86 ms │               34.49 / 34.84 ±0.38 / 35.32 ms │     no change │
│ QQuery 3  │        31.19 / 32.05 ±0.74 / 33.04 ms │               30.52 / 31.99 ±1.09 / 33.39 ms │     no change │
│ QQuery 4  │     234.04 / 236.19 ±1.45 / 238.43 ms │            233.86 / 238.51 ±4.58 / 244.61 ms │     no change │
│ QQuery 5  │     270.52 / 273.68 ±2.99 / 278.86 ms │            658.41 / 670.41 ±6.39 / 676.41 ms │  2.45x slower │
│ QQuery 6  │           1.21 / 1.36 ±0.25 / 1.85 ms │                  1.13 / 1.29 ±0.24 / 1.76 ms │ +1.06x faster │
│ QQuery 7  │        12.92 / 13.30 ±0.21 / 13.58 ms │               12.41 / 12.53 ±0.07 / 12.59 ms │ +1.06x faster │
│ QQuery 8  │     324.80 / 328.90 ±4.05 / 334.97 ms │            326.52 / 330.79 ±4.62 / 338.78 ms │     no change │
│ QQuery 9  │     457.36 / 467.28 ±8.97 / 481.23 ms │            458.57 / 468.40 ±7.59 / 477.08 ms │     no change │
│ QQuery 10 │        64.07 / 65.26 ±1.06 / 66.64 ms │            199.91 / 201.30 ±1.14 / 202.78 ms │  3.08x slower │
│ QQuery 11 │        75.44 / 77.61 ±2.57 / 82.61 ms │            211.20 / 212.00 ±0.96 / 213.84 ms │  2.73x slower │
│ QQuery 12 │     258.48 / 263.07 ±2.77 / 266.17 ms │           675.16 / 686.52 ±10.91 / 700.57 ms │  2.61x slower │
│ QQuery 13 │     352.34 / 365.23 ±9.37 / 375.63 ms │           915.27 / 939.39 ±16.93 / 965.54 ms │  2.57x slower │
│ QQuery 14 │     278.41 / 285.30 ±7.56 / 296.68 ms │           718.05 / 735.39 ±17.14 / 764.89 ms │  2.58x slower │
│ QQuery 15 │    280.30 / 299.04 ±18.54 / 333.82 ms │           280.77 / 289.75 ±10.39 / 308.78 ms │     no change │
│ QQuery 16 │     602.24 / 614.78 ±6.32 / 619.40 ms │        1207.02 / 1226.96 ±14.99 / 1253.43 ms │  2.00x slower │
│ QQuery 17 │     608.95 / 618.17 ±5.00 / 623.83 ms │        1162.30 / 1178.00 ±16.55 / 1198.36 ms │  1.91x slower │
│ QQuery 18 │ 1193.98 / 1217.35 ±17.61 / 1239.24 ms │        1888.86 / 1913.45 ±21.87 / 1954.15 ms │  1.57x slower │
│ QQuery 19 │        27.66 / 35.13 ±8.45 / 49.11 ms │               26.83 / 31.33 ±7.70 / 46.70 ms │ +1.12x faster │
│ QQuery 20 │     516.70 / 531.79 ±9.05 / 542.06 ms │         1047.72 / 1059.99 ±7.16 / 1068.15 ms │  1.99x slower │
│ QQuery 21 │    509.09 / 524.31 ±16.02 / 550.21 ms │         1367.79 / 1372.72 ±4.95 / 1380.98 ms │  2.62x slower │
│ QQuery 22 │    981.28 / 991.15 ±6.58 / 1000.28 ms │        3239.62 / 3288.40 ±41.01 / 3339.22 ms │  3.32x slower │
│ QQuery 23 │ 3029.78 / 3077.86 ±29.77 / 3123.33 ms │       9347.46 / 9496.87 ±106.23 / 9655.94 ms │  3.09x slower │
│ QQuery 24 │        41.07 / 42.94 ±2.51 / 47.72 ms │            97.69 / 106.84 ±15.04 / 136.80 ms │  2.49x slower │
│ QQuery 25 │     104.63 / 106.06 ±0.94 / 107.11 ms │            353.23 / 356.65 ±4.66 / 365.78 ms │  3.36x slower │
│ QQuery 26 │        41.25 / 41.75 ±0.51 / 42.64 ms │             97.20 / 100.45 ±3.04 / 105.96 ms │  2.41x slower │
│ QQuery 27 │     510.26 / 518.97 ±4.49 / 522.47 ms │         1124.99 / 1134.44 ±7.53 / 1141.74 ms │  2.19x slower │
│ QQuery 28 │ 2783.65 / 2807.37 ±17.00 / 2826.92 ms │        2498.26 / 2522.69 ±13.34 / 2536.66 ms │ +1.11x faster │
│ QQuery 29 │        37.53 / 38.12 ±0.65 / 39.35 ms │               37.84 / 39.51 ±2.46 / 44.34 ms │     no change │
│ QQuery 30 │    305.65 / 320.35 ±14.15 / 343.69 ms │            541.89 / 549.52 ±6.76 / 561.29 ms │  1.72x slower │
│ QQuery 31 │    282.06 / 293.18 ±11.01 / 312.68 ms │            526.38 / 540.20 ±8.75 / 552.70 ms │  1.84x slower │
│ QQuery 32 │   921.01 / 957.51 ±30.00 / 1012.41 ms │        1057.48 / 1109.53 ±44.57 / 1178.94 ms │  1.16x slower │
│ QQuery 33 │ 1419.57 / 1448.73 ±21.39 / 1483.82 ms │       2944.10 / 3065.39 ±126.88 / 3298.43 ms │  2.12x slower │
│ QQuery 34 │ 1454.93 / 1507.73 ±29.60 / 1538.97 ms │       3080.22 / 3221.04 ±148.52 / 3498.82 ms │  2.14x slower │
│ QQuery 35 │    288.19 / 321.84 ±45.18 / 409.99 ms │            299.79 / 309.81 ±9.14 / 322.86 ms │     no change │
│ QQuery 36 │        63.70 / 65.79 ±2.44 / 69.81 ms │            120.29 / 131.91 ±9.32 / 145.79 ms │  2.00x slower │
│ QQuery 37 │       33.52 / 43.06 ±12.72 / 67.86 ms │              94.05 / 98.20 ±4.37 / 103.67 ms │  2.28x slower │
│ QQuery 38 │        39.96 / 42.18 ±1.78 / 44.32 ms │               77.82 / 82.37 ±5.84 / 93.40 ms │  1.95x slower │
│ QQuery 39 │     138.64 / 147.25 ±6.93 / 157.32 ms │            269.36 / 278.19 ±6.51 / 286.70 ms │  1.89x slower │
│ QQuery 40 │        13.15 / 16.05 ±3.72 / 22.54 ms │               13.54 / 16.26 ±3.03 / 22.10 ms │     no change │
│ QQuery 41 │        12.34 / 12.66 ±0.35 / 13.30 ms │               12.88 / 13.18 ±0.19 / 13.43 ms │     no change │
│ QQuery 42 │        11.89 / 12.05 ±0.10 / 12.17 ms │               12.91 / 16.68 ±6.86 / 30.38 ms │  1.38x slower │
└───────────┴───────────────────────────────────────┴──────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                           ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                           │ 19111.21ms │
│ Total Time (rich-T-kid_wip-cost-based-parquet-dictionary)   │ 38126.64ms │
│ Average Time (HEAD)                                         │   444.45ms │
│ Average Time (rich-T-kid_wip-cost-based-parquet-dictionary) │   886.67ms │
│ Queries Faster                                              │          5 │
│ Queries Slower                                              │         27 │
│ Queries with No Change                                      │         11 │
│ Queries with Failure                                        │          0 │
└─────────────────────────────────────────────────────────────┴────────────┘

Memory Pool Peaks

Peak MemoryPool reservation per query — what DataFusion's accounting believes it reserved. Recorded only for benchmarks that write a results JSON (the dfbench suites, and the suites bench.sh runs through the Criterion SQL harness since #25644), and only under a memory limit: DATAFUSION_RUNTIME_MEMORY_LIMIT, or one the suite sets itself.

Base: c37a2aada6b21adc699c3fd6d1ddb648c130ec84 | Changed: c37a2aada6b21adc699c3fd6d1ddb648c130ec84

clickbench_partitioned

Query Base Changed Change
Query 0 0 B 0 B 0.0%
Query 1 104 B 104 B +0.0%
Query 2 936 B 936 B +0.0%
Query 3 312 B 312 B +0.0%
Query 4 830.9 MiB 830.5 MiB -0.0%
Query 5 1.2 GiB 1.4 GiB +17.5%
Query 6 0 B 0 B 0.0%
Query 7 50.3 MiB 50.1 MiB -0.5%
Query 8 940.2 MiB 968.5 MiB +3.0%
Query 9 594.0 MiB 594.0 MiB +0.0%
Query 10 120.2 MiB 72.1 MiB -40.0%
Query 11 115.0 MiB 76.4 MiB -33.6%
Query 12 1.3 GiB 1.5 GiB +12.5%
Query 13 1.6 GiB 1.6 GiB +2.9%
Query 14 1.3 GiB 1.6 GiB +22.2%
Query 15 1.2 GiB 1.2 GiB -3.5%
Query 16 3.4 GiB 3.2 GiB -4.5%
Query 17 3.3 GiB 3.3 GiB -1.8%
Query 18 8.4 GiB 7.2 GiB -14.5%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 3.7 MiB 1.6 MiB -57.9%
Query 22 3.4 MiB 2.4 MiB -30.3%
Query 23 33.9 MiB 12.7 MiB -62.7%
Query 24 59.3 MiB 5.1 MiB -91.4%
Query 25 164.8 MiB 6.5 MiB -96.1%
Query 26 60.3 MiB 6.9 MiB -88.5%
Query 27 2.5 MiB 2.5 MiB +0.0%
Query 28 1.8 GiB 1.8 GiB +4.0%
Query 29 624 B 624 B +0.0%
Query 30 687.7 MiB 626.3 MiB -8.9%
Query 31 1.5 GiB 1.6 GiB +4.6%
Query 32 7.1 GiB 7.2 GiB +0.5%
Query 33 8.0 GiB 9.9 GiB +24.5%
Query 34 7.7 GiB 9.7 GiB +25.0%
Query 35 671.3 MiB 664.8 MiB -1.0%
Query 36 111.6 MiB 100.4 MiB -10.0%
Query 37 6.6 MiB 7.1 MiB +7.1%
Query 38 5.4 MiB 5.1 MiB -4.4%
Query 39 308.8 MiB 213.0 MiB -31.0%
Query 40 2.3 MiB 2.5 MiB +7.2%
Query 41 3.1 MiB 3.3 MiB +9.1%
Query 42 1.7 MiB 1.8 MiB +5.5%

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.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
clickbench_partitioned base (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 8.4 GiB 12.2 GiB 3.9 GiB 1.5×
clickbench_partitioned changed (c37a2aada6b21adc699c3fd6d1ddb648c130ec84) 9.9 GiB 12.9 GiB 3.0 GiB 1.3×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 12.2 GiB
Avg memory 4.5 GiB
CPU user 976.7s
CPU sys 70.2s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 195.0s
Peak memory 12.9 GiB
Avg memory 5.6 GiB
CPU user 1932.8s
CPU sys 123.8s
Peak spill 0 B

File an issue against this benchmark runner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

catalog Related to the catalog crate common Related to common crate core Core DataFusion crate datasource Changes to the datasource crate documentation Improvements or additions to documentation execution Related to the execution crate optimizer Optimizer rules sqllogictest SQL Logic Tests (.slt) substrait Changes to the substrait crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants