Skip to content

feat(parquet): add NDV cap for dictionary reads - #26315

Draft
Rich-T-kid wants to merge 3 commits into
apache:mainfrom
Rich-T-kid:rich-T-kid/parquet-dict-cardinality-threshold
Draft

Rich-T-kid wants to merge 3 commits into
apache:mainfrom
Rich-T-kid:rich-T-kid/parquet-dict-cardinality-threshold

Conversation

@Rich-T-kid

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

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Rationale for this change

enable_rle_to_dictionary promotes eligible Parquet string and binary columns whenever dictionary pages are present. High-cardinality columns can therefore be inferred as large dictionary arrays without a user-defined bound.

What changes are included in this PR?

Adds datafusion.execution.parquet.rle_to_dictionary_max_distinct_values, an optional absolute NDV cap for dictionary read inference. When set, columns are promoted only when row-group NDV statistics prove they are within the cap; columns with missing statistics or values above the cap remain plain. The option is also wired through multi-file schema inference, protobuf, and documentation.

What is the testing strategy for this PR?

  • Extended parquet_rle_to_dictionary.slt for missing, below-cap, above-cap, multi-row-group, and multi-file behavior.
  • Added protobuf and logical codec round-trip coverage for the new option.
  • Ran the focused tests and the repository pre-push format, Clippy, and typo checks.

Are there any user-facing changes?

Yes. Users can set datafusion.execution.parquet.rle_to_dictionary_max_distinct_values to an absolute distinct-value limit. The default is NULL, which preserves the existing dictionary inference behavior.

@github-actions github-actions Bot added documentation Improvements or additions to documentation sqllogictest SQL Logic Tests (.slt) common Related to common crate proto Related to proto crate datasource Changes to the datasource crate labels Oct 14, 2026
@Rich-T-kid
Rich-T-kid force-pushed the rich-T-kid/parquet-dict-cardinality-threshold branch from 4ba149d to a18cef2 Compare October 14, 2026 16:08
@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Thank you for opening this pull request!

Reviewer note: cargo-semver-checks reported the current version number is not SemVer-compatible with the changes in this pull request (compared against the base branch).

Details
     Cloning apache/main
    Building datafusion-common v55.1.0 (current)
       Built [  32.289s] (current)
     Parsing datafusion-common v55.1.0 (current)
      Parsed [   0.063s] (current)
    Building datafusion-common v55.1.0 (baseline)
       Built [  32.018s] (baseline)
     Parsing datafusion-common v55.1.0 (baseline)
      Parsed [   0.062s] (baseline)
    Checking datafusion-common v55.1.0 -> v55.1.0 (no change; assume patch)
     Checked [   0.769s] 223 checks: 222 pass, 1 fail, 0 warn, 31 skip

--- failure constructible_struct_adds_field: struct exhaustively constructible through public API adds field ---

Description:
A pub struct that could be exhaustively constructed with a literal using only public API has a new pub field, breaking existing exhaustive literals.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.rle_to_dictionary_max_distinct_values in /home/runner/work/datafusion/datafusion/datafusion/common/src/config.rs:1338

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  66.634s] datafusion-common
    Building datafusion-datasource-parquet v55.1.0 (current)
       Built [  44.552s] (current)
     Parsing datafusion-datasource-parquet v55.1.0 (current)
      Parsed [   0.031s] (current)
    Building datafusion-datasource-parquet v55.1.0 (baseline)
       Built [  44.783s] (baseline)
     Parsing datafusion-datasource-parquet v55.1.0 (baseline)
      Parsed [   0.032s] (baseline)
    Checking datafusion-datasource-parquet v55.1.0 -> v55.1.0 (no change; assume patch)
     Checked [   0.149s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [  90.592s] datafusion-datasource-parquet
    Building datafusion-proto-common v55.1.0 (current)
       Built [  20.185s] (current)
     Parsing datafusion-proto-common v55.1.0 (current)
      Parsed [   0.045s] (current)
    Building datafusion-proto-common v55.1.0 (baseline)
       Built [  20.022s] (baseline)
     Parsing datafusion-proto-common v55.1.0 (baseline)
      Parsed [   0.048s] (baseline)
    Checking datafusion-proto-common v55.1.0 -> v55.1.0 (no change; assume patch)
     Checked [   1.087s] 223 checks: 222 pass, 1 fail, 0 warn, 31 skip

--- failure constructible_struct_adds_field: struct exhaustively constructible through public API adds field ---

Description:
A pub struct that could be exhaustively constructed with a literal using only public API has a new pub field, breaking existing exhaustive literals.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.rle_to_dictionary_max_distinct_values_opt in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:921
  field ParquetOptions.rle_to_dictionary_max_distinct_values_opt in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:921
  field ParquetOptions.rle_to_dictionary_max_distinct_values_opt in /home/runner/work/datafusion/datafusion/datafusion/proto-common/src/generated/prost.rs:921

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  42.207s] datafusion-proto-common
    Building datafusion-proto-models v55.1.0 (current)
       Built [  24.672s] (current)
     Parsing datafusion-proto-models v55.1.0 (current)
      Parsed [   0.148s] (current)
    Building datafusion-proto-models v55.1.0 (baseline)
       Built [  26.089s] (baseline)
     Parsing datafusion-proto-models v55.1.0 (baseline)
      Parsed [   0.142s] (baseline)
    Checking datafusion-proto-models v55.1.0 -> v55.1.0 (no change; assume patch)
     Checked [   1.888s] 223 checks: 222 pass, 1 fail, 0 warn, 31 skip

--- failure constructible_struct_adds_field: struct exhaustively constructible through public API adds field ---

Description:
A pub struct that could be exhaustively constructed with a literal using only public API has a new pub field, breaking existing exhaustive literals.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.50.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field ParquetOptions.rle_to_dictionary_max_distinct_values_opt in /home/runner/work/datafusion/datafusion/datafusion/proto-models/src/generated/datafusion_proto_common.rs:921
  field ParquetOptions.rle_to_dictionary_max_distinct_values_opt in /home/runner/work/datafusion/datafusion/datafusion/proto-models/src/generated/datafusion_proto_common.rs:921

     Summary semver requires new major version: 1 major and 0 minor checks failed
    Finished [  53.999s] datafusion-proto-models
    Building datafusion-sqllogictest v55.1.0 (current)
       Built [ 103.285s] (current)
     Parsing datafusion-sqllogictest v55.1.0 (current)
      Parsed [   0.016s] (current)
    Building datafusion-sqllogictest v55.1.0 (baseline)
       Built [  97.697s] (baseline)
     Parsing datafusion-sqllogictest v55.1.0 (baseline)
      Parsed [   0.017s] (baseline)
    Checking datafusion-sqllogictest v55.1.0 -> v55.1.0 (no change; assume patch)
     Checked [   0.103s] 223 checks: 223 pass, 31 skip
     Summary no semver update required
    Finished [ 203.690s] datafusion-sqllogictest

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Oct 14, 2026
@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch tpcds clickbench_partitioned wide_schema

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"

@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 (#26315 (comment)).

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

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-c6177832840-3407-wjnrg 6.12.94+ #1 SMP Fri Aug 21 08:00:16 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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"

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-c6177832840-3408-m5l7t 6.12.94+ #1 SMP Fri Aug 21 08:00:16 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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"

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-c6177832840-3409-26kg8 6.12.94+ #1 SMP Fri Aug 21 08:00:16 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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"

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-c6177832840-3410-4wrd9 6.12.94+ #1 SMP Fri Aug 21 08:00:16 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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark wide_schema
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"

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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"
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_parquet-dict-cardinality-threshold
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.13 ms │                                      40.56 ms │     no change │
│ QQuery 2  │ 18.52 ms │                                      18.05 ms │     no change │
│ QQuery 3  │ 28.35 ms │                                      28.38 ms │     no change │
│ QQuery 4  │ 17.10 ms │                                      17.17 ms │     no change │
│ QQuery 5  │ 35.57 ms │                                      35.47 ms │     no change │
│ QQuery 6  │ 13.64 ms │                                      13.52 ms │     no change │
│ QQuery 7  │ 41.19 ms │                                      41.19 ms │     no change │
│ QQuery 8  │ 40.78 ms │                                      40.63 ms │     no change │
│ QQuery 9  │ 51.21 ms │                                      50.19 ms │     no change │
│ QQuery 10 │ 58.53 ms │                                      40.36 ms │ +1.45x faster │
│ QQuery 11 │ 13.16 ms │                                      13.27 ms │     no change │
│ QQuery 12 │ 20.69 ms │                                      17.96 ms │ +1.15x faster │
│ QQuery 13 │ 45.42 ms │                                      38.82 ms │ +1.17x faster │
│ QQuery 14 │ 24.14 ms │                                      24.52 ms │     no change │
│ QQuery 15 │ 30.53 ms │                                      30.73 ms │     no change │
│ QQuery 16 │ 13.72 ms │                                      13.71 ms │     no change │
│ QQuery 17 │ 73.29 ms │                                      73.28 ms │     no change │
│ QQuery 18 │ 65.85 ms │                                      45.88 ms │ +1.44x faster │
│ QQuery 19 │ 29.33 ms │                                      31.56 ms │  1.08x slower │
│ QQuery 20 │ 33.43 ms │                                      31.80 ms │     no change │
│ QQuery 21 │ 52.47 ms │                                      54.57 ms │     no change │
│ QQuery 22 │ 15.32 ms │                                      13.40 ms │ +1.14x faster │
└───────────┴──────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 762.36ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 715.00ms │
│ Average Time (HEAD)                                          │  34.65ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │  32.50ms │
│ Queries Faster                                               │        5 │
│ Queries Slower                                               │        1 │
│ Queries with No Change                                       │       16 │
│ Queries with Failure                                         │        0 │
└──────────────────────────────────────────────────────────────┴──────────┘

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

Comparing HEAD and rich-T-kid_parquet-dict-cardinality-threshold
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.13 / 41.33 ±1.06 / 42.84 ms │                40.56 / 41.76 ±1.32 / 43.48 ms │     no change │
│ QQuery 2  │ 18.52 / 18.77 ±0.35 / 19.45 ms │                18.05 / 18.52 ±0.25 / 18.75 ms │     no change │
│ QQuery 3  │ 28.35 / 28.85 ±0.59 / 29.94 ms │                28.38 / 28.54 ±0.09 / 28.66 ms │     no change │
│ QQuery 4  │ 17.10 / 17.35 ±0.36 / 18.04 ms │                17.17 / 17.90 ±0.72 / 18.81 ms │     no change │
│ QQuery 5  │ 35.57 / 36.35 ±1.12 / 38.57 ms │                35.47 / 35.58 ±0.06 / 35.65 ms │     no change │
│ QQuery 6  │ 13.64 / 14.60 ±0.95 / 15.85 ms │                13.52 / 13.63 ±0.07 / 13.75 ms │ +1.07x faster │
│ QQuery 7  │ 41.19 / 43.35 ±2.97 / 49.17 ms │                41.19 / 42.13 ±0.49 / 42.56 ms │     no change │
│ QQuery 8  │ 40.78 / 41.64 ±0.84 / 43.22 ms │                40.63 / 41.72 ±1.17 / 43.67 ms │     no change │
│ QQuery 9  │ 51.21 / 51.66 ±0.53 / 52.62 ms │                50.19 / 51.20 ±0.78 / 52.04 ms │     no change │
│ QQuery 10 │ 58.53 / 58.71 ±0.16 / 58.97 ms │                40.36 / 40.68 ±0.22 / 41.05 ms │ +1.44x faster │
│ QQuery 11 │ 13.16 / 13.47 ±0.29 / 13.96 ms │                13.27 / 13.54 ±0.26 / 14.00 ms │     no change │
│ QQuery 12 │ 20.69 / 20.99 ±0.17 / 21.21 ms │                17.96 / 18.33 ±0.48 / 19.25 ms │ +1.14x faster │
│ QQuery 13 │ 45.42 / 45.82 ±0.33 / 46.31 ms │                38.82 / 39.65 ±1.17 / 41.97 ms │ +1.16x faster │
│ QQuery 14 │ 24.14 / 24.55 ±0.54 / 25.59 ms │                24.52 / 24.68 ±0.17 / 24.99 ms │     no change │
│ QQuery 15 │ 30.53 / 31.59 ±1.30 / 33.76 ms │                30.73 / 31.14 ±0.35 / 31.76 ms │     no change │
│ QQuery 16 │ 13.72 / 13.77 ±0.03 / 13.80 ms │                13.71 / 13.83 ±0.09 / 13.99 ms │     no change │
│ QQuery 17 │ 73.29 / 73.88 ±0.58 / 74.57 ms │                73.28 / 74.81 ±1.80 / 78.17 ms │     no change │
│ QQuery 18 │ 65.85 / 68.57 ±1.40 / 69.73 ms │                45.88 / 46.23 ±0.26 / 46.67 ms │ +1.48x faster │
│ QQuery 19 │ 29.33 / 29.84 ±0.43 / 30.62 ms │                31.56 / 32.05 ±0.48 / 32.69 ms │  1.07x slower │
│ QQuery 20 │ 33.43 / 33.83 ±0.40 / 34.53 ms │                31.80 / 31.98 ±0.10 / 32.08 ms │ +1.06x faster │
│ QQuery 21 │ 52.47 / 53.21 ±0.59 / 54.00 ms │                54.57 / 56.69 ±1.59 / 58.49 ms │  1.07x slower │
│ QQuery 22 │ 15.32 / 15.51 ±0.22 / 15.95 ms │                13.40 / 13.74 ±0.28 / 14.24 ms │ +1.13x faster │
└───────────┴────────────────────────────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 777.64ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 728.31ms │
│ Average Time (HEAD)                                          │  35.35ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │  33.11ms │
│ Queries Faster                                               │        7 │
│ Queries Slower                                               │        2 │
│ Queries with No Change                                       │       13 │
│ 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: 62154dc1b38737c3e15dd423ed8617d19f52ed65 | Changed: 62154dc1b38737c3e15dd423ed8617d19f52ed65

tpch — tpch_sf1

Query Base Changed Change
Query 1 30.1 MiB 31.4 MiB +4.3%
Query 2 23.1 MiB 15.9 MiB -31.3%
Query 3 11.5 MiB 11.5 MiB +0.0%
Query 4 22.2 MiB 23.5 MiB +5.9%
Query 5 32.8 MiB 43.1 MiB +31.7%
Query 6 832 B 832 B +0.0%
Query 7 107.6 MiB 107.4 MiB -0.1%
Query 8 33.2 MiB 34.0 MiB +2.4%
Query 9 155.6 MiB 155.4 MiB -0.1%
Query 10 65.6 MiB 37.5 MiB -42.9%
Query 11 31.3 MiB 41.3 MiB +32.0%
Query 12 10.2 MiB 20.3 MiB +98.6%
Query 13 72.3 MiB 52.5 MiB -27.5%
Query 14 7.7 MiB 7.7 MiB +0.0%
Query 15 12.9 MiB 12.0 MiB -7.0%
Query 16 33.4 MiB 44.7 MiB +33.7%
Query 17 141.3 MiB 141.3 MiB +0.0%
Query 18 118.2 MiB 189.1 MiB +60.0%
Query 19 228.6 KiB 746.1 KiB +226.3%
Query 20 59.8 MiB 57.3 MiB -4.0%
Query 21 37.7 MiB 42.6 MiB +12.9%
Query 22 22.2 MiB 23.0 MiB +3.8%

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 (62154dc1b38737c3e15dd423ed8617d19f52ed65) 155.6 MiB 1.1 GiB 973.0 MiB 7.3×
tpch changed (62154dc1b38737c3e15dd423ed8617d19f52ed65) 189.1 MiB 1.1 GiB 981.1 MiB 6.2×
Resource Usage

tpch — base (merge-base)

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

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 483.1 MiB
CPU user 19.9s
CPU sys 1.6s
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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"
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_parquet-dict-cardinality-threshold
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.91 ms │                                       5.90 ms │     no change │
│ QQuery 2  │   79.54 ms │                                      82.16 ms │     no change │
│ QQuery 3  │   29.72 ms │                                      29.64 ms │     no change │
│ QQuery 4  │  713.81 ms │                                     529.76 ms │ +1.35x faster │
│ QQuery 5  │   53.25 ms │                                      52.42 ms │     no change │
│ QQuery 6  │   35.99 ms │                                      37.47 ms │     no change │
│ QQuery 7  │   75.31 ms │                                      73.96 ms │     no change │
│ QQuery 8  │   39.22 ms │                                      37.32 ms │     no change │
│ QQuery 9  │   55.14 ms │                                      52.45 ms │     no change │
│ QQuery 10 │   64.07 ms │                                      61.77 ms │     no change │
│ QQuery 11 │  463.57 ms │                                     318.02 ms │ +1.46x faster │
│ QQuery 12 │   26.82 ms │                                      29.89 ms │  1.11x slower │
│ QQuery 13 │  117.64 ms │                                     117.48 ms │     no change │
│ QQuery 14 │  393.60 ms │                                     401.50 ms │     no change │
│ QQuery 15 │   75.51 ms │                                      64.85 ms │ +1.16x faster │
│ QQuery 16 │    6.82 ms │                                       7.04 ms │     no change │
│ QQuery 17 │   84.58 ms │                                      83.25 ms │     no change │
│ QQuery 18 │  114.80 ms │                                     111.13 ms │     no change │
│ QQuery 19 │   44.13 ms │                                      43.35 ms │     no change │
│ QQuery 20 │   32.98 ms │                                      38.66 ms │  1.17x slower │
│ QQuery 21 │   18.15 ms │                                      17.65 ms │     no change │
│ QQuery 22 │   82.13 ms │                                      70.52 ms │ +1.16x faster │
│ QQuery 23 │  349.53 ms │                                     340.06 ms │     no change │
│ QQuery 24 │  220.68 ms │                                     213.21 ms │     no change │
│ QQuery 25 │  114.30 ms │                                     113.10 ms │     no change │
│ QQuery 26 │   49.14 ms │                                      48.29 ms │     no change │
│ QQuery 27 │    6.90 ms │                                       6.55 ms │ +1.05x faster │
│ QQuery 28 │   62.69 ms │                                      58.00 ms │ +1.08x faster │
│ QQuery 29 │  101.52 ms │                                      98.90 ms │     no change │
│ QQuery 30 │   39.10 ms │                                      34.76 ms │ +1.13x faster │
│ QQuery 31 │  114.79 ms │                                     113.28 ms │     no change │
│ QQuery 32 │   21.26 ms │                                      22.12 ms │     no change │
│ QQuery 33 │   38.76 ms │                                      38.70 ms │     no change │
│ QQuery 34 │   10.88 ms │                                      10.97 ms │     no change │
│ QQuery 35 │   79.15 ms │                                      78.29 ms │     no change │
│ QQuery 36 │    6.56 ms │                                       6.43 ms │     no change │
│ QQuery 37 │    7.94 ms │                                       7.68 ms │     no change │
│ QQuery 38 │   69.34 ms │                                      65.87 ms │ +1.05x faster │
│ QQuery 39 │   79.34 ms │                                      77.75 ms │     no change │
│ QQuery 40 │   25.86 ms │                                      25.44 ms │     no change │
│ QQuery 41 │   13.85 ms │                                      12.23 ms │ +1.13x faster │
│ QQuery 42 │   25.22 ms │                                      24.81 ms │     no change │
│ QQuery 43 │    5.79 ms │                                       5.40 ms │ +1.07x faster │
│ QQuery 44 │    9.64 ms │                                       9.43 ms │     no change │
│ QQuery 45 │   42.59 ms │                                      44.40 ms │     no change │
│ QQuery 46 │   12.68 ms │                                      12.74 ms │     no change │
│ QQuery 47 │  226.52 ms │                                     261.91 ms │  1.16x slower │
│ QQuery 48 │   95.57 ms │                                      93.51 ms │     no change │
│ QQuery 49 │   73.85 ms │                                      71.72 ms │     no change │
│ QQuery 50 │   61.79 ms │                                      59.26 ms │     no change │
│ QQuery 51 │   95.64 ms │                                      93.44 ms │     no change │
│ QQuery 52 │   25.04 ms │                                      24.65 ms │     no change │
│ QQuery 53 │   30.00 ms │                                      30.01 ms │     no change │
│ QQuery 54 │   54.31 ms │                                      54.53 ms │     no change │
│ QQuery 55 │   24.74 ms │                                      24.18 ms │     no change │
│ QQuery 56 │   39.36 ms │                                      38.84 ms │     no change │
│ QQuery 57 │  161.50 ms │                                     173.52 ms │  1.07x slower │
│ QQuery 58 │  108.12 ms │                                     111.80 ms │     no change │
│ QQuery 59 │  109.78 ms │                                     117.98 ms │  1.07x slower │
│ QQuery 60 │   40.42 ms │                                      39.78 ms │     no change │
│ QQuery 61 │   12.09 ms │                                      11.80 ms │     no change │
│ QQuery 62 │   46.28 ms │                                      45.03 ms │     no change │
│ QQuery 63 │   30.63 ms │                                      30.64 ms │     no change │
│ QQuery 64 │  399.07 ms │                                     381.58 ms │     no change │
│ QQuery 65 │  137.58 ms │                                     131.07 ms │     no change │
│ QQuery 66 │   81.39 ms │                                      77.17 ms │ +1.05x faster │
│ QQuery 67 │  259.39 ms │                                     267.54 ms │     no change │
│ QQuery 68 │   12.64 ms │                                      12.58 ms │     no change │
│ QQuery 69 │   59.12 ms │                                      58.28 ms │     no change │
│ QQuery 70 │  103.41 ms │                                     107.24 ms │     no change │
│ QQuery 71 │   36.48 ms │                                      35.84 ms │     no change │
│ QQuery 72 │ 1588.83 ms │                                    1728.02 ms │  1.09x slower │
│ QQuery 73 │   10.32 ms │                                      10.51 ms │     no change │
│ QQuery 74 │  247.11 ms │                                     184.06 ms │ +1.34x faster │
│ QQuery 75 │  147.06 ms │                                     145.77 ms │     no change │
│ QQuery 76 │   35.39 ms │                                      35.71 ms │     no change │
│ QQuery 77 │   62.17 ms │                                      62.89 ms │     no change │
│ QQuery 78 │  175.90 ms │                                     182.44 ms │     no change │
│ QQuery 79 │   71.15 ms │                                      71.01 ms │     no change │
│ QQuery 80 │  101.65 ms │                                     101.41 ms │     no change │
│ QQuery 81 │   30.26 ms │                                      27.43 ms │ +1.10x faster │
│ QQuery 82 │   18.40 ms │                                      17.58 ms │     no change │
│ QQuery 83 │   34.52 ms │                                      34.23 ms │     no change │
│ QQuery 84 │   32.76 ms │                                      30.16 ms │ +1.09x faster │
│ QQuery 85 │  103.68 ms │                                     100.26 ms │     no change │
│ QQuery 86 │   26.35 ms │                                      26.81 ms │     no change │
│ QQuery 87 │   72.56 ms │                                      65.93 ms │ +1.10x faster │
│ QQuery 88 │   62.41 ms │                                      60.24 ms │     no change │
│ QQuery 89 │   38.04 ms │                                      36.49 ms │     no change │
│ QQuery 90 │   17.53 ms │                                      17.10 ms │     no change │
│ QQuery 91 │   43.93 ms │                                      42.48 ms │     no change │
│ QQuery 92 │   31.72 ms │                                      30.62 ms │     no change │
│ QQuery 93 │   52.91 ms │                                      51.04 ms │     no change │
│ QQuery 94 │   41.70 ms │                                      39.56 ms │ +1.05x faster │
│ QQuery 95 │   85.25 ms │                                      82.11 ms │     no change │
│ QQuery 96 │   25.04 ms │                                      24.18 ms │     no change │
│ QQuery 97 │   54.37 ms │                                      53.24 ms │     no change │
│ QQuery 98 │   40.82 ms │                                      44.78 ms │  1.10x slower │
│ QQuery 99 │   68.30 ms │                                      67.14 ms │     no change │
└───────────┴────────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 9765.05ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 9461.71ms │
│ Average Time (HEAD)                                          │   98.64ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │   95.57ms │
│ Queries Faster                                               │        16 │
│ Queries Slower                                               │         7 │
│ Queries with No Change                                       │        76 │
│ Queries with Failure                                         │         0 │
└──────────────────────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and rich-T-kid_parquet-dict-cardinality-threshold
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.91 / 6.60 ±1.07 / 8.73 ms │                   5.90 / 6.45 ±0.97 / 8.38 ms │     no change │
│ QQuery 2  │        79.54 / 79.92 ±0.30 / 80.28 ms │                82.16 / 82.62 ±0.48 / 83.31 ms │     no change │
│ QQuery 3  │        29.72 / 30.20 ±0.40 / 30.69 ms │                29.64 / 29.82 ±0.12 / 29.97 ms │     no change │
│ QQuery 4  │     713.81 / 720.73 ±5.71 / 729.36 ms │            529.76 / 544.77 ±16.36 / 575.88 ms │ +1.32x faster │
│ QQuery 5  │        53.25 / 54.11 ±0.49 / 54.61 ms │                52.42 / 53.17 ±0.51 / 53.87 ms │     no change │
│ QQuery 6  │        35.99 / 36.29 ±0.41 / 37.10 ms │                37.47 / 38.01 ±0.37 / 38.51 ms │     no change │
│ QQuery 7  │        75.31 / 77.52 ±2.97 / 83.41 ms │                73.96 / 76.54 ±3.10 / 81.67 ms │     no change │
│ QQuery 8  │        39.22 / 39.50 ±0.23 / 39.86 ms │                37.32 / 37.87 ±0.44 / 38.34 ms │     no change │
│ QQuery 9  │        55.14 / 57.90 ±2.03 / 61.05 ms │                52.45 / 54.83 ±1.22 / 55.93 ms │ +1.06x faster │
│ QQuery 10 │        64.07 / 64.73 ±0.56 / 65.50 ms │                61.77 / 62.01 ±0.16 / 62.24 ms │     no change │
│ QQuery 11 │     463.57 / 468.54 ±2.66 / 471.44 ms │            318.02 / 330.33 ±10.79 / 346.55 ms │ +1.42x faster │
│ QQuery 12 │        26.82 / 27.38 ±0.34 / 27.70 ms │                29.89 / 30.77 ±0.50 / 31.20 ms │  1.12x slower │
│ QQuery 13 │     117.64 / 119.25 ±1.02 / 120.45 ms │             117.48 / 119.92 ±2.28 / 123.90 ms │     no change │
│ QQuery 14 │     393.60 / 399.36 ±4.13 / 406.45 ms │             401.50 / 403.82 ±2.81 / 408.94 ms │     no change │
│ QQuery 15 │        75.51 / 78.13 ±1.79 / 81.06 ms │                64.85 / 65.49 ±0.61 / 66.44 ms │ +1.19x faster │
│ QQuery 16 │           6.82 / 7.02 ±0.12 / 7.18 ms │                   7.04 / 7.13 ±0.06 / 7.19 ms │     no change │
│ QQuery 17 │        84.58 / 86.48 ±1.57 / 88.91 ms │                83.25 / 84.37 ±1.23 / 86.23 ms │     no change │
│ QQuery 18 │     114.80 / 116.64 ±1.66 / 119.60 ms │             111.13 / 113.91 ±1.47 / 115.06 ms │     no change │
│ QQuery 19 │        44.13 / 44.77 ±0.59 / 45.79 ms │                43.35 / 44.16 ±0.74 / 45.33 ms │     no change │
│ QQuery 20 │        32.98 / 33.56 ±0.38 / 34.08 ms │                38.66 / 40.11 ±1.45 / 42.17 ms │  1.20x slower │
│ QQuery 21 │        18.15 / 18.28 ±0.09 / 18.38 ms │                17.65 / 17.90 ±0.16 / 18.12 ms │     no change │
│ QQuery 22 │        82.13 / 83.87 ±1.85 / 87.44 ms │                70.52 / 71.43 ±1.25 / 73.91 ms │ +1.17x faster │
│ QQuery 23 │     349.53 / 355.51 ±4.79 / 362.18 ms │             340.06 / 347.68 ±6.34 / 355.15 ms │     no change │
│ QQuery 24 │     220.68 / 223.82 ±3.08 / 229.41 ms │             213.21 / 216.97 ±2.95 / 220.57 ms │     no change │
│ QQuery 25 │     114.30 / 116.07 ±2.15 / 120.24 ms │             113.10 / 114.34 ±1.23 / 116.70 ms │     no change │
│ QQuery 26 │        49.14 / 49.75 ±0.41 / 50.32 ms │                48.29 / 49.73 ±1.94 / 53.56 ms │     no change │
│ QQuery 27 │           6.90 / 7.15 ±0.16 / 7.29 ms │                   6.55 / 6.66 ±0.12 / 6.89 ms │ +1.07x faster │
│ QQuery 28 │        62.69 / 64.34 ±3.16 / 70.66 ms │                58.00 / 61.00 ±2.34 / 63.54 ms │ +1.05x faster │
│ QQuery 29 │     101.52 / 102.55 ±1.61 / 105.76 ms │              98.90 / 100.14 ±0.78 / 101.11 ms │     no change │
│ QQuery 30 │        39.10 / 41.27 ±2.87 / 46.94 ms │                34.76 / 36.69 ±1.84 / 40.10 ms │ +1.12x faster │
│ QQuery 31 │     114.79 / 115.88 ±1.55 / 118.89 ms │             113.28 / 114.27 ±0.85 / 115.71 ms │     no change │
│ QQuery 32 │        21.26 / 21.55 ±0.15 / 21.70 ms │                22.12 / 22.35 ±0.24 / 22.82 ms │     no change │
│ QQuery 33 │        38.76 / 39.14 ±0.33 / 39.69 ms │                38.70 / 39.17 ±0.56 / 40.20 ms │     no change │
│ QQuery 34 │        10.88 / 11.05 ±0.15 / 11.25 ms │                10.97 / 11.27 ±0.31 / 11.77 ms │     no change │
│ QQuery 35 │        79.15 / 81.34 ±1.77 / 83.63 ms │                78.29 / 79.09 ±0.67 / 79.93 ms │     no change │
│ QQuery 36 │           6.56 / 6.61 ±0.04 / 6.64 ms │                   6.43 / 6.58 ±0.20 / 6.96 ms │     no change │
│ QQuery 37 │           7.94 / 8.13 ±0.17 / 8.35 ms │                   7.68 / 7.77 ±0.07 / 7.88 ms │     no change │
│ QQuery 38 │        69.34 / 69.97 ±0.37 / 70.43 ms │                65.87 / 67.21 ±0.98 / 68.38 ms │     no change │
│ QQuery 39 │        79.34 / 80.75 ±1.71 / 84.11 ms │                77.75 / 79.49 ±2.44 / 84.32 ms │     no change │
│ QQuery 40 │        25.86 / 26.27 ±0.50 / 27.21 ms │                25.44 / 25.94 ±0.69 / 27.30 ms │     no change │
│ QQuery 41 │        13.85 / 14.06 ±0.20 / 14.34 ms │                12.23 / 12.33 ±0.11 / 12.53 ms │ +1.14x faster │
│ QQuery 42 │        25.22 / 25.48 ±0.19 / 25.77 ms │                24.81 / 24.98 ±0.20 / 25.31 ms │     no change │
│ QQuery 43 │           5.79 / 5.88 ±0.09 / 6.05 ms │                   5.40 / 5.53 ±0.08 / 5.64 ms │ +1.06x faster │
│ QQuery 44 │           9.64 / 9.74 ±0.07 / 9.85 ms │                   9.43 / 9.65 ±0.15 / 9.86 ms │     no change │
│ QQuery 45 │        42.59 / 43.07 ±0.44 / 43.88 ms │                44.40 / 46.32 ±1.18 / 48.05 ms │  1.08x slower │
│ QQuery 46 │        12.68 / 13.01 ±0.27 / 13.46 ms │                12.74 / 13.92 ±2.14 / 18.19 ms │  1.07x slower │
│ QQuery 47 │     226.52 / 233.64 ±5.75 / 243.83 ms │             261.91 / 268.21 ±5.95 / 278.45 ms │  1.15x slower │
│ QQuery 48 │        95.57 / 96.44 ±0.86 / 97.92 ms │                93.51 / 94.16 ±0.74 / 95.54 ms │     no change │
│ QQuery 49 │        73.85 / 74.25 ±0.26 / 74.60 ms │                71.72 / 73.41 ±1.76 / 76.77 ms │     no change │
│ QQuery 50 │        61.79 / 64.41 ±2.79 / 69.45 ms │                59.26 / 59.93 ±0.65 / 61.11 ms │ +1.07x faster │
│ QQuery 51 │       95.64 / 97.99 ±1.79 / 100.15 ms │                93.44 / 94.86 ±1.41 / 97.57 ms │     no change │
│ QQuery 52 │        25.04 / 25.21 ±0.23 / 25.67 ms │                24.65 / 25.78 ±1.34 / 28.27 ms │     no change │
│ QQuery 53 │        30.00 / 30.37 ±0.28 / 30.73 ms │                30.01 / 30.26 ±0.18 / 30.55 ms │     no change │
│ QQuery 54 │        54.31 / 57.40 ±3.37 / 63.57 ms │                54.53 / 55.30 ±0.75 / 56.55 ms │     no change │
│ QQuery 55 │        24.74 / 24.99 ±0.22 / 25.37 ms │                24.18 / 24.57 ±0.45 / 25.36 ms │     no change │
│ QQuery 56 │        39.36 / 39.89 ±0.33 / 40.38 ms │                38.84 / 39.48 ±0.41 / 40.01 ms │     no change │
│ QQuery 57 │     161.50 / 164.50 ±3.47 / 170.95 ms │             173.52 / 177.50 ±3.89 / 182.37 ms │  1.08x slower │
│ QQuery 58 │     108.12 / 108.38 ±0.22 / 108.67 ms │             111.80 / 113.52 ±2.05 / 117.12 ms │     no change │
│ QQuery 59 │     109.78 / 112.25 ±2.51 / 116.41 ms │             117.98 / 118.51 ±0.39 / 118.99 ms │  1.06x slower │
│ QQuery 60 │        40.42 / 40.94 ±0.47 / 41.74 ms │                39.78 / 41.37 ±1.54 / 43.91 ms │     no change │
│ QQuery 61 │        12.09 / 12.26 ±0.10 / 12.36 ms │                11.80 / 11.98 ±0.14 / 12.22 ms │     no change │
│ QQuery 62 │        46.28 / 47.49 ±1.99 / 51.45 ms │                45.03 / 45.60 ±0.35 / 45.98 ms │     no change │
│ QQuery 63 │        30.63 / 31.49 ±0.73 / 32.57 ms │                30.64 / 30.80 ±0.19 / 31.16 ms │     no change │
│ QQuery 64 │     399.07 / 406.21 ±4.71 / 412.95 ms │             381.58 / 387.53 ±3.16 / 390.82 ms │     no change │
│ QQuery 65 │     137.58 / 139.15 ±1.10 / 140.51 ms │             131.07 / 132.81 ±1.21 / 134.28 ms │     no change │
│ QQuery 66 │        81.39 / 83.64 ±2.21 / 87.75 ms │                77.17 / 78.16 ±0.73 / 78.92 ms │ +1.07x faster │
│ QQuery 67 │     259.39 / 265.54 ±4.37 / 272.10 ms │             267.54 / 275.28 ±4.94 / 281.36 ms │     no change │
│ QQuery 68 │        12.64 / 12.73 ±0.09 / 12.84 ms │                12.58 / 12.76 ±0.17 / 13.05 ms │     no change │
│ QQuery 69 │        59.12 / 59.51 ±0.40 / 60.17 ms │                58.28 / 62.60 ±4.85 / 70.43 ms │  1.05x slower │
│ QQuery 70 │     103.41 / 105.93 ±3.17 / 112.14 ms │             107.24 / 108.46 ±1.12 / 110.28 ms │     no change │
│ QQuery 71 │        36.48 / 36.92 ±0.38 / 37.63 ms │                35.84 / 36.48 ±0.37 / 36.97 ms │     no change │
│ QQuery 72 │ 1588.83 / 1630.52 ±36.16 / 1691.79 ms │         1728.02 / 1817.28 ±60.50 / 1883.47 ms │  1.11x slower │
│ QQuery 73 │        10.32 / 10.73 ±0.44 / 11.55 ms │                10.51 / 11.29 ±0.71 / 12.54 ms │  1.05x slower │
│ QQuery 74 │     247.11 / 252.21 ±3.64 / 256.81 ms │             184.06 / 189.57 ±4.07 / 196.29 ms │ +1.33x faster │
│ QQuery 75 │     147.06 / 148.30 ±1.49 / 151.13 ms │             145.77 / 148.02 ±2.82 / 153.45 ms │     no change │
│ QQuery 76 │        35.39 / 35.99 ±0.37 / 36.36 ms │                35.71 / 35.96 ±0.24 / 36.39 ms │     no change │
│ QQuery 77 │        62.17 / 63.20 ±1.12 / 65.24 ms │                62.89 / 66.19 ±3.92 / 72.27 ms │     no change │
│ QQuery 78 │     175.90 / 180.89 ±2.68 / 183.19 ms │             182.44 / 189.42 ±7.04 / 202.90 ms │     no change │
│ QQuery 79 │        71.15 / 71.95 ±1.03 / 73.92 ms │                71.01 / 71.49 ±0.62 / 72.70 ms │     no change │
│ QQuery 80 │     101.65 / 103.89 ±2.78 / 109.25 ms │             101.41 / 103.52 ±1.49 / 105.38 ms │     no change │
│ QQuery 81 │        30.26 / 30.66 ±0.31 / 31.03 ms │                27.43 / 29.73 ±3.73 / 37.17 ms │     no change │
│ QQuery 82 │        18.40 / 18.59 ±0.23 / 19.01 ms │                17.58 / 17.77 ±0.17 / 18.08 ms │     no change │
│ QQuery 83 │        34.52 / 34.91 ±0.43 / 35.73 ms │                34.23 / 34.49 ±0.20 / 34.72 ms │     no change │
│ QQuery 84 │        32.76 / 32.86 ±0.07 / 32.95 ms │                30.16 / 30.51 ±0.26 / 30.87 ms │ +1.08x faster │
│ QQuery 85 │     103.68 / 108.03 ±3.13 / 112.61 ms │             100.26 / 103.27 ±3.33 / 108.81 ms │     no change │
│ QQuery 86 │        26.35 / 26.80 ±0.26 / 27.11 ms │                26.81 / 29.11 ±3.65 / 36.34 ms │  1.09x slower │
│ QQuery 87 │        72.56 / 72.90 ±0.31 / 73.47 ms │                65.93 / 67.12 ±0.87 / 68.35 ms │ +1.09x faster │
│ QQuery 88 │        62.41 / 62.73 ±0.20 / 62.94 ms │                60.24 / 61.24 ±0.78 / 62.57 ms │     no change │
│ QQuery 89 │        38.04 / 38.94 ±0.51 / 39.38 ms │                36.49 / 38.47 ±3.02 / 44.47 ms │     no change │
│ QQuery 90 │        17.53 / 17.73 ±0.13 / 17.90 ms │                17.10 / 17.88 ±1.10 / 20.05 ms │     no change │
│ QQuery 91 │        43.93 / 44.28 ±0.32 / 44.80 ms │                42.48 / 42.69 ±0.18 / 42.97 ms │     no change │
│ QQuery 92 │        31.72 / 32.36 ±0.48 / 33.11 ms │                30.62 / 30.93 ±0.27 / 31.26 ms │     no change │
│ QQuery 93 │        52.91 / 54.11 ±0.89 / 54.89 ms │                51.04 / 52.12 ±0.92 / 53.24 ms │     no change │
│ QQuery 94 │        41.70 / 43.74 ±2.52 / 48.06 ms │                39.56 / 41.19 ±2.52 / 46.20 ms │ +1.06x faster │
│ QQuery 95 │        85.25 / 86.56 ±0.79 / 87.24 ms │                82.11 / 85.02 ±1.91 / 88.10 ms │     no change │
│ QQuery 96 │        25.04 / 25.32 ±0.15 / 25.45 ms │                24.18 / 24.38 ±0.13 / 24.57 ms │     no change │
│ QQuery 97 │        54.37 / 56.14 ±1.97 / 59.72 ms │                53.24 / 54.21 ±0.77 / 55.18 ms │     no change │
│ QQuery 98 │        40.82 / 41.44 ±0.57 / 42.48 ms │                44.78 / 45.73 ±0.56 / 46.34 ms │  1.10x slower │
│ QQuery 99 │        68.30 / 68.92 ±0.36 / 69.37 ms │                67.14 / 67.88 ±1.38 / 70.64 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 9949.39ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 9720.30ms │
│ Average Time (HEAD)                                          │  100.50ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │   98.18ms │
│ Queries Faster                                               │        16 │
│ Queries Slower                                               │        12 │
│ Queries with No Change                                       │        71 │
│ 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: 62154dc1b38737c3e15dd423ed8617d19f52ed65 | Changed: 62154dc1b38737c3e15dd423ed8617d19f52ed65

tpcds — tpcds_sf1

Query Base Changed Change
Query 1 138.7 KiB 128.4 KiB -7.5%
Query 2 82.9 MiB 83.3 MiB +0.6%
Query 3 1.4 MiB 3.5 MiB +138.6%
Query 4 87.8 MiB 120.3 MiB +37.0%
Query 5 13.0 MiB 14.7 MiB +13.2%
Query 6 4.7 MiB 7.6 MiB +62.9%
Query 7 3.7 MiB 9.6 MiB +160.7%
Query 8 2.2 MiB 3.6 MiB +62.3%
Query 9 32.1 KiB 32.1 KiB +0.0%
Query 10 2.0 MiB 3.1 MiB +51.9%
Query 11 58.8 MiB 84.0 MiB +42.7%
Query 12 114.4 MiB 131.1 MiB +14.6%
Query 13 13.7 MiB 16.9 MiB +23.6%
Query 14 170.9 MiB 171.0 MiB +0.0%
Query 15 4.2 MiB 7.1 MiB +69.2%
Query 16 100.4 KiB 161.7 KiB +61.0%
Query 17 41.5 MiB 41.8 MiB +0.8%
Query 18 21.2 MiB 21.0 MiB -1.1%
Query 19 2.3 MiB 4.5 MiB +93.6%
Query 20 124.3 MiB 131.3 MiB +5.6%
Query 21 4.3 MiB 4.7 MiB +8.8%
Query 22 61.8 MiB 93.4 MiB +51.2%
Query 23 213.1 MiB 216.2 MiB +1.4%
Query 24 38.7 MiB 48.1 MiB +24.4%
Query 25 99.9 MiB 99.1 MiB -0.8%
Query 26 4.0 MiB 11.0 MiB +174.4%
Query 27 1.6 MiB 1.6 MiB +3.4%
Query 28 1.3 MiB 1.3 MiB +0.0%
Query 29 104.7 MiB 104.4 MiB -0.3%
Query 30 3.7 MiB 7.2 MiB +96.0%
Query 31 13.4 MiB 17.9 MiB +33.5%
Query 32 2.7 MiB 2.5 MiB -8.2%
Query 33 4.2 MiB 5.9 MiB +41.3%
Query 34 6.0 MiB 14.3 MiB +140.1%
Query 35 17.5 MiB 26.6 MiB +52.2%
Query 36 10.3 MiB 10.6 MiB +2.4%
Query 37 3.3 MiB 3.8 MiB +14.9%
Query 38 10.4 MiB 20.2 MiB +93.0%
Query 39 52.9 MiB 53.6 MiB +1.4%
Query 40 12.2 MiB 14.0 MiB +15.2%
Query 41 2.1 MiB 2.6 MiB +23.6%
Query 42 1.3 MiB 1.7 MiB +30.5%
Query 43 275.0 KiB 192.4 KiB -30.0%
Query 44 196.9 KiB 196.9 KiB +0.0%
Query 45 4.5 MiB 8.5 MiB +88.6%
Query 46 6.2 MiB 10.1 MiB +64.4%
Query 47 138.2 MiB 157.3 MiB +13.8%
Query 48 11.8 MiB 15.8 MiB +34.1%
Query 49 61.9 MiB 52.4 MiB -15.5%
Query 50 17.7 MiB 15.6 MiB -11.9%
Query 51 178.3 MiB 178.3 MiB -0.0%
Query 52 1.5 MiB 3.3 MiB +116.1%
Query 53 30.4 MiB 30.6 MiB +0.5%
Query 54 2.1 MiB 4.5 MiB +117.5%
Query 55 1.7 MiB 3.0 MiB +74.2%
Query 56 3.5 MiB 5.5 MiB +56.7%
Query 57 127.7 MiB 141.9 MiB +11.0%
Query 58 4.2 MiB 6.3 MiB +50.6%
Query 59 11.7 MiB 15.0 MiB +27.9%
Query 60 5.4 MiB 7.0 MiB +28.7%
Query 61 1.0 MiB 1.1 MiB +2.0%
Query 62 3.7 MiB 7.0 MiB +91.5%
Query 63 30.6 MiB 30.6 MiB +0.0%
Query 64 83.8 MiB 110.1 MiB +31.3%
Query 65 29.7 MiB 29.3 MiB -1.2%
Query 66 14.9 MiB 12.3 MiB -18.0%
Query 67 140.2 MiB 517.1 MiB +269.0%
Query 68 6.2 MiB 10.1 MiB +64.4%
Query 69 3.5 MiB 46.7 MiB +1224.6%
Query 70 44.0 MiB 68.7 MiB +56.1%
Query 71 40.4 MiB 70.5 MiB +74.4%
Query 72 97.2 MiB 97.1 MiB -0.1%
Query 73 6.0 MiB 14.3 MiB +140.1%
Query 74 33.6 MiB 41.6 MiB +24.1%
Query 75 20.7 MiB 20.8 MiB +0.3%
Query 76 7.9 MiB 7.8 MiB -0.7%
Query 77 4.0 MiB 4.0 MiB -0.0%
Query 78 111.1 MiB 110.3 MiB -0.7%
Query 79 8.7 MiB 11.6 MiB +32.5%
Query 80 42.8 MiB 42.9 MiB +0.1%
Query 81 4.1 MiB 11.5 MiB +183.8%
Query 82 4.9 MiB 3.8 MiB -23.2%
Query 83 9.0 MiB 12.3 MiB +36.6%
Query 84 11.9 MiB 12.0 MiB +0.9%
Query 85 17.0 MiB 20.3 MiB +19.5%
Query 86 82.1 MiB 105.2 MiB +28.2%
Query 87 12.9 MiB 20.6 MiB +59.8%
Query 88 1.6 MiB 1.6 MiB +0.0%
Query 89 112.2 MiB 120.0 MiB +6.9%
Query 90 564.1 KiB 564.1 KiB +0.0%
Query 91 31.3 MiB 22.9 MiB -26.9%
Query 92 2.7 MiB 2.7 MiB +0.0%
Query 93 15.1 MiB 15.5 MiB +2.4%
Query 94 3.7 MiB 3.7 MiB +0.0%
Query 95 17.4 MiB 17.8 MiB +2.3%
Query 96 224.7 KiB 224.7 KiB +0.0%
Query 97 33.1 MiB 33.1 MiB +0.2%
Query 98 114.7 MiB 131.5 MiB +14.7%
Query 99 1.9 MiB 7.1 MiB +275.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
tpcds base (62154dc1b38737c3e15dd423ed8617d19f52ed65) 213.1 MiB 1.9 GiB 1.7 GiB 9.3×
tpcds changed (62154dc1b38737c3e15dd423ed8617d19f52ed65) 517.1 MiB 2.4 GiB 1.9 GiB 4.7×
Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 1.9 GiB
Avg memory 1.4 GiB
CPU user 205.7s
CPU sys 6.2s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 50.0s
Peak memory 2.4 GiB
Avg memory 1.6 GiB
CPU user 205.4s
CPU sys 5.8s
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 62154dc (62154dc) to 62154dc diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
changed:
  ref: "62154dc1b38737c3e15dd423ed8617d19f52ed65"
  env:
    DATAFUSION_EXECUTION_PARQUET_RLE_TO_DICTIONARY_MAX_DISTINCT_VALUES: "2000"
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_parquet-dict-cardinality-threshold
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     1.31 ms │                                       1.27 ms │     no change │
│ QQuery 1  │    11.87 ms │                                      12.22 ms │     no change │
│ QQuery 2  │    36.67 ms │                                      37.29 ms │     no change │
│ QQuery 3  │    32.99 ms │                                      32.31 ms │     no change │
│ QQuery 4  │   267.37 ms │                                     256.01 ms │     no change │
│ QQuery 5  │  1549.15 ms │                                     286.96 ms │ +5.40x faster │
│ QQuery 6  │     1.30 ms │                                       1.27 ms │     no change │
│ QQuery 7  │    13.34 ms │                                      13.33 ms │     no change │
│ QQuery 8  │   373.96 ms │                                     350.60 ms │ +1.07x faster │
│ QQuery 9  │   521.88 ms │                                     505.72 ms │     no change │
│ QQuery 10 │   202.25 ms │                                      67.74 ms │ +2.99x faster │
│ QQuery 11 │   213.33 ms │                                      78.00 ms │ +2.74x faster │
│ QQuery 12 │  1583.31 ms │                                     283.40 ms │ +5.59x faster │
│ QQuery 13 │  2229.82 ms │                                     379.34 ms │ +5.88x faster │
│ QQuery 14 │  1731.72 ms │                                     301.16 ms │ +5.75x faster │
│ QQuery 15 │   322.53 ms │                                     316.43 ms │     no change │
│ QQuery 16 │  3771.93 ms │                                     650.49 ms │ +5.80x faster │
│ QQuery 17 │  3869.78 ms │                                     654.03 ms │ +5.92x faster │
│ QQuery 18 │  7255.18 ms │                                    1386.36 ms │ +5.23x faster │
│ QQuery 19 │    28.09 ms │                                      29.30 ms │     no change │
│ QQuery 20 │  1090.77 ms │                                     528.25 ms │ +2.06x faster │
│ QQuery 21 │  1400.84 ms │                                     521.78 ms │ +2.68x faster │
│ QQuery 22 │  3274.99 ms │                                    1049.50 ms │ +3.12x faster │
│ QQuery 23 │  9282.87 ms │                                    3278.61 ms │ +2.83x faster │
│ QQuery 24 │    98.15 ms │                                      42.20 ms │ +2.33x faster │
│ QQuery 25 │   361.85 ms │                                     108.87 ms │ +3.32x faster │
│ QQuery 26 │   100.11 ms │                                      42.55 ms │ +2.35x faster │
│ QQuery 27 │  1190.94 ms │                                     523.92 ms │ +2.27x faster │
│ QQuery 28 │  3584.93 ms │                                    2938.80 ms │ +1.22x faster │
│ QQuery 29 │    40.02 ms │                                      41.01 ms │     no change │
│ QQuery 30 │   567.42 ms │                                     325.08 ms │ +1.75x faster │
│ QQuery 31 │   556.94 ms │                                     289.44 ms │ +1.92x faster │
│ QQuery 32 │  1136.52 ms │                                    1187.95 ms │     no change │
│ QQuery 33 │ 14724.46 ms │                                    1688.30 ms │ +8.72x faster │
│ QQuery 34 │ 14614.50 ms │                                    1772.85 ms │ +8.24x faster │
│ QQuery 35 │   324.16 ms │                                     333.51 ms │     no change │
│ QQuery 36 │   197.21 ms │                                      72.44 ms │ +2.72x faster │
│ QQuery 37 │    99.50 ms │                                      36.19 ms │ +2.75x faster │
│ QQuery 38 │    83.42 ms │                                      41.67 ms │ +2.00x faster │
│ QQuery 39 │   419.20 ms │                                     166.94 ms │ +2.51x faster │
│ QQuery 40 │    15.17 ms │                                      14.90 ms │     no change │
│ QQuery 41 │    13.92 ms │                                      14.50 ms │     no change │
│ QQuery 42 │    14.00 ms │                                      14.02 ms │     no change │
└───────────┴─────────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 77209.67ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 20676.49ms │
│ Average Time (HEAD)                                          │  1795.57ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │   480.85ms │
│ Queries Faster                                               │         27 │
│ Queries Slower                                               │          0 │
│ Queries with No Change                                       │         16 │
│ Queries with Failure                                         │          0 │
└──────────────────────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and rich-T-kid_parquet-dict-cardinality-threshold
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                      HEAD ┃ rich-T-kid_parquet-dict-cardinality-threshold ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │              1.31 / 4.65 ±6.47 / 17.58 ms │                  1.27 / 4.62 ±6.48 / 17.58 ms │     no change │
│ QQuery 1  │            11.87 / 12.07 ±0.16 / 12.31 ms │                12.22 / 12.47 ±0.21 / 12.77 ms │     no change │
│ QQuery 2  │            36.67 / 36.92 ±0.21 / 37.17 ms │                37.29 / 38.01 ±0.59 / 39.00 ms │     no change │
│ QQuery 3  │            32.99 / 33.80 ±0.93 / 35.48 ms │                32.31 / 33.08 ±0.77 / 34.56 ms │     no change │
│ QQuery 4  │         267.37 / 272.09 ±3.67 / 278.37 ms │             256.01 / 257.58 ±1.67 / 260.68 ms │ +1.06x faster │
│ QQuery 5  │     1549.15 / 1615.92 ±48.08 / 1698.62 ms │             286.96 / 290.01 ±2.25 / 293.22 ms │ +5.57x faster │
│ QQuery 6  │               1.30 / 1.45 ±0.22 / 1.88 ms │                   1.27 / 1.44 ±0.25 / 1.94 ms │     no change │
│ QQuery 7  │            13.34 / 13.48 ±0.09 / 13.60 ms │                13.33 / 13.72 ±0.21 / 13.94 ms │     no change │
│ QQuery 8  │         373.96 / 382.38 ±8.30 / 394.84 ms │             350.60 / 355.96 ±4.52 / 364.13 ms │ +1.07x faster │
│ QQuery 9  │        521.88 / 536.27 ±11.15 / 552.71 ms │            505.72 / 525.24 ±14.01 / 546.03 ms │     no change │
│ QQuery 10 │         202.25 / 203.86 ±1.27 / 205.53 ms │                67.74 / 68.28 ±0.58 / 69.38 ms │ +2.99x faster │
│ QQuery 11 │         213.33 / 214.41 ±1.07 / 216.36 ms │                78.00 / 78.95 ±0.62 / 79.75 ms │ +2.72x faster │
│ QQuery 12 │     1583.31 / 1640.25 ±44.18 / 1698.98 ms │            283.40 / 297.07 ±13.46 / 319.92 ms │ +5.52x faster │
│ QQuery 13 │    2229.82 / 2656.76 ±303.39 / 2985.64 ms │            379.34 / 402.22 ±14.72 / 419.43 ms │ +6.61x faster │
│ QQuery 14 │     1731.72 / 1785.76 ±53.98 / 1886.25 ms │             301.16 / 304.89 ±4.84 / 314.06 ms │ +5.86x faster │
│ QQuery 15 │        322.53 / 348.95 ±31.72 / 402.96 ms │            316.43 / 333.59 ±15.18 / 360.14 ms │     no change │
│ QQuery 16 │    3771.93 / 3946.90 ±110.88 / 4087.61 ms │            650.49 / 666.29 ±12.60 / 686.35 ms │ +5.92x faster │
│ QQuery 17 │    3869.78 / 4006.07 ±115.24 / 4218.21 ms │            654.03 / 693.58 ±25.32 / 730.60 ms │ +5.78x faster │
│ QQuery 18 │    7255.18 / 7442.62 ±130.21 / 7591.66 ms │         1386.36 / 1428.78 ±26.62 / 1455.34 ms │ +5.21x faster │
│ QQuery 19 │           28.09 / 45.01 ±23.77 / 89.17 ms │                29.30 / 30.39 ±1.66 / 33.70 ms │ +1.48x faster │
│ QQuery 20 │      1090.77 / 1094.47 ±4.48 / 1102.18 ms │            528.25 / 545.23 ±23.10 / 590.89 ms │ +2.01x faster │
│ QQuery 21 │     1400.84 / 1422.83 ±16.12 / 1443.70 ms │             521.78 / 530.47 ±6.37 / 538.61 ms │ +2.68x faster │
│ QQuery 22 │     3274.99 / 3331.81 ±41.41 / 3400.39 ms │         1049.50 / 1103.22 ±43.32 / 1156.98 ms │ +3.02x faster │
│ QQuery 23 │    9282.87 / 9608.51 ±240.16 / 9943.42 ms │        3278.61 / 3537.63 ±274.51 / 4055.56 ms │ +2.72x faster │
│ QQuery 24 │         98.15 / 116.69 ±30.68 / 177.89 ms │              42.20 / 74.47 ±43.70 / 156.69 ms │ +1.57x faster │
│ QQuery 25 │         361.85 / 364.05 ±2.88 / 369.63 ms │             108.87 / 109.69 ±0.43 / 110.03 ms │ +3.32x faster │
│ QQuery 26 │         100.11 / 101.66 ±1.30 / 103.25 ms │              42.55 / 55.73 ±22.71 / 101.09 ms │ +1.82x faster │
│ QQuery 27 │      1190.94 / 1200.12 ±8.56 / 1214.82 ms │            523.92 / 543.41 ±10.41 / 552.28 ms │ +2.21x faster │
│ QQuery 28 │     3584.93 / 3617.78 ±30.22 / 3656.36 ms │         2938.80 / 2997.41 ±31.05 / 3030.75 ms │ +1.21x faster │
│ QQuery 29 │            40.02 / 47.86 ±8.24 / 60.29 ms │               41.01 / 47.80 ±12.65 / 73.10 ms │     no change │
│ QQuery 30 │         567.42 / 578.18 ±7.49 / 587.58 ms │            325.08 / 340.01 ±17.00 / 363.19 ms │ +1.70x faster │
│ QQuery 31 │         556.94 / 567.64 ±7.59 / 576.35 ms │            289.44 / 310.03 ±17.22 / 334.48 ms │ +1.83x faster │
│ QQuery 32 │     1136.52 / 1202.76 ±63.27 / 1300.37 ms │        1187.95 / 1379.70 ±161.98 / 1674.52 ms │  1.15x slower │
│ QQuery 33 │ 14724.46 / 15054.77 ±309.88 / 15524.53 ms │         1688.30 / 1735.17 ±43.42 / 1816.36 ms │ +8.68x faster │
│ QQuery 34 │ 14614.50 / 15387.88 ±890.65 / 16576.70 ms │         1772.85 / 1809.56 ±28.94 / 1846.88 ms │ +8.50x faster │
│ QQuery 35 │        324.16 / 337.53 ±19.04 / 375.02 ms │           333.51 / 430.22 ±173.86 / 777.40 ms │  1.27x slower │
│ QQuery 36 │        197.21 / 209.04 ±14.47 / 236.78 ms │              72.44 / 86.55 ±12.98 / 105.16 ms │ +2.42x faster │
│ QQuery 37 │          99.50 / 102.99 ±3.07 / 108.54 ms │                36.19 / 37.61 ±0.78 / 38.57 ms │ +2.74x faster │
│ QQuery 38 │            83.42 / 85.12 ±1.89 / 88.02 ms │               41.67 / 53.06 ±10.00 / 67.55 ms │ +1.60x faster │
│ QQuery 39 │         419.20 / 430.35 ±7.72 / 438.57 ms │             166.94 / 173.36 ±5.10 / 179.17 ms │ +2.48x faster │
│ QQuery 40 │            15.17 / 16.93 ±3.25 / 23.41 ms │                14.90 / 16.92 ±3.26 / 23.42 ms │     no change │
│ QQuery 41 │            13.92 / 14.60 ±0.40 / 15.09 ms │                14.50 / 15.71 ±1.82 / 19.31 ms │  1.08x slower │
│ QQuery 42 │            14.00 / 16.60 ±4.99 / 26.58 ms │                14.02 / 14.37 ±0.27 / 14.74 ms │ +1.16x faster │
└───────────┴───────────────────────────────────────────┴───────────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                                            ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                                            │ 80109.80ms │
│ Total Time (rich-T-kid_parquet-dict-cardinality-threshold)   │ 21783.50ms │
│ Average Time (HEAD)                                          │  1863.02ms │
│ Average Time (rich-T-kid_parquet-dict-cardinality-threshold) │   506.59ms │
│ Queries Faster                                               │         30 │
│ Queries Slower                                               │          3 │
│ Queries with No Change                                       │         10 │
│ 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: 62154dc1b38737c3e15dd423ed8617d19f52ed65 | Changed: 62154dc1b38737c3e15dd423ed8617d19f52ed65

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 770.7 MiB 762.8 MiB -1.0%
Query 5 1.4 GiB 1.2 GiB -15.1%
Query 6 0 B 0 B 0.0%
Query 7 60.1 MiB 50.1 MiB -16.6%
Query 8 945.0 MiB 949.4 MiB +0.5%
Query 9 551.8 MiB 593.7 MiB +7.6%
Query 10 74.6 MiB 111.4 MiB +49.3%
Query 11 77.0 MiB 117.8 MiB +53.1%
Query 12 1.6 GiB 1.4 GiB -11.9%
Query 13 1.8 GiB 1.6 GiB -12.5%
Query 14 1.9 GiB 1.3 GiB -30.4%
Query 15 1.1 GiB 1.2 GiB +6.6%
Query 16 3.3 GiB 3.4 GiB +1.9%
Query 17 3.3 GiB 3.4 GiB +3.5%
Query 18 7.4 GiB 8.8 GiB +18.8%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 1.4 MiB 4.0 MiB +190.5%
Query 22 2.7 MiB 4.6 MiB +71.3%
Query 23 11.3 MiB 2.6 GiB +23431.8%
Query 24 6.8 MiB 58.1 MiB +755.4%
Query 25 6.9 MiB 161.5 MiB +2234.9%
Query 26 7.5 MiB 61.0 MiB +715.3%
Query 27 2.5 MiB 2.5 MiB +0.0%
Query 28 1.6 GiB 1.7 GiB +4.8%
Query 29 624 B 624 B +0.0%
Query 30 670.7 MiB 705.8 MiB +5.2%
Query 31 1.5 GiB 1.6 GiB +9.5%
Query 32 7.1 GiB 7.2 GiB +0.4%
Query 33 12.4 GiB 7.8 GiB -36.9%
Query 34 12.8 GiB 7.8 GiB -38.9%
Query 35 593.1 MiB 606.2 MiB +2.2%
Query 36 474.1 MiB 118.5 MiB -75.0%
Query 37 8.4 MiB 6.8 MiB -18.5%
Query 38 5.7 MiB 5.6 MiB -0.3%
Query 39 450.8 MiB 295.2 MiB -34.5%
Query 40 2.6 MiB 2.6 MiB +0.1%
Query 41 3.1 MiB 3.1 MiB -0.1%
Query 42 1.7 MiB 1.6 MiB -6.2%

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 (62154dc1b38737c3e15dd423ed8617d19f52ed65) 12.8 GiB 13.4 GiB 587.9 MiB 1.0×
clickbench_partitioned changed (62154dc1b38737c3e15dd423ed8617d19f52ed65) 8.8 GiB 18.2 GiB 9.4 GiB 2.1×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 405.1s
Peak memory 13.4 GiB
Avg memory 6.0 GiB
CPU user 3476.4s
CPU sys 222.0s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 110.0s
Peak memory 18.2 GiB
Avg memory 6.1 GiB
CPU user 1057.4s
CPU sys 113.9s
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

auto detected api change Auto detected API change common Related to common crate datasource Changes to the datasource crate documentation Improvements or additions to documentation proto Related to proto crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Allow users to define the cardinality threshold for dictionary reads

2 participants