Skip to content

perf: add fully ordered group values implementation for primitive - #25931

Draft
rluvaton wants to merge 6 commits into
apache:mainfrom
rluvaton:add-fully-ordered-groups-values
Draft

rluvaton wants to merge 6 commits into
apache:mainfrom
rluvaton:add-fully-ordered-groups-values

Conversation

@rluvaton

@rluvaton rluvaton commented Oct 1, 2026

Copy link
Copy Markdown
Member

Which issue does this PR close?

None

Rationale for this change

Improving performance. there is no need to do unnecessary computation when the group by columns are fully sorted

What changes are included in this PR?

Implemented GroupValues for new struct FullyOrderedGroupValues that avoid keeping hash map and map probing

What is the testing strategy for this PR?

existing tests

Are there any user-facing changes?

no

This allows for optimized implementation given that we know that the input is ordered
@rluvaton

rluvaton commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

run benchmarks tpch10 h2o_medium clickbench_partitioned

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"

@github-actions github-actions Bot added the physical-plan Changes to the physical-plan crate label Oct 1, 2026
@rluvaton

rluvaton commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

run benchmark external_aggr

@rluvaton

rluvaton commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

show benchmarks queue

@rluvaton

rluvaton commented Oct 1, 2026

Copy link
Copy Markdown
Member Author

show benchmark queue

@adriangbot

Copy link
Copy Markdown

Hi @rluvaton, you asked to view the benchmark queue (#25931 (comment)).

Comment Repo PR User Benchmarks Status
#5929052627 apache/datafusion #25931 rluvaton ["tpch10"] running
#5929052627 apache/datafusion #25931 rluvaton ["h2o_medium"] running
#5929052627 apache/datafusion #25931 rluvaton ["clickbench_partitioned"] running
#5929070511 apache/datafusion #25931 rluvaton ["external_aggr"] running

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16-lssd (12 vCPU / 65 GiB) | Linux bench-c5929052627-2998-2d7g8 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark h2o_medium
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"

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-lssd (12 vCPU / 65 GiB) | Linux bench-c5929052627-2999-p5pvj 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"

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-lssd (12 vCPU / 65 GiB) | Linux bench-c5929070511-3000-w9rj4 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark external_aggr

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-lssd (12 vCPU / 65 GiB) | Linux bench-c5929052627-2997-tt5h5 6.12.94+ #1 SMP Wed Aug 19 07:47:20 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 add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark tpch10
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"

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-lssd (12 vCPU / 65 GiB)

Comparing add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark tpch10
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"
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 add-fully-ordered-groups-values
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ add-fully-ordered-groups-values ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │ 326.50 ms │                       326.52 ms │ no change │
│ QQuery 2  │  86.92 ms │                        90.45 ms │ no change │
│ QQuery 3  │ 212.62 ms │                       219.05 ms │ no change │
│ QQuery 4  │ 114.18 ms │                       113.00 ms │ no change │
│ QQuery 5  │ 352.57 ms │                       344.77 ms │ no change │
│ QQuery 6  │ 124.29 ms │                       125.30 ms │ no change │
│ QQuery 7  │ 436.59 ms │                       445.43 ms │ no change │
│ QQuery 8  │ 354.86 ms │                       355.50 ms │ no change │
│ QQuery 9  │ 514.25 ms │                       511.11 ms │ no change │
│ QQuery 10 │ 282.08 ms │                       293.92 ms │ no change │
│ QQuery 11 │  61.68 ms │                        62.43 ms │ no change │
│ QQuery 12 │ 148.48 ms │                       151.54 ms │ no change │
│ QQuery 13 │ 301.35 ms │                       297.96 ms │ no change │
│ QQuery 14 │ 168.35 ms │                       167.82 ms │ no change │
│ QQuery 15 │ 298.12 ms │                       298.30 ms │ no change │
│ QQuery 16 │  63.27 ms │                        64.61 ms │ no change │
│ QQuery 17 │ 581.26 ms │                       584.76 ms │ no change │
│ QQuery 18 │ 718.86 ms │                       710.80 ms │ no change │
│ QQuery 19 │ 229.34 ms │                       230.64 ms │ no change │
│ QQuery 20 │ 261.26 ms │                       267.15 ms │ no change │
│ QQuery 21 │ 661.17 ms │                       656.05 ms │ no change │
│ QQuery 22 │  60.01 ms │                        57.11 ms │ no change │
└───────────┴───────────┴─────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 6358.02ms │
│ Total Time (add-fully-ordered-groups-values)   │ 6374.20ms │
│ Average Time (HEAD)                            │  289.00ms │
│ Average Time (add-fully-ordered-groups-values) │  289.74ms │
│ Queries Faster                                 │         0 │
│ Queries Slower                                 │         0 │
│ Queries with No Change                         │        22 │
│ Queries with Failure                           │         0 │
└────────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and add-fully-ordered-groups-values
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃                               HEAD ┃    add-fully-ordered-groups-values ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │  326.50 / 328.90 ±1.46 / 330.53 ms │  326.52 / 328.82 ±1.39 / 330.13 ms │ no change │
│ QQuery 2  │     86.92 / 90.62 ±2.52 / 94.03 ms │     90.45 / 92.60 ±1.55 / 94.74 ms │ no change │
│ QQuery 3  │  212.62 / 215.46 ±2.10 / 218.92 ms │  219.05 / 223.00 ±4.92 / 232.51 ms │ no change │
│ QQuery 4  │  114.18 / 115.09 ±0.96 / 116.91 ms │  113.00 / 115.56 ±1.52 / 117.53 ms │ no change │
│ QQuery 5  │  352.57 / 356.49 ±4.38 / 364.95 ms │  344.77 / 356.00 ±8.70 / 371.52 ms │ no change │
│ QQuery 6  │  124.29 / 124.75 ±0.36 / 125.25 ms │  125.30 / 127.24 ±2.84 / 132.79 ms │ no change │
│ QQuery 7  │ 436.59 / 450.79 ±10.20 / 467.60 ms │ 445.43 / 460.73 ±11.78 / 474.50 ms │ no change │
│ QQuery 8  │  354.86 / 359.66 ±4.78 / 367.58 ms │  355.50 / 364.61 ±8.89 / 379.49 ms │ no change │
│ QQuery 9  │ 514.25 / 526.37 ±16.46 / 558.70 ms │ 511.11 / 529.50 ±20.06 / 568.19 ms │ no change │
│ QQuery 10 │  282.08 / 290.06 ±5.92 / 298.03 ms │  293.92 / 302.17 ±8.85 / 318.86 ms │ no change │
│ QQuery 11 │     61.68 / 63.12 ±0.88 / 64.25 ms │     62.43 / 63.78 ±0.80 / 64.52 ms │ no change │
│ QQuery 12 │  148.48 / 157.06 ±6.89 / 166.05 ms │  151.54 / 156.02 ±4.70 / 162.66 ms │ no change │
│ QQuery 13 │ 301.35 / 319.29 ±19.00 / 353.04 ms │  297.96 / 312.92 ±8.34 / 323.50 ms │ no change │
│ QQuery 14 │  168.35 / 173.50 ±5.38 / 180.64 ms │  167.82 / 172.33 ±3.80 / 178.43 ms │ no change │
│ QQuery 15 │  298.12 / 300.98 ±1.65 / 302.75 ms │  298.30 / 299.70 ±0.85 / 300.66 ms │ no change │
│ QQuery 16 │     63.27 / 65.56 ±1.72 / 68.16 ms │     64.61 / 65.84 ±1.40 / 68.48 ms │ no change │
│ QQuery 17 │  581.26 / 590.00 ±8.04 / 602.45 ms │  584.76 / 592.31 ±7.24 / 604.15 ms │ no change │
│ QQuery 18 │ 718.86 / 737.89 ±20.24 / 776.97 ms │ 710.80 / 745.82 ±20.59 / 773.48 ms │ no change │
│ QQuery 19 │ 229.34 / 245.65 ±13.91 / 262.89 ms │ 230.64 / 244.64 ±18.24 / 278.46 ms │ no change │
│ QQuery 20 │  261.26 / 270.48 ±6.91 / 279.51 ms │  267.15 / 274.16 ±4.89 / 280.55 ms │ no change │
│ QQuery 21 │  661.17 / 670.68 ±5.95 / 677.56 ms │  656.05 / 666.60 ±7.23 / 677.97 ms │ no change │
│ QQuery 22 │     60.01 / 62.48 ±1.72 / 64.91 ms │     57.11 / 60.00 ±2.51 / 64.07 ms │ no change │
└───────────┴────────────────────────────────────┴────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 6514.87ms │
│ Total Time (add-fully-ordered-groups-values)   │ 6554.34ms │
│ Average Time (HEAD)                            │  296.13ms │
│ Average Time (add-fully-ordered-groups-values) │  297.92ms │
│ Queries Faster                                 │         0 │
│ Queries Slower                                 │         0 │
│ Queries with No Change                         │        22 │
│ 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: 6924c6a (merge-base) | Changed: add-fully-ordered-groups-values

tpch10 — tpch_sf10

Query Base Changed Change
Query 1 31.4 MiB 30.0 MiB -4.4%
Query 2 114.3 MiB 112.5 MiB -1.6%
Query 3 108.7 MiB 110.5 MiB +1.7%
Query 4 42.5 MiB 42.5 MiB +0.0%
Query 5 135.3 MiB 135.3 MiB +0.0%
Query 6 832 B 832 B +0.0%
Query 7 965.5 MiB 965.4 MiB -0.0%
Query 8 374.2 MiB 374.2 MiB +0.0%
Query 9 1.3 GiB 1.3 GiB +0.0%
Query 10 484.9 MiB 480.1 MiB -1.0%
Query 11 41.3 MiB 59.1 MiB +43.0%
Query 12 27.1 MiB 36.2 MiB +33.3%
Query 13 126.7 MiB 125.0 MiB -1.4%
Query 14 86.9 MiB 86.9 MiB +0.0%
Query 15 69.6 MiB 69.6 MiB +0.0%
Query 16 178.3 MiB 179.7 MiB +0.8%
Query 17 164.2 MiB 166.5 MiB +1.4%
Query 18 3.7 GiB 3.7 GiB +0.0%
Query 19 9.5 MiB 9.5 MiB +0.0%
Query 20 311.8 MiB 308.1 MiB -1.2%
Query 21 422.0 MiB 424.6 MiB +0.6%
Query 22 30.3 MiB 40.2 MiB +32.7%

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
tpch10 base (6924c6a (merge-base)) 3.7 GiB 4.8 GiB 1.2 GiB 1.3×
tpch10 changed (add-fully-ordered-groups-values) 3.7 GiB 5.3 GiB 1.7 GiB 1.5×
Resource Usage

tpch10 — base (merge-base)

Metric Value
Wall time 35.0s
Peak memory 4.8 GiB
Avg memory 1.5 GiB
CPU user 332.6s
CPU sys 17.7s
Peak spill 0 B

tpch10 — branch

Metric Value
Wall time 35.0s
Peak memory 5.3 GiB
Avg memory 1.5 GiB
CPU user 333.3s
CPU sys 18.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark external_aggr
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 add-fully-ordered-groups-values
--------------------
Benchmark external_aggr.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃      HEAD ┃ add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Q1(64.0 MB)  │  51.60 ms │                        48.81 ms │ +1.06x faster │
│ Q1(32.0 MB)  │  49.08 ms │                        45.80 ms │ +1.07x faster │
│ Q1(16.0 MB)  │  50.44 ms │                        47.58 ms │ +1.06x faster │
│ Q2(512.0 MB) │ 270.15 ms │                       273.84 ms │     no change │
│ Q2(256.0 MB) │ 265.57 ms │                       271.09 ms │     no change │
│ Q2(128.0 MB) │ 244.82 ms │                       240.63 ms │     no change │
│ Q2(64.0 MB)  │ 237.81 ms │                       233.49 ms │     no change │
│ Q2(32.0 MB)  │ 300.01 ms │                       298.07 ms │     no change │
└──────────────┴───────────┴─────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 1469.47ms │
│ Total Time (add-fully-ordered-groups-values)   │ 1459.31ms │
│ Average Time (HEAD)                            │  183.68ms │
│ Average Time (add-fully-ordered-groups-values) │  182.41ms │
│ Queries Faster                                 │         3 │
│ Queries Slower                                 │         0 │
│ Queries with No Change                         │         5 │
│ Queries with Failure                           │         0 │
└────────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and add-fully-ordered-groups-values
--------------------
Benchmark external_aggr.json
--------------------
┏━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query        ┃                               HEAD ┃    add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ Q1(64.0 MB)  │     51.60 / 55.25 ±3.37 / 61.40 ms │     48.81 / 50.96 ±2.73 / 56.08 ms │ +1.08x faster │
│ Q1(32.0 MB)  │     49.08 / 51.12 ±1.24 / 52.35 ms │     45.80 / 47.16 ±1.07 / 48.43 ms │ +1.08x faster │
│ Q1(16.0 MB)  │     50.44 / 53.73 ±1.84 / 55.38 ms │     47.58 / 48.31 ±0.78 / 49.48 ms │ +1.11x faster │
│ Q2(512.0 MB) │  270.15 / 281.63 ±8.39 / 296.16 ms │  273.84 / 280.74 ±6.23 / 289.81 ms │     no change │
│ Q2(256.0 MB) │ 265.57 / 283.68 ±12.71 / 299.87 ms │ 271.09 / 287.99 ±13.24 / 302.90 ms │     no change │
│ Q2(128.0 MB) │  244.82 / 250.52 ±4.53 / 255.78 ms │ 240.63 / 251.94 ±12.05 / 272.02 ms │     no change │
│ Q2(64.0 MB)  │  237.81 / 239.40 ±1.14 / 241.37 ms │  233.49 / 237.40 ±2.40 / 240.33 ms │     no change │
│ Q2(32.0 MB)  │  300.01 / 301.62 ±1.33 / 303.43 ms │  298.07 / 301.08 ±3.32 / 307.01 ms │     no change │
└──────────────┴────────────────────────────────────┴────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 1516.95ms │
│ Total Time (add-fully-ordered-groups-values)   │ 1505.59ms │
│ Average Time (HEAD)                            │  189.62ms │
│ Average Time (add-fully-ordered-groups-values) │  188.20ms │
│ Queries Faster                                 │         3 │
│ Queries Slower                                 │         0 │
│ Queries with No Change                         │         5 │
│ 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: 6924c6a (merge-base) | Changed: add-fully-ordered-groups-values

external_aggr

Query Base Changed Change
1(64.0 MB) 35.0 MiB 36.8 MiB +5.0%
1(32.0 MB) 19.5 MiB 18.6 MiB -4.5%
1(16.0 MB) 10.0 MiB 9.2 MiB -7.8%
2(512.0 MB) 135.9 MiB 137.8 MiB +1.5%
2(256.0 MB) 97.8 MiB 97.4 MiB -0.4%
2(128.0 MB) 49.2 MiB 49.1 MiB -0.3%
2(64.0 MB) 36.4 MiB 36.4 MiB -0.0%
2(32.0 MB) 17.5 MiB 17.9 MiB +2.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
external_aggr base (6924c6a (merge-base)) 135.9 MiB 426.1 MiB 290.2 MiB 3.1×
external_aggr changed (add-fully-ordered-groups-values) 137.8 MiB 462.7 MiB 324.8 MiB 3.4×
Resource Usage

external_aggr — base (merge-base)

Metric Value
Wall time 105.1s
Peak memory 426.1 MiB
Avg memory 29.6 MiB
CPU user 25.9s
CPU sys 3.8s
Peak spill 99.2 MiB

external_aggr — branch

Metric Value
Wall time 105.0s
Peak memory 462.7 MiB
Avg memory 31.0 MiB
CPU user 25.8s
CPU sys 3.7s
Peak spill 92.4 MiB

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"
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 add-fully-ordered-groups-values
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.26 ms │                         1.26 ms │     no change │
│ QQuery 1  │   12.12 ms │                        12.01 ms │     no change │
│ QQuery 2  │   37.46 ms │                        37.52 ms │     no change │
│ QQuery 3  │   32.68 ms │                        32.08 ms │     no change │
│ QQuery 4  │  249.20 ms │                       246.00 ms │     no change │
│ QQuery 5  │  282.43 ms │                       280.10 ms │     no change │
│ QQuery 6  │    1.32 ms │                         1.32 ms │     no change │
│ QQuery 7  │   13.26 ms │                        13.34 ms │     no change │
│ QQuery 8  │  351.39 ms │                       350.63 ms │     no change │
│ QQuery 9  │  489.03 ms │                       484.54 ms │     no change │
│ QQuery 10 │   65.81 ms │                        65.41 ms │     no change │
│ QQuery 11 │   75.41 ms │                        75.59 ms │     no change │
│ QQuery 12 │  273.36 ms │                       275.48 ms │     no change │
│ QQuery 13 │  374.69 ms │                       374.28 ms │     no change │
│ QQuery 14 │  289.37 ms │                       292.06 ms │     no change │
│ QQuery 15 │  298.32 ms │                       305.05 ms │     no change │
│ QQuery 16 │  645.22 ms │                       646.52 ms │     no change │
│ QQuery 17 │  640.42 ms │                       649.44 ms │     no change │
│ QQuery 18 │ 1318.91 ms │                      1323.04 ms │     no change │
│ QQuery 19 │   28.37 ms │                        28.19 ms │     no change │
│ QQuery 20 │  527.75 ms │                       524.79 ms │     no change │
│ QQuery 21 │  519.09 ms │                       515.20 ms │     no change │
│ QQuery 22 │ 1032.30 ms │                      1023.63 ms │     no change │
│ QQuery 23 │ 3175.74 ms │                      3193.65 ms │     no change │
│ QQuery 24 │   40.96 ms │                        40.77 ms │     no change │
│ QQuery 25 │  107.54 ms │                       105.51 ms │     no change │
│ QQuery 26 │   41.54 ms │                        41.05 ms │     no change │
│ QQuery 27 │  524.74 ms │                       527.16 ms │     no change │
│ QQuery 28 │ 2853.83 ms │                      2962.69 ms │     no change │
│ QQuery 29 │   42.75 ms │                        42.75 ms │     no change │
│ QQuery 30 │  321.00 ms │                       318.52 ms │     no change │
│ QQuery 31 │  285.55 ms │                       287.83 ms │     no change │
│ QQuery 32 │ 4159.17 ms │                      4050.78 ms │     no change │
│ QQuery 33 │ 1625.77 ms │                      1617.60 ms │     no change │
│ QQuery 34 │ 1641.08 ms │                      1629.41 ms │     no change │
│ QQuery 35 │  319.47 ms │                       323.93 ms │     no change │
│ QQuery 36 │   68.99 ms │                        70.83 ms │     no change │
│ QQuery 37 │   35.53 ms │                        35.86 ms │     no change │
│ QQuery 38 │   48.44 ms │                        44.76 ms │ +1.08x faster │
│ QQuery 39 │  150.92 ms │                       151.39 ms │     no change │
│ QQuery 40 │   15.59 ms │                        14.77 ms │ +1.06x faster │
│ QQuery 41 │   14.53 ms │                        14.20 ms │     no change │
│ QQuery 42 │   13.84 ms │                        13.89 ms │     no change │
└───────────┴────────────┴─────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 23046.16ms │
│ Total Time (add-fully-ordered-groups-values)   │ 23044.80ms │
│ Average Time (HEAD)                            │   535.96ms │
│ Average Time (add-fully-ordered-groups-values) │   535.93ms │
│ Queries Faster                                 │          2 │
│ Queries Slower                                 │          0 │
│ Queries with No Change                         │         41 │
│ Queries with Failure                           │          0 │
└────────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and add-fully-ordered-groups-values
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                   HEAD ┃        add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │           1.26 / 4.15 ±5.62 / 15.40 ms │           1.26 / 4.17 ±5.62 / 15.40 ms │     no change │
│ QQuery 1  │         12.12 / 12.30 ±0.12 / 12.47 ms │         12.01 / 12.30 ±0.16 / 12.45 ms │     no change │
│ QQuery 2  │         37.46 / 37.81 ±0.28 / 38.21 ms │         37.52 / 37.73 ±0.25 / 38.18 ms │     no change │
│ QQuery 3  │         32.68 / 33.30 ±0.83 / 34.85 ms │         32.08 / 32.62 ±0.43 / 33.24 ms │     no change │
│ QQuery 4  │      249.20 / 255.48 ±4.14 / 261.60 ms │      246.00 / 255.54 ±5.75 / 262.86 ms │     no change │
│ QQuery 5  │      282.43 / 285.74 ±2.92 / 290.95 ms │      280.10 / 286.46 ±5.07 / 295.67 ms │     no change │
│ QQuery 6  │            1.32 / 1.47 ±0.22 / 1.91 ms │            1.32 / 1.47 ±0.24 / 1.94 ms │     no change │
│ QQuery 7  │         13.26 / 13.74 ±0.30 / 14.20 ms │         13.34 / 13.61 ±0.16 / 13.78 ms │     no change │
│ QQuery 8  │      351.39 / 354.73 ±2.89 / 359.87 ms │      350.63 / 354.24 ±3.50 / 360.79 ms │     no change │
│ QQuery 9  │      489.03 / 494.76 ±4.71 / 500.76 ms │      484.54 / 493.91 ±6.31 / 500.91 ms │     no change │
│ QQuery 10 │         65.81 / 67.26 ±1.74 / 70.57 ms │         65.41 / 66.23 ±0.66 / 67.07 ms │     no change │
│ QQuery 11 │         75.41 / 76.33 ±0.92 / 78.02 ms │         75.59 / 76.67 ±1.38 / 79.38 ms │     no change │
│ QQuery 12 │      273.36 / 280.25 ±5.39 / 286.68 ms │      275.48 / 281.49 ±5.11 / 287.98 ms │     no change │
│ QQuery 13 │      374.69 / 380.53 ±3.40 / 385.32 ms │     374.28 / 388.56 ±15.47 / 417.62 ms │     no change │
│ QQuery 14 │      289.37 / 295.94 ±4.88 / 303.73 ms │      292.06 / 299.29 ±6.15 / 308.12 ms │     no change │
│ QQuery 15 │      298.32 / 307.50 ±6.16 / 315.14 ms │     305.05 / 317.26 ±10.96 / 336.83 ms │     no change │
│ QQuery 16 │      645.22 / 655.92 ±8.87 / 670.27 ms │      646.52 / 655.05 ±5.43 / 663.61 ms │     no change │
│ QQuery 17 │     640.42 / 656.99 ±14.40 / 681.91 ms │     649.44 / 664.76 ±14.24 / 685.81 ms │     no change │
│ QQuery 18 │  1318.91 / 1342.44 ±12.93 / 1355.09 ms │  1323.04 / 1351.24 ±21.62 / 1378.40 ms │     no change │
│ QQuery 19 │         28.37 / 32.59 ±5.62 / 43.52 ms │        28.19 / 37.13 ±11.95 / 58.25 ms │  1.14x slower │
│ QQuery 20 │      527.75 / 536.42 ±7.74 / 549.94 ms │      524.79 / 528.87 ±5.42 / 539.35 ms │     no change │
│ QQuery 21 │     519.09 / 533.96 ±16.48 / 565.93 ms │     515.20 / 530.46 ±12.72 / 550.19 ms │     no change │
│ QQuery 22 │   1032.30 / 1041.66 ±5.29 / 1048.32 ms │  1023.63 / 1087.21 ±53.85 / 1168.72 ms │     no change │
│ QQuery 23 │ 3175.74 / 3352.28 ±101.47 / 3450.58 ms │ 3193.65 / 3443.89 ±291.06 / 3981.25 ms │     no change │
│ QQuery 24 │       40.96 / 83.62 ±39.40 / 141.83 ms │         40.77 / 41.12 ±0.31 / 41.65 ms │ +2.03x faster │
│ QQuery 25 │     107.54 / 151.03 ±81.70 / 314.35 ms │    105.51 / 227.15 ±229.97 / 686.92 ms │  1.50x slower │
│ QQuery 26 │         41.54 / 42.62 ±0.60 / 43.38 ms │         41.05 / 41.84 ±0.57 / 42.81 ms │     no change │
│ QQuery 27 │      524.74 / 529.25 ±2.88 / 532.78 ms │     527.16 / 548.11 ±27.43 / 601.97 ms │     no change │
│ QQuery 28 │  2853.83 / 2888.10 ±18.38 / 2907.17 ms │  2962.69 / 3003.61 ±50.61 / 3098.99 ms │     no change │
│ QQuery 29 │         42.75 / 49.83 ±8.58 / 61.24 ms │       42.75 / 65.62 ±34.93 / 134.15 ms │  1.32x slower │
│ QQuery 30 │      321.00 / 327.58 ±6.03 / 338.19 ms │     318.52 / 330.57 ±17.10 / 363.45 ms │     no change │
│ QQuery 31 │      285.55 / 298.97 ±7.36 / 305.97 ms │      287.83 / 305.75 ±9.27 / 313.51 ms │     no change │
│ QQuery 32 │  4159.17 / 4304.12 ±87.17 / 4404.63 ms │  4050.78 / 4229.73 ±94.71 / 4314.41 ms │     no change │
│ QQuery 33 │  1625.77 / 1702.05 ±92.97 / 1882.42 ms │  1617.60 / 1651.82 ±20.37 / 1675.50 ms │     no change │
│ QQuery 34 │  1641.08 / 1721.52 ±86.45 / 1857.54 ms │  1629.41 / 1707.33 ±79.33 / 1859.34 ms │     no change │
│ QQuery 35 │    319.47 / 456.25 ±228.86 / 912.89 ms │     323.93 / 386.64 ±82.00 / 545.32 ms │ +1.18x faster │
│ QQuery 36 │         68.99 / 72.38 ±2.29 / 75.23 ms │         70.83 / 74.47 ±2.65 / 78.13 ms │     no change │
│ QQuery 37 │         35.53 / 38.31 ±3.52 / 45.20 ms │         35.86 / 40.90 ±4.85 / 48.50 ms │  1.07x slower │
│ QQuery 38 │        48.44 / 63.34 ±17.58 / 87.96 ms │         44.76 / 48.54 ±4.22 / 55.08 ms │ +1.30x faster │
│ QQuery 39 │     150.92 / 165.38 ±13.80 / 191.30 ms │     151.39 / 164.99 ±20.03 / 204.66 ms │     no change │
│ QQuery 40 │         15.59 / 21.57 ±5.22 / 28.83 ms │         14.77 / 16.43 ±3.03 / 22.48 ms │ +1.31x faster │
│ QQuery 41 │         14.53 / 15.07 ±0.36 / 15.61 ms │         14.20 / 15.63 ±2.12 / 19.78 ms │     no change │
│ QQuery 42 │         13.84 / 13.96 ±0.09 / 14.10 ms │         13.89 / 14.09 ±0.11 / 14.19 ms │     no change │
└───────────┴────────────────────────────────────────┴────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 23998.51ms │
│ Total Time (add-fully-ordered-groups-values)   │ 24134.54ms │
│ Average Time (HEAD)                            │   558.10ms │
│ Average Time (add-fully-ordered-groups-values) │   561.27ms │
│ Queries Faster                                 │          4 │
│ Queries Slower                                 │          4 │
│ Queries with No Change                         │         35 │
│ 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: 6924c6a (merge-base) | Changed: add-fully-ordered-groups-values

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 775.0 MiB 773.0 MiB -0.2%
Query 5 1.2 GiB 1.2 GiB +0.7%
Query 6 0 B 0 B 0.0%
Query 7 60.0 MiB 60.0 MiB +0.0%
Query 8 946.2 MiB 941.3 MiB -0.5%
Query 9 593.6 MiB 551.7 MiB -7.0%
Query 10 120.1 MiB 116.8 MiB -2.8%
Query 11 121.2 MiB 121.6 MiB +0.3%
Query 12 1.4 GiB 1.3 GiB -0.6%
Query 13 1.6 GiB 1.6 GiB -0.6%
Query 14 1.3 GiB 1.3 GiB +4.3%
Query 15 1.2 GiB 1.2 GiB -1.3%
Query 16 3.5 GiB 3.4 GiB -0.8%
Query 17 3.4 GiB 3.4 GiB +0.9%
Query 18 7.9 GiB 7.9 GiB +0.1%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 3.7 MiB 3.7 MiB -0.1%
Query 22 3.4 MiB 3.4 MiB +0.4%
Query 23 3.9 GiB 3.1 GiB -21.4%
Query 24 59.1 MiB 57.7 MiB -2.5%
Query 25 161.5 MiB 160.0 MiB -1.0%
Query 26 59.0 MiB 59.7 MiB +1.1%
Query 27 2.2 MiB 2.5 MiB +9.8%
Query 28 1.8 GiB 1.8 GiB -0.3%
Query 29 624 B 624 B +0.0%
Query 30 706.4 MiB 724.3 MiB +2.5%
Query 31 1.5 GiB 1.5 GiB -0.1%
Query 32 3.6 GiB 3.6 GiB +0.2%
Query 33 7.7 GiB 7.1 GiB -7.9%
Query 34 7.2 GiB 7.4 GiB +2.0%
Query 35 607.5 MiB 596.7 MiB -1.8%
Query 36 114.2 MiB 116.0 MiB +1.5%
Query 37 6.6 MiB 6.6 MiB +0.0%
Query 38 6.0 MiB 5.5 MiB -9.0%
Query 39 297.8 MiB 296.9 MiB -0.3%
Query 40 2.0 MiB 1.8 MiB -9.2%
Query 41 3.1 MiB 3.1 MiB +0.0%
Query 42 1.6 MiB 1.7 MiB +8.7%

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 (6924c6a (merge-base)) 7.9 GiB 18.2 GiB 10.3 GiB 2.3×
clickbench_partitioned changed (add-fully-ordered-groups-values) 7.9 GiB 18.4 GiB 10.4 GiB 2.3×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 125.0s
Peak memory 18.2 GiB
Avg memory 6.0 GiB
CPU user 1170.3s
CPU sys 123.5s
Peak spill 4.2 GiB

clickbench_partitioned — branch

Metric Value
Wall time 125.0s
Peak memory 18.4 GiB
Avg memory 6.0 GiB
CPU user 1175.5s
CPU sys 127.0s
Peak spill 4.2 GiB

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing add-fully-ordered-groups-values (8dec018) to 6924c6a (merge-base) diff

Run configuration
run benchmark h2o_medium
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "16G"
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 add-fully-ordered-groups-values
--------------------
Benchmark h2o.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │  1093.87 ms │                      1016.56 ms │ +1.08x faster │
│ QQuery 2  │  2327.63 ms │                      2253.19 ms │     no change │
│ QQuery 3  │  2021.09 ms │                      1929.00 ms │     no change │
│ QQuery 4  │  1398.09 ms │                      1315.96 ms │ +1.06x faster │
│ QQuery 5  │  1887.53 ms │                      1839.49 ms │     no change │
│ QQuery 6  │  1608.79 ms │                      1532.76 ms │     no change │
│ QQuery 7  │  1855.32 ms │                      1791.01 ms │     no change │
│ QQuery 8  │  3576.58 ms │                      3385.04 ms │ +1.06x faster │
│ QQuery 9  │  7416.86 ms │                      7274.96 ms │     no change │
│ QQuery 10 │ 12366.64 ms │                     12720.57 ms │     no change │
└───────────┴─────────────┴─────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 35552.40ms │
│ Total Time (add-fully-ordered-groups-values)   │ 35058.54ms │
│ Average Time (HEAD)                            │  3555.24ms │
│ Average Time (add-fully-ordered-groups-values) │  3505.85ms │
│ Queries Faster                                 │          3 │
│ Queries Slower                                 │          0 │
│ Queries with No Change                         │          7 │
│ Queries with Failure                           │          0 │
└────────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and add-fully-ordered-groups-values
--------------------
Benchmark h2o.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                      HEAD ┃           add-fully-ordered-groups-values ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │     1093.87 / 1103.02 ±12.26 / 1120.35 ms │      1016.56 / 1019.15 ±2.93 / 1023.25 ms │ +1.08x faster │
│ QQuery 2  │     2327.63 / 2363.46 ±28.55 / 2397.49 ms │     2253.19 / 2271.28 ±12.84 / 2281.77 ms │     no change │
│ QQuery 3  │     2021.09 / 2042.59 ±15.49 / 2056.99 ms │     1929.00 / 1967.55 ±41.50 / 2025.15 ms │     no change │
│ QQuery 4  │      1398.09 / 1400.38 ±2.91 / 1404.50 ms │      1315.96 / 1321.78 ±7.47 / 1332.33 ms │ +1.06x faster │
│ QQuery 5  │     1887.53 / 1903.74 ±16.52 / 1926.42 ms │     1839.49 / 1852.42 ±10.97 / 1866.30 ms │     no change │
│ QQuery 6  │      1608.79 / 1612.55 ±4.16 / 1618.35 ms │     1532.76 / 1552.36 ±14.00 / 1564.57 ms │     no change │
│ QQuery 7  │     1855.32 / 1898.67 ±36.82 / 1945.33 ms │     1791.01 / 1810.60 ±13.85 / 1820.42 ms │     no change │
│ QQuery 8  │     3576.58 / 3623.87 ±45.40 / 3685.12 ms │     3385.04 / 3447.40 ±46.65 / 3497.22 ms │     no change │
│ QQuery 9  │     7416.86 / 7434.77 ±15.13 / 7453.86 ms │     7274.96 / 7342.44 ±55.05 / 7409.80 ms │     no change │
│ QQuery 10 │ 12366.64 / 12725.20 ±256.55 / 12952.42 ms │ 12720.57 / 12886.77 ±202.31 / 13171.56 ms │     no change │
└───────────┴───────────────────────────────────────────┴───────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                              ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                              │ 36108.27ms │
│ Total Time (add-fully-ordered-groups-values)   │ 35471.74ms │
│ Average Time (HEAD)                            │  3610.83ms │
│ Average Time (add-fully-ordered-groups-values) │  3547.17ms │
│ Queries Faster                                 │          2 │
│ Queries Slower                                 │          0 │
│ Queries with No Change                         │          8 │
│ 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: 6924c6a (merge-base) | Changed: add-fully-ordered-groups-values

h2o_medium — h2o

Query Base Changed Change
Query 1 1.9 MiB 1.9 MiB +0.0%
Query 2 4.2 GiB 4.2 GiB -0.0%
Query 3 142.3 MiB 145.3 MiB +2.1%
Query 4 4.4 MiB 4.0 MiB -9.9%
Query 5 98.1 MiB 97.4 MiB -0.7%
Query 6 1.1 GiB 1.0 GiB -5.5%
Query 7 122.9 MiB 119.8 MiB -2.6%
Query 8 3.9 GiB 3.9 GiB +0.0%
Query 9 4.7 GiB 4.7 GiB +0.2%
Query 10 5.5 GiB 5.5 GiB +0.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
h2o_medium base (6924c6a (merge-base)) 5.5 GiB 12.7 GiB 7.2 GiB 2.3×
h2o_medium changed (add-fully-ordered-groups-values) 5.5 GiB 11.9 GiB 6.5 GiB 2.2×
Resource Usage

h2o_medium — base (merge-base)

Metric Value
Wall time 110.0s
Peak memory 12.7 GiB
Avg memory 3.8 GiB
CPU user 1148.3s
CPU sys 91.2s
Peak spill 7.3 GiB

h2o_medium — branch

Metric Value
Wall time 110.0s
Peak memory 11.9 GiB
Avg memory 3.8 GiB
CPU user 1124.8s
CPU sys 92.7s
Peak spill 7.3 GiB

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

physical-plan Changes to the physical-plan crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants