Skip to content

feat(benchmarks): add dict_encoding_sweep harness - #26250

Draft
Rich-T-kid wants to merge 5 commits into
apache:mainfrom
Rich-T-kid:dict-encoding-bench
Draft

Rich-T-kid wants to merge 5 commits into
apache:mainfrom
Rich-T-kid:dict-encoding-bench

Conversation

@Rich-T-kid

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

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

None. This is benchmark and reproducibility tooling for choosing between
dictionary and Utf8View string representations.

Why

Dictionary-versus-Utf8View decisions depend on both NDV and the physical
source encoding. In particular, Parquet RLE_DICTIONARY input can preserve its
dictionary directly, but the released Arrow reader performs an additional
per-batch key-bounds scan. That made earlier DataFusion scan measurements show
Utf8View winning cases that should favor dictionary output once
apache/arrow-rs#11462 lands.

This PR makes the comparison reproducible at the operator and Parquet scan
levels, and adds a focused Criterion target that the DataFusion benchmark bot
can run on consistent hardware.

What changed

  • Added dict_encoding_sweep, a deterministic benchmark driver comparing
    Dictionary<Int32, Utf8> and Utf8View across filters, aggregations, sorts,
    projections, joins, repartitioning, limits, and coalescing operators.
  • Added a native Parquet scan matrix. Files are written from a neutral Utf8
    schema, their data-page encoding is verified, and explicit target schemas
    request dictionary or Utf8View output directly from DataSourceExec.
    Physical plans containing a representation cast are rejected.
  • Added the parquet_rle_dictionary_scan Criterion benchmark for the benchmark
    bot. It scans 1,000,000 rows from verified RLE_DICTIONARY pages at NDVs
    1, 10, 100, 1,000, 10,000, 100,000, and 500,000.
  • Temporarily pinned the Arrow workspace dependencies to Arrow PR integrate consumer tests, implement tpch query 18 to 22 #11462 at
    1a272a83469707276e7e393201da9ba75262a968. The benchmark target is committed
    separately from the pin so the bot can compare the released reader against
    the proposed optimization.
  • Updated the FixedSizeListArray offset call required by the pinned Arrow
    revision.

Parquet physical-plan construction remains outside the timed region. Every
timed drain receives a fresh physical plan because Parquet scan plans contain
one-shot stream state.

Results

RLE_DICTIONARY Parquet scan with Arrow PR #11462

The benchmark-bot run
used a dedicated Neoverse-V2 host and compared:

Each cell scans 1,000,000 rows of 16-byte strings from two 500,000-row Parquet
row groups. dict/view is changed-revision dictionary time divided by
changed-revision Utf8View time.

NDV Utf8View Dictionary dict/view Lower latency
1 394.5 us 846.5 us 2.15x Utf8View
10 1,239.7 us 730.2 us 0.59x Dictionary
100 1,337.0 us 811.1 us 0.61x Dictionary
1,000 1,468.3 us 923.8 us 0.63x Dictionary
10,000 1,667.5 us 1,099.9 us 0.66x Dictionary
100,000 3.9 ms 2.5 ms 0.65x Dictionary
500,000 6.5 ms 6.0 ms 0.93x Dictionary

The benchmark bot's leading ratios compare the two Git revisions for the same
benchmark row; they do not compare Dictionary with Utf8View. For example, the
NDV 10 Dictionary row reports baseline 1.86 versus changed 1.00, meaning the
Arrow PR makes that Dictionary benchmark 1.86x faster. The NDV 10 Utf8View
row reports baseline 1.00 versus changed 1.13, meaning the changed revision
is 13% slower for that row. To compare the two output representations, compare
their absolute times within the same revision column.

The Arrow change reduces dictionary scan latency by approximately 46%, 43%,
39%, 34%, and 17% at NDVs 10, 100, 1,000, 10,000, and 100,000 respectively.
NDV 1 and 500,000 are effectively unchanged on the benchmark host.

On the benchmark host, dictionary output is 34-41% lower latency from NDV 10
through 100,000 and still 7% lower at NDV 500,000. Utf8View wins only the NDV
1 case.

Benchmark-bot rerun

A fresh run on the same Neoverse-V2 instance class
repeated the exact immutable-ref comparison. Dict delta is the reduction in
Dictionary latency from released Arrow to Arrow PR #11462; PR Dict vs View is
the Dictionary latency reduction relative to Utf8View within the changed
revision.

NDV Dict regular Dict PR Dict delta PR Utf8View PR Dict vs View
1 852.4 us 823.3 us 3.4% faster 391.2 us Dictionary 2.10x slower
10 1,350.9 us 726.9 us 46.2% faster 1,232.8 us Dictionary 41.0% faster
100 1,422.6 us 803.8 us 43.5% faster 1,331.0 us Dictionary 39.6% faster
1,000 1,533.0 us 916.1 us 40.2% faster 1,455.8 us Dictionary 37.1% faster
10,000 1,724.1 us 1,087.9 us 36.9% faster 1,632.0 us Dictionary 33.3% faster
100,000 3.2 ms 2.5 ms ~21.9% faster 3.7 ms Dictionary ~32.4% faster
500,000 6.6 ms 5.6 ms ~15.2% faster 6.3 ms Dictionary ~11.1% faster

The rerun reproduces the strong NDV 10-10,000 result: the PR cuts Dictionary
latency by 37-46%, and Dictionary is 33-41% lower latency than Utf8View.
The exact Arrow-PR improvement at NDV 100,000 and 500,000 varies more between
bot runs, but both bot runs agree that the changed Dictionary output is faster
than Utf8View at those cardinalities. NDV 1 consistently favors Utf8View.

Local Apple M4 Max cross-check

The local comparison used the same two commits and full-LTO benchmark profile.
Each value is the geometric mean of two order-balanced, measurement-only
Criterion runs with 20 samples per cell. Negative deltas mean the Arrow PR is
faster than released Arrow.

NDV View regular View PR View delta Dict regular Dict PR Dict delta Lower latency with PR
1 205 us 206 us +0.4% 370 us 386 us +4.2% Utf8View (Dict +87.5%)
10 642 us 634 us -1.1% 851 us 381 us -55.2% Dictionary (-39.9%)
100 701 us 685 us -2.3% 885 us 436 us -50.8% Dictionary (-36.3%)
1,000 749 us 746 us -0.4% 934 us 470 us -49.7% Dictionary (-37.0%)
10,000 917 us 892 us -2.8% 1,035 us 589 us -43.1% Dictionary (-34.0%)
100,000 1,494 us 1,507 us +0.8% 1,834 us 1,425 us -22.3% Dictionary (-5.4%)
500,000 2,434 us 2,276 us -6.5% 3,988 us 3,461 us -13.2% Utf8View (Dict +52.0%)

Locally, the PR leaves Utf8View essentially unchanged through NDV 100,000
while cutting dictionary latency by 22-55% from NDV 10 through 100,000.
Dictionary therefore flips from losing every baseline cell to winning NDV
10-100,000 after the Arrow change. The 500,000-NDV local cell was noisier and
still favors Utf8View; the benchmark host instead has Dictionary ahead by 7%,
so the high-cardinality crossover is hardware-sensitive.

The tested NDVs 10 through 500,000 are not powers of two, so their RLE bit-width
bound is larger than the dictionary length and the new bounds-scan skip does not
fire. Their improvement primarily measures the PR's boolean-fold-to-min/max
validation rewrite. Power-of-two cardinalities such as 16, 128, and 1,024 are
the cases that directly exercise removal of the scan.

In-memory operators

The general sweep remains useful for downstream operator selection. The
existing measurements show that dictionaries are especially effective for
grouping, dictionary-aware projection functions, and low-cardinality filters;
the crossover varies by operator, so scan representation should not be chosen
from NDV alone when downstream work is known.

Test coverage

  • cargo test -p datafusion-benchmarks parquet_scan_matrix_uses_requested_encodings --lib
    verifies physical PLAIN and RLE_DICTIONARY pages, both native output
    representations, row counts, and the absence of casts.
  • cargo check -p datafusion-benchmarks --bench parquet_rle_dictionary_scan
  • cargo clippy -p datafusion-benchmarks --bench parquet_rle_dictionary_scan -- -D warnings
  • cargo fmt --all -- --check
  • ci/scripts/doc_prettier_check.sh
  • The pre-push workspace-wide clippy, formatting, and typo checks pass with the
    Arrow PR pin.

The benchmark-bot run completed successfully on its dedicated 12-vCPU host.

Are there any user-facing changes?

No. This PR contains benchmark tooling plus a temporary Arrow revision pin for
the before/after measurement.

@codecov-commenter

codecov-commenter commented Oct 13, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 24.37071% with 661 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.78%. Comparing base (5f21582) to head (ca23104).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
benchmarks/src/dict_encoding_sweep.rs 37.23% 343 Missing and 16 partials ⚠️
benchmarks/src/bin/dict_encoding_sweep.rs 0.00% 302 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #26250      +/-   ##
==========================================
- Coverage   82.89%   82.78%   -0.12%     
==========================================
  Files        1154     1156       +2     
  Lines      457620   458504     +884     
  Branches   457620   458504     +884     
==========================================
+ Hits       379352   379569     +217     
- Misses      55262    55910     +648     
- Partials    23006    23025      +19     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

will keep this PR in draft mode and wait for the next arrow-rs bump as apache/arrow-rs#11407 should close the gap for the sort operator, and #26186 & #25874 will remove the un-needed cast in the project operator. Good results overall, once the parquet scan speed up is in I expect dictionarys to be faster than utf8View for low to medium queries

Rich-T-kid and others added 2 commits October 16, 2026 20:20
Introduces `dict_encoding_sweep`, a focused benchmark driver that compares
`Dictionary<Int32, Utf8>` against `Utf8View` for the same operator across a
cardinality sweep. For each cell it generates two in-memory tables sharing
identical values, runs the same SQL against each, and reports median / min
/ p25 / p75 runtimes to CSV so the dict vs view crossover is directly
visible.

The harness covers scan, filter, project, aggregation, sort, join, limit,
repartition, coalesce_batches, coalesce_partitions, and spm groups. The
README section documents operator groups, flags, and CSV schema so other
contributors can reproduce the numbers without touching the harness.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Extend dict_encoding_sweep with scan-level Parquet cases that vary physical PLAIN/RLE_DICTIONARY encoding independently from Utf8View/dictionary Arrow output. Verify both source pages and decoded output types so reported cells cannot silently measure the wrong path.
Pin apache/arrow-rs#11462 at 1a272a83 so the benchmark bot can compare the released reader with the proposed key-bounds optimization. Update the FixedSizeList offset call required by that Arrow revision.
@github-actions github-actions Bot added the physical-plan Changes to the physical-plan crate label Oct 18, 2026
@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark parquet_rle_dictionary_scan

baseline:
ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6254698848-3575-9gnsw 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 72e7d68 (72e7d68) to 6096dab diff

Run configuration
run benchmark parquet_rle_dictionary_scan
baseline:
  ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"

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 72e7d68 (72e7d68) to 6096dab diff

Run configuration
run benchmark parquet_rle_dictionary_scan
baseline:
  ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
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

group                                                             HEAD                                     dict-encoding-bench
-----                                                             ----                                     -------------------
parquet_rle_dictionary_scan/rows=1000000/ndv=1/dictionary         1.00   841.7±14.21µs 1133.0 MElem/sec    1.01   846.5±16.83µs 1126.6 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1/utf8_view          1.00    396.2±2.46µs  2.4 GElem/sec      1.00    394.5±1.89µs  2.4 GElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10/dictionary        1.84   1341.6±4.37µs 710.8 MElem/sec     1.00    730.2±5.82µs 1306.0 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10/utf8_view         1.00   1087.9±1.98µs 876.6 MElem/sec     1.14   1239.7±3.23µs 769.3 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100/dictionary       1.75   1420.3±2.72µs 671.5 MElem/sec     1.00    811.1±5.44µs 1175.7 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100/utf8_view        1.00   1170.5±3.25µs 814.7 MElem/sec     1.14   1337.0±5.52µs 713.3 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1000/dictionary      1.65   1526.0±7.62µs 624.9 MElem/sec     1.00    923.8±7.50µs 1032.4 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1000/utf8_view       1.00   1309.3±6.85µs 728.4 MElem/sec     1.12   1468.3±6.66µs 649.5 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10000/dictionary     1.52   1670.5±5.98µs 570.9 MElem/sec     1.00   1099.9±8.26µs 867.0 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10000/utf8_view      1.00   1588.8±6.53µs 600.2 MElem/sec     1.05   1667.5±7.33µs 571.9 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100000/dictionary    1.17      3.0±0.03ms 320.1 MElem/sec     1.00      2.5±0.06ms 375.4 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100000/utf8_view     1.00      3.5±0.03ms 269.0 MElem/sec     1.10      3.9±0.03ms 245.1 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=500000/dictionary    1.00      6.0±0.16ms 159.5 MElem/sec     1.01      6.0±0.12ms 158.0 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=500000/utf8_view     1.00      5.7±0.07ms 167.7 MElem/sec     1.15      6.5±0.16ms 146.3 MElem/sec

Resource Usage

parquet_rle_dictionary_scan — base (merge-base)

Metric Value
Wall time 795.4s
Peak memory 151.3 MiB
Avg memory 9.8 MiB
CPU user 94.1s
CPU sys 7.2s
Peak spill 0 B

parquet_rle_dictionary_scan — branch

Metric Value
Wall time 960.4s
Peak memory 154.2 MiB
Avg memory 8.2 MiB
CPU user 91.3s
CPU sys 9.4s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark parquet_rle_dictionary_scan

baseline:
ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6269253985-3592-pmghb 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 72e7d68 (72e7d68) to 6096dab diff

Run configuration
run benchmark parquet_rle_dictionary_scan
baseline:
  ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"

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 72e7d68 (72e7d68) to 6096dab diff

Run configuration
run benchmark parquet_rle_dictionary_scan
baseline:
  ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
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

group                                                             HEAD                                     dict-encoding-bench
-----                                                             ----                                     -------------------
parquet_rle_dictionary_scan/rows=1000000/ndv=1/dictionary         1.04   852.4±18.75µs 1118.9 MElem/sec    1.00    823.3±9.26µs 1158.4 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1/utf8_view          1.00    390.8±1.43µs  2.4 GElem/sec      1.00    391.2±2.31µs  2.4 GElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10/dictionary        1.86   1350.9±2.40µs 706.0 MElem/sec     1.00    726.9±2.18µs 1311.9 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10/utf8_view         1.00   1092.2±1.70µs 873.2 MElem/sec     1.13   1232.8±3.44µs 773.6 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100/dictionary       1.77   1422.6±4.76µs 670.4 MElem/sec     1.00    803.8±3.57µs 1186.5 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100/utf8_view        1.00   1178.5±4.12µs 809.3 MElem/sec     1.13   1331.0±4.04µs 716.5 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1000/dictionary      1.67   1533.0±8.56µs 622.1 MElem/sec     1.00    916.1±6.96µs 1041.0 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=1000/utf8_view       1.00   1315.7±5.68µs 724.8 MElem/sec     1.11   1455.8±9.54µs 655.1 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10000/dictionary     1.58  1724.1±16.74µs 553.1 MElem/sec     1.00   1087.9±6.86µs 876.6 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=10000/utf8_view      1.00   1603.0±9.48µs 594.9 MElem/sec     1.02  1632.0±16.44µs 584.4 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100000/dictionary    1.32      3.2±0.07ms 294.2 MElem/sec     1.00      2.5±0.04ms 388.1 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=100000/utf8_view     1.00      3.7±0.05ms 260.8 MElem/sec     1.00      3.7±0.05ms 261.0 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=500000/dictionary    1.19      6.6±0.10ms 144.9 MElem/sec     1.00      5.6±0.22ms 171.7 MElem/sec
parquet_rle_dictionary_scan/rows=1000000/ndv=500000/utf8_view     1.00      6.3±0.09ms 152.3 MElem/sec     1.01      6.3±0.17ms 151.5 MElem/sec

Resource Usage

parquet_rle_dictionary_scan — base (merge-base)

Metric Value
Wall time 540.3s
Peak memory 146.2 MiB
Avg memory 14.6 MiB
CPU user 93.9s
CPU sys 8.7s
Peak spill 0 B

parquet_rle_dictionary_scan — branch

Metric Value
Wall time 540.3s
Peak memory 149.0 MiB
Avg memory 14.3 MiB
CPU user 91.2s
CPU sys 8.7s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmarks
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6270105681-3594-jkmv4 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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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-c6270105681-3595-wjqgb 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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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-c6270105681-3596-kn9kw 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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
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 dict-encoding-bench
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ dict-encoding-bench ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.93 ms │            40.01 ms │    no change │
│ QQuery 2  │ 19.22 ms │            18.97 ms │    no change │
│ QQuery 3  │ 28.70 ms │            28.95 ms │    no change │
│ QQuery 4  │ 17.60 ms │            17.41 ms │    no change │
│ QQuery 5  │ 36.21 ms │            36.30 ms │    no change │
│ QQuery 6  │ 13.85 ms │            13.95 ms │    no change │
│ QQuery 7  │ 42.57 ms │            45.54 ms │ 1.07x slower │
│ QQuery 8  │ 41.80 ms │            42.02 ms │    no change │
│ QQuery 9  │ 53.10 ms │            52.18 ms │    no change │
│ QQuery 10 │ 60.09 ms │            59.66 ms │    no change │
│ QQuery 11 │ 13.92 ms │            14.14 ms │    no change │
│ QQuery 12 │ 21.63 ms │            21.04 ms │    no change │
│ QQuery 13 │ 47.15 ms │            47.59 ms │    no change │
│ QQuery 14 │ 24.90 ms │            24.48 ms │    no change │
│ QQuery 15 │ 31.57 ms │            31.38 ms │    no change │
│ QQuery 16 │ 14.28 ms │            14.08 ms │    no change │
│ QQuery 17 │ 76.56 ms │            76.80 ms │    no change │
│ QQuery 18 │ 67.94 ms │            68.51 ms │    no change │
│ QQuery 19 │ 30.43 ms │            29.92 ms │    no change │
│ QQuery 20 │ 34.29 ms │            35.03 ms │    no change │
│ QQuery 21 │ 53.36 ms │            53.74 ms │    no change │
│ QQuery 22 │ 15.71 ms │            15.91 ms │    no change │
└───────────┴──────────┴─────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                  ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 785.78ms │
│ Total Time (dict-encoding-bench)   │ 787.61ms │
│ Average Time (HEAD)                │  35.72ms │
│ Average Time (dict-encoding-bench) │  35.80ms │
│ Queries Faster                     │        0 │
│ Queries Slower                     │        1 │
│ Queries with No Change             │       21 │
│ Queries with Failure               │        0 │
└────────────────────────────────────┴──────────┘

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

Comparing HEAD and dict-encoding-bench
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃            dict-encoding-bench ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 1  │ 40.93 / 42.23 ±1.37 / 44.27 ms │ 40.01 / 40.98 ±1.03 / 42.89 ms │    no change │
│ QQuery 2  │ 19.22 / 19.43 ±0.27 / 19.94 ms │ 18.97 / 19.41 ±0.39 / 20.11 ms │    no change │
│ QQuery 3  │ 28.70 / 29.17 ±0.32 / 29.67 ms │ 28.95 / 29.34 ±0.29 / 29.77 ms │    no change │
│ QQuery 4  │ 17.60 / 17.80 ±0.19 / 18.12 ms │ 17.41 / 17.89 ±0.56 / 18.96 ms │    no change │
│ QQuery 5  │ 36.21 / 36.50 ±0.22 / 36.79 ms │ 36.30 / 36.50 ±0.20 / 36.86 ms │    no change │
│ QQuery 6  │ 13.85 / 14.70 ±0.87 / 15.83 ms │ 13.95 / 14.04 ±0.11 / 14.24 ms │    no change │
│ QQuery 7  │ 42.57 / 44.24 ±1.23 / 45.62 ms │ 45.54 / 46.48 ±0.67 / 47.54 ms │ 1.05x slower │
│ QQuery 8  │ 41.80 / 42.12 ±0.20 / 42.38 ms │ 42.02 / 42.49 ±0.67 / 43.81 ms │    no change │
│ QQuery 9  │ 53.10 / 53.66 ±0.79 / 55.21 ms │ 52.18 / 53.29 ±0.79 / 54.39 ms │    no change │
│ QQuery 10 │ 60.09 / 60.81 ±0.61 / 61.92 ms │ 59.66 / 60.45 ±0.87 / 62.09 ms │    no change │
│ QQuery 11 │ 13.92 / 14.55 ±0.92 / 16.39 ms │ 14.14 / 14.26 ±0.11 / 14.44 ms │    no change │
│ QQuery 12 │ 21.63 / 21.92 ±0.16 / 22.10 ms │ 21.04 / 21.56 ±0.38 / 22.04 ms │    no change │
│ QQuery 13 │ 47.15 / 47.64 ±0.26 / 47.89 ms │ 47.59 / 48.24 ±0.76 / 49.68 ms │    no change │
│ QQuery 14 │ 24.90 / 25.22 ±0.31 / 25.71 ms │ 24.48 / 24.68 ±0.21 / 25.00 ms │    no change │
│ QQuery 15 │ 31.57 / 31.88 ±0.23 / 32.15 ms │ 31.38 / 31.78 ±0.22 / 32.04 ms │    no change │
│ QQuery 16 │ 14.28 / 14.38 ±0.07 / 14.48 ms │ 14.08 / 14.28 ±0.16 / 14.55 ms │    no change │
│ QQuery 17 │ 76.56 / 77.59 ±0.83 / 78.70 ms │ 76.80 / 78.97 ±1.94 / 81.61 ms │    no change │
│ QQuery 18 │ 67.94 / 72.37 ±3.59 / 77.38 ms │ 68.51 / 71.89 ±2.40 / 75.29 ms │    no change │
│ QQuery 19 │ 30.43 / 30.84 ±0.45 / 31.67 ms │ 29.92 / 30.99 ±1.06 / 33.00 ms │    no change │
│ QQuery 20 │ 34.29 / 34.66 ±0.19 / 34.83 ms │ 35.03 / 35.54 ±0.65 / 36.73 ms │    no change │
│ QQuery 21 │ 53.36 / 54.28 ±0.72 / 55.48 ms │ 53.74 / 54.32 ±0.55 / 55.36 ms │    no change │
│ QQuery 22 │ 15.71 / 16.83 ±1.79 / 20.39 ms │ 15.91 / 17.55 ±2.44 / 22.35 ms │    no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                  ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 802.82ms │
│ Total Time (dict-encoding-bench)   │ 804.93ms │
│ Average Time (HEAD)                │  36.49ms │
│ Average Time (dict-encoding-bench) │  36.59ms │
│ Queries Faster                     │        0 │
│ Queries Slower                     │        1 │
│ Queries with No Change             │       21 │
│ Queries with Failure               │        0 │
└────────────────────────────────────┴──────────┘

Memory Pool Peaks

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

Base: fbf77371a0512765ebf81fdc60e4a6cdceb8101f | Changed: 72e7d6871e886864d7abb533185f586ccecb938c

tpch — tpch_sf1

Query Base Changed Change
Query 1 40.1 MiB 30.1 MiB -25.0%
Query 2 23.1 MiB 23.1 MiB +0.0%
Query 3 11.5 MiB 11.5 MiB +0.0%
Query 4 22.3 MiB 22.3 MiB +0.0%
Query 5 42.7 MiB 32.9 MiB -23.0%
Query 6 832 B 832 B +0.0%
Query 7 107.7 MiB 107.6 MiB -0.1%
Query 8 34.8 MiB 34.7 MiB -0.2%
Query 9 155.6 MiB 155.6 MiB +0.0%
Query 10 62.8 MiB 62.8 MiB +0.0%
Query 11 51.7 MiB 31.3 MiB -39.4%
Query 12 20.1 MiB 12.0 MiB -40.4%
Query 13 72.3 MiB 62.3 MiB -13.8%
Query 14 7.7 MiB 7.7 MiB +0.0%
Query 15 12.8 MiB 13.2 MiB +3.1%
Query 16 42.8 MiB 33.2 MiB -22.5%
Query 17 150.3 MiB 150.3 MiB +0.0%
Query 18 123.0 MiB 123.1 MiB +0.1%
Query 19 228.6 KiB 228.6 KiB +0.0%
Query 20 59.7 MiB 60.5 MiB +1.3%
Query 21 37.7 MiB 37.7 MiB +0.0%
Query 22 31.8 MiB 22.2 MiB -30.3%

Pool accounting vs. process RSS

Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpch base (fbf77371a0512765ebf81fdc60e4a6cdceb8101f) 155.6 MiB 1.0 GiB 886.9 MiB 6.7×
tpch changed (72e7d6871e886864d7abb533185f586ccecb938c) 155.6 MiB 1.1 GiB 967.6 MiB 7.2×
Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.0 GiB
Avg memory 618.7 MiB
CPU user 21.5s
CPU sys 1.7s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 639.5 MiB
CPU user 21.4s
CPU sys 1.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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
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 dict-encoding-bench
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ dict-encoding-bench ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.23 ms │             5.12 ms │     no change │
│ QQuery 2  │   75.53 ms │            76.16 ms │     no change │
│ QQuery 3  │   28.13 ms │            27.78 ms │     no change │
│ QQuery 4  │  544.39 ms │           551.65 ms │     no change │
│ QQuery 5  │   49.79 ms │            49.16 ms │     no change │
│ QQuery 6  │   32.24 ms │            32.31 ms │     no change │
│ QQuery 7  │   71.92 ms │            70.12 ms │     no change │
│ QQuery 8  │   35.75 ms │            36.16 ms │     no change │
│ QQuery 9  │   51.49 ms │            48.83 ms │ +1.05x faster │
│ QQuery 10 │   60.72 ms │            57.73 ms │     no change │
│ QQuery 11 │  358.54 ms │           359.18 ms │     no change │
│ QQuery 12 │   24.59 ms │            25.01 ms │     no change │
│ QQuery 13 │  112.06 ms │           111.15 ms │     no change │
│ QQuery 14 │  377.24 ms │           375.33 ms │     no change │
│ QQuery 15 │   62.27 ms │            62.97 ms │     no change │
│ QQuery 16 │    5.86 ms │             5.92 ms │     no change │
│ QQuery 17 │   78.43 ms │            78.66 ms │     no change │
│ QQuery 18 │  102.46 ms │           101.64 ms │     no change │
│ QQuery 19 │   40.53 ms │            40.51 ms │     no change │
│ QQuery 20 │   30.11 ms │            30.05 ms │     no change │
│ QQuery 21 │   16.16 ms │            16.11 ms │     no change │
│ QQuery 22 │   70.20 ms │            69.82 ms │     no change │
│ QQuery 23 │  296.63 ms │           286.01 ms │     no change │
│ QQuery 24 │  184.92 ms │           183.74 ms │     no change │
│ QQuery 25 │  105.73 ms │           106.70 ms │     no change │
│ QQuery 26 │   45.30 ms │            43.68 ms │     no change │
│ QQuery 27 │    6.01 ms │             5.88 ms │     no change │
│ QQuery 28 │   60.05 ms │            59.04 ms │     no change │
│ QQuery 29 │   94.24 ms │            94.25 ms │     no change │
│ QQuery 30 │   35.26 ms │            35.01 ms │     no change │
│ QQuery 31 │  108.71 ms │           109.15 ms │     no change │
│ QQuery 32 │   19.71 ms │            19.24 ms │     no change │
│ QQuery 33 │   35.81 ms │            35.75 ms │     no change │
│ QQuery 34 │    9.30 ms │             9.05 ms │     no change │
│ QQuery 35 │   69.87 ms │            67.61 ms │     no change │
│ QQuery 36 │    5.92 ms │             5.73 ms │     no change │
│ QQuery 37 │    6.98 ms │             6.91 ms │     no change │
│ QQuery 38 │   62.87 ms │            62.65 ms │     no change │
│ QQuery 39 │   70.63 ms │            70.09 ms │     no change │
│ QQuery 40 │   21.86 ms │            21.82 ms │     no change │
│ QQuery 41 │   13.19 ms │            13.23 ms │     no change │
│ QQuery 42 │   23.01 ms │            22.94 ms │     no change │
│ QQuery 43 │    4.89 ms │             4.89 ms │     no change │
│ QQuery 44 │    8.27 ms │             8.21 ms │     no change │
│ QQuery 45 │   33.17 ms │            34.51 ms │     no change │
│ QQuery 46 │   10.90 ms │            10.86 ms │     no change │
│ QQuery 47 │  196.39 ms │           196.87 ms │     no change │
│ QQuery 48 │   89.89 ms │            88.61 ms │     no change │
│ QQuery 49 │   67.62 ms │            68.52 ms │     no change │
│ QQuery 50 │   57.10 ms │            57.37 ms │     no change │
│ QQuery 51 │   91.21 ms │            89.42 ms │     no change │
│ QQuery 52 │   23.21 ms │            23.19 ms │     no change │
│ QQuery 53 │   28.31 ms │            28.11 ms │     no change │
│ QQuery 54 │   51.24 ms │            51.07 ms │     no change │
│ QQuery 55 │   22.96 ms │            22.73 ms │     no change │
│ QQuery 56 │   36.72 ms │            36.91 ms │     no change │
│ QQuery 57 │  149.14 ms │           150.42 ms │     no change │
│ QQuery 58 │  101.24 ms │           102.26 ms │     no change │
│ QQuery 59 │  104.76 ms │           105.17 ms │     no change │
│ QQuery 60 │   37.08 ms │            37.27 ms │     no change │
│ QQuery 61 │   10.29 ms │            10.36 ms │     no change │
│ QQuery 62 │   42.96 ms │            42.56 ms │     no change │
│ QQuery 63 │   28.44 ms │            28.43 ms │     no change │
│ QQuery 64 │  356.19 ms │           356.29 ms │     no change │
│ QQuery 65 │  128.60 ms │           131.81 ms │     no change │
│ QQuery 66 │   73.06 ms │            72.14 ms │     no change │
│ QQuery 67 │  216.09 ms │           218.73 ms │     no change │
│ QQuery 68 │   11.14 ms │            10.91 ms │     no change │
│ QQuery 69 │   55.58 ms │            52.61 ms │ +1.06x faster │
│ QQuery 70 │   98.20 ms │            96.90 ms │     no change │
│ QQuery 71 │   34.16 ms │            33.75 ms │     no change │
│ QQuery 72 │ 1432.72 ms │          1515.73 ms │  1.06x slower │
│ QQuery 73 │    9.14 ms │             8.79 ms │     no change │
│ QQuery 74 │  197.72 ms │           198.55 ms │     no change │
│ QQuery 75 │  136.59 ms │           137.48 ms │     no change │
│ QQuery 76 │   33.21 ms │            33.56 ms │     no change │
│ QQuery 77 │   58.08 ms │            58.03 ms │     no change │
│ QQuery 78 │  155.74 ms │           156.73 ms │     no change │
│ QQuery 79 │   65.34 ms │            65.91 ms │     no change │
│ QQuery 80 │   92.95 ms │            93.51 ms │     no change │
│ QQuery 81 │   27.33 ms │            27.24 ms │     no change │
│ QQuery 82 │   16.44 ms │            16.52 ms │     no change │
│ QQuery 83 │   31.04 ms │            31.16 ms │     no change │
│ QQuery 84 │   30.10 ms │            30.21 ms │     no change │
│ QQuery 85 │   97.24 ms │            95.58 ms │     no change │
│ QQuery 86 │   23.67 ms │            23.85 ms │     no change │
│ QQuery 87 │   63.21 ms │            63.75 ms │     no change │
│ QQuery 88 │   57.12 ms │            57.91 ms │     no change │
│ QQuery 89 │   34.95 ms │            34.72 ms │     no change │
│ QQuery 90 │   15.31 ms │            15.72 ms │     no change │
│ QQuery 91 │   40.42 ms │            38.61 ms │     no change │
│ QQuery 92 │   27.92 ms │            27.42 ms │     no change │
│ QQuery 93 │   48.17 ms │            47.76 ms │     no change │
│ QQuery 94 │   36.13 ms │            37.93 ms │     no change │
│ QQuery 95 │   78.89 ms │            78.70 ms │     no change │
│ QQuery 96 │   22.92 ms │            23.03 ms │     no change │
│ QQuery 97 │   49.15 ms │            50.54 ms │     no change │
│ QQuery 98 │   37.00 ms │            37.92 ms │     no change │
│ QQuery 99 │   63.39 ms │            63.26 ms │     no change │
└───────────┴────────────┴─────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 8660.34ms │
│ Total Time (dict-encoding-bench)   │ 8730.88ms │
│ Average Time (HEAD)                │   87.48ms │
│ Average Time (dict-encoding-bench) │   88.19ms │
│ Queries Faster                     │         2 │
│ Queries Slower                     │         1 │
│ Queries with No Change             │        96 │
│ Queries with Failure               │         0 │
└────────────────────────────────────┴───────────┘

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

Comparing HEAD and dict-encoding-bench
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                   dict-encoding-bench ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.23 / 5.94 ±1.16 / 8.23 ms │           5.12 / 5.75 ±1.11 / 7.96 ms │     no change │
│ QQuery 2  │        75.53 / 76.37 ±0.68 / 77.42 ms │        76.16 / 76.36 ±0.14 / 76.53 ms │     no change │
│ QQuery 3  │        28.13 / 28.43 ±0.35 / 29.04 ms │        27.78 / 28.21 ±0.45 / 29.00 ms │     no change │
│ QQuery 4  │     544.39 / 551.04 ±4.68 / 557.90 ms │     551.65 / 553.73 ±1.21 / 554.83 ms │     no change │
│ QQuery 5  │        49.79 / 50.03 ±0.21 / 50.39 ms │        49.16 / 49.60 ±0.43 / 50.33 ms │     no change │
│ QQuery 6  │        32.24 / 32.60 ±0.29 / 33.09 ms │        32.31 / 32.87 ±0.53 / 33.69 ms │     no change │
│ QQuery 7  │        71.92 / 73.83 ±2.15 / 77.74 ms │        70.12 / 70.48 ±0.38 / 71.20 ms │     no change │
│ QQuery 8  │        35.75 / 36.30 ±0.52 / 36.93 ms │        36.16 / 36.85 ±0.77 / 38.23 ms │     no change │
│ QQuery 9  │        51.49 / 52.65 ±0.65 / 53.40 ms │        48.83 / 51.42 ±1.52 / 52.81 ms │     no change │
│ QQuery 10 │        60.72 / 61.20 ±0.36 / 61.62 ms │        57.73 / 58.66 ±0.52 / 59.17 ms │     no change │
│ QQuery 11 │     358.54 / 362.15 ±3.64 / 369.12 ms │     359.18 / 363.62 ±2.83 / 368.05 ms │     no change │
│ QQuery 12 │        24.59 / 24.94 ±0.37 / 25.65 ms │        25.01 / 25.36 ±0.49 / 26.28 ms │     no change │
│ QQuery 13 │     112.06 / 114.13 ±3.59 / 121.30 ms │     111.15 / 113.97 ±3.82 / 121.49 ms │     no change │
│ QQuery 14 │     377.24 / 381.12 ±2.41 / 384.70 ms │     375.33 / 378.05 ±2.82 / 382.73 ms │     no change │
│ QQuery 15 │        62.27 / 62.84 ±0.43 / 63.53 ms │        62.97 / 63.77 ±0.61 / 64.60 ms │     no change │
│ QQuery 16 │           5.86 / 6.01 ±0.18 / 6.35 ms │           5.92 / 6.01 ±0.12 / 6.26 ms │     no change │
│ QQuery 17 │        78.43 / 78.86 ±0.45 / 79.55 ms │        78.66 / 79.69 ±1.57 / 82.75 ms │     no change │
│ QQuery 18 │     102.46 / 103.30 ±0.53 / 103.76 ms │     101.64 / 103.48 ±1.50 / 106.17 ms │     no change │
│ QQuery 19 │        40.53 / 41.02 ±0.40 / 41.51 ms │        40.51 / 41.09 ±0.38 / 41.61 ms │     no change │
│ QQuery 20 │        30.11 / 30.47 ±0.29 / 30.78 ms │        30.05 / 30.56 ±0.48 / 31.14 ms │     no change │
│ QQuery 21 │        16.16 / 16.61 ±0.32 / 17.01 ms │        16.11 / 16.35 ±0.18 / 16.66 ms │     no change │
│ QQuery 22 │        70.20 / 71.28 ±1.30 / 73.39 ms │        69.82 / 70.57 ±0.68 / 71.47 ms │     no change │
│ QQuery 23 │     296.63 / 300.33 ±2.46 / 303.74 ms │     286.01 / 287.74 ±2.14 / 291.87 ms │     no change │
│ QQuery 24 │     184.92 / 189.42 ±5.29 / 199.63 ms │     183.74 / 187.23 ±5.29 / 197.72 ms │     no change │
│ QQuery 25 │     105.73 / 107.66 ±1.22 / 109.50 ms │     106.70 / 108.20 ±1.81 / 111.66 ms │     no change │
│ QQuery 26 │        45.30 / 45.61 ±0.50 / 46.60 ms │        43.68 / 43.93 ±0.35 / 44.63 ms │     no change │
│ QQuery 27 │           6.01 / 6.12 ±0.11 / 6.26 ms │           5.88 / 6.02 ±0.10 / 6.14 ms │     no change │
│ QQuery 28 │        60.05 / 60.50 ±0.36 / 60.89 ms │        59.04 / 60.05 ±0.59 / 60.71 ms │     no change │
│ QQuery 29 │       94.24 / 97.63 ±3.97 / 105.08 ms │       94.25 / 97.71 ±3.47 / 104.32 ms │     no change │
│ QQuery 30 │        35.26 / 35.77 ±0.41 / 36.47 ms │        35.01 / 35.30 ±0.31 / 35.90 ms │     no change │
│ QQuery 31 │     108.71 / 109.92 ±1.50 / 112.83 ms │     109.15 / 109.26 ±0.13 / 109.51 ms │     no change │
│ QQuery 32 │        19.71 / 20.21 ±0.45 / 20.90 ms │        19.24 / 21.18 ±1.95 / 24.42 ms │     no change │
│ QQuery 33 │        35.81 / 36.26 ±0.37 / 36.76 ms │        35.75 / 36.64 ±0.58 / 37.37 ms │     no change │
│ QQuery 34 │           9.30 / 9.51 ±0.24 / 9.97 ms │          9.05 / 9.32 ±0.36 / 10.03 ms │     no change │
│ QQuery 35 │        69.87 / 70.56 ±0.59 / 71.41 ms │        67.61 / 68.41 ±0.50 / 69.07 ms │     no change │
│ QQuery 36 │           5.92 / 6.05 ±0.20 / 6.44 ms │           5.73 / 5.85 ±0.15 / 6.13 ms │     no change │
│ QQuery 37 │           6.98 / 7.27 ±0.27 / 7.77 ms │           6.91 / 7.06 ±0.11 / 7.20 ms │     no change │
│ QQuery 38 │        62.87 / 64.03 ±1.53 / 67.02 ms │        62.65 / 63.73 ±1.19 / 66.04 ms │     no change │
│ QQuery 39 │        70.63 / 71.17 ±0.71 / 72.54 ms │        70.09 / 70.87 ±0.90 / 72.62 ms │     no change │
│ QQuery 40 │        21.86 / 22.38 ±0.50 / 23.34 ms │        21.82 / 22.23 ±0.35 / 22.64 ms │     no change │
│ QQuery 41 │        13.19 / 13.44 ±0.24 / 13.86 ms │        13.23 / 13.42 ±0.20 / 13.76 ms │     no change │
│ QQuery 42 │        23.01 / 23.19 ±0.16 / 23.45 ms │        22.94 / 23.16 ±0.13 / 23.31 ms │     no change │
│ QQuery 43 │           4.89 / 4.98 ±0.11 / 5.19 ms │           4.89 / 4.99 ±0.16 / 5.31 ms │     no change │
│ QQuery 44 │           8.27 / 8.41 ±0.12 / 8.56 ms │           8.21 / 8.36 ±0.14 / 8.62 ms │     no change │
│ QQuery 45 │        33.17 / 34.15 ±1.29 / 36.64 ms │        34.51 / 34.76 ±0.21 / 35.10 ms │     no change │
│ QQuery 46 │        10.90 / 11.19 ±0.22 / 11.45 ms │        10.86 / 10.95 ±0.08 / 11.08 ms │     no change │
│ QQuery 47 │     196.39 / 199.34 ±3.43 / 205.98 ms │     196.87 / 198.62 ±2.42 / 203.40 ms │     no change │
│ QQuery 48 │        89.89 / 91.12 ±0.80 / 92.21 ms │        88.61 / 89.42 ±0.42 / 89.74 ms │     no change │
│ QQuery 49 │        67.62 / 68.33 ±0.61 / 69.38 ms │        68.52 / 69.41 ±1.17 / 71.72 ms │     no change │
│ QQuery 50 │        57.10 / 59.15 ±2.58 / 64.12 ms │        57.37 / 59.93 ±4.26 / 68.43 ms │     no change │
│ QQuery 51 │        91.21 / 92.74 ±1.92 / 96.49 ms │        89.42 / 92.26 ±2.08 / 95.71 ms │     no change │
│ QQuery 52 │        23.21 / 23.53 ±0.25 / 23.98 ms │        23.19 / 23.49 ±0.22 / 23.83 ms │     no change │
│ QQuery 53 │        28.31 / 28.67 ±0.30 / 29.14 ms │        28.11 / 28.32 ±0.11 / 28.41 ms │     no change │
│ QQuery 54 │        51.24 / 52.42 ±0.78 / 53.68 ms │        51.07 / 53.30 ±3.89 / 61.07 ms │     no change │
│ QQuery 55 │        22.96 / 23.52 ±0.33 / 23.84 ms │        22.73 / 23.10 ±0.45 / 23.89 ms │     no change │
│ QQuery 56 │        36.72 / 37.00 ±0.23 / 37.42 ms │        36.91 / 37.41 ±0.44 / 38.14 ms │     no change │
│ QQuery 57 │     149.14 / 151.76 ±2.76 / 156.78 ms │     150.42 / 151.97 ±1.75 / 155.40 ms │     no change │
│ QQuery 58 │     101.24 / 101.84 ±0.59 / 102.83 ms │     102.26 / 103.41 ±1.03 / 105.34 ms │     no change │
│ QQuery 59 │     104.76 / 106.36 ±2.17 / 110.47 ms │     105.17 / 107.70 ±4.00 / 115.64 ms │     no change │
│ QQuery 60 │        37.08 / 37.92 ±0.49 / 38.40 ms │        37.27 / 37.79 ±0.37 / 38.23 ms │     no change │
│ QQuery 61 │        10.29 / 10.44 ±0.20 / 10.83 ms │        10.36 / 10.52 ±0.18 / 10.88 ms │     no change │
│ QQuery 62 │        42.96 / 43.34 ±0.48 / 44.28 ms │        42.56 / 42.87 ±0.23 / 43.14 ms │     no change │
│ QQuery 63 │        28.44 / 28.84 ±0.30 / 29.33 ms │        28.43 / 28.65 ±0.20 / 28.99 ms │     no change │
│ QQuery 64 │     356.19 / 362.08 ±5.26 / 371.57 ms │     356.29 / 362.44 ±5.01 / 369.75 ms │     no change │
│ QQuery 65 │     128.60 / 132.91 ±5.54 / 143.03 ms │     131.81 / 133.30 ±1.38 / 135.35 ms │     no change │
│ QQuery 66 │        73.06 / 73.52 ±0.47 / 74.36 ms │        72.14 / 72.70 ±0.50 / 73.63 ms │     no change │
│ QQuery 67 │     216.09 / 219.61 ±2.07 / 222.37 ms │     218.73 / 221.55 ±2.82 / 225.96 ms │     no change │
│ QQuery 68 │        11.14 / 11.31 ±0.22 / 11.73 ms │        10.91 / 11.11 ±0.33 / 11.76 ms │     no change │
│ QQuery 69 │        55.58 / 56.92 ±1.82 / 60.51 ms │        52.61 / 53.11 ±0.29 / 53.46 ms │ +1.07x faster │
│ QQuery 70 │       98.20 / 99.26 ±1.08 / 101.25 ms │      96.90 / 100.03 ±2.82 / 105.09 ms │     no change │
│ QQuery 71 │        34.16 / 34.42 ±0.14 / 34.55 ms │        33.75 / 34.26 ±0.46 / 35.11 ms │     no change │
│ QQuery 72 │ 1432.72 / 1552.69 ±75.46 / 1639.44 ms │ 1515.73 / 1573.30 ±43.14 / 1644.12 ms │     no change │
│ QQuery 73 │          9.14 / 9.41 ±0.34 / 10.06 ms │           8.79 / 8.97 ±0.30 / 9.56 ms │     no change │
│ QQuery 74 │     197.72 / 199.11 ±1.51 / 201.59 ms │     198.55 / 200.79 ±2.02 / 204.54 ms │     no change │
│ QQuery 75 │     136.59 / 138.76 ±2.52 / 143.41 ms │     137.48 / 139.49 ±3.13 / 145.72 ms │     no change │
│ QQuery 76 │        33.21 / 33.52 ±0.27 / 33.96 ms │        33.56 / 33.74 ±0.11 / 33.89 ms │     no change │
│ QQuery 77 │        58.08 / 58.26 ±0.10 / 58.34 ms │        58.03 / 58.32 ±0.23 / 58.65 ms │     no change │
│ QQuery 78 │     155.74 / 159.48 ±4.98 / 169.08 ms │     156.73 / 163.82 ±8.71 / 180.68 ms │     no change │
│ QQuery 79 │        65.34 / 65.75 ±0.37 / 66.36 ms │        65.91 / 66.18 ±0.26 / 66.62 ms │     no change │
│ QQuery 80 │        92.95 / 94.48 ±1.48 / 96.79 ms │       93.51 / 97.72 ±4.15 / 105.12 ms │     no change │
│ QQuery 81 │        27.33 / 27.65 ±0.37 / 28.36 ms │        27.24 / 27.59 ±0.24 / 28.00 ms │     no change │
│ QQuery 82 │        16.44 / 16.67 ±0.33 / 17.33 ms │        16.52 / 16.96 ±0.54 / 18.01 ms │     no change │
│ QQuery 83 │        31.04 / 31.32 ±0.29 / 31.83 ms │        31.16 / 31.37 ±0.15 / 31.55 ms │     no change │
│ QQuery 84 │        30.10 / 30.33 ±0.14 / 30.46 ms │        30.21 / 30.28 ±0.04 / 30.32 ms │     no change │
│ QQuery 85 │      97.24 / 101.05 ±4.44 / 109.64 ms │       95.58 / 98.52 ±3.75 / 105.65 ms │     no change │
│ QQuery 86 │        23.67 / 23.85 ±0.28 / 24.41 ms │        23.85 / 24.14 ±0.25 / 24.50 ms │     no change │
│ QQuery 87 │        63.21 / 63.39 ±0.14 / 63.57 ms │        63.75 / 64.04 ±0.24 / 64.40 ms │     no change │
│ QQuery 88 │        57.12 / 58.46 ±2.12 / 62.67 ms │        57.91 / 59.81 ±3.28 / 66.34 ms │     no change │
│ QQuery 89 │        34.95 / 35.46 ±0.45 / 36.19 ms │        34.72 / 35.26 ±0.50 / 35.86 ms │     no change │
│ QQuery 90 │        15.31 / 15.64 ±0.22 / 15.98 ms │        15.72 / 15.86 ±0.17 / 16.17 ms │     no change │
│ QQuery 91 │        40.42 / 41.06 ±0.93 / 42.87 ms │        38.61 / 38.99 ±0.33 / 39.49 ms │ +1.05x faster │
│ QQuery 92 │        27.92 / 28.45 ±0.40 / 29.00 ms │        27.42 / 28.01 ±0.48 / 28.60 ms │     no change │
│ QQuery 93 │        48.17 / 48.68 ±0.44 / 49.35 ms │        47.76 / 48.52 ±0.72 / 49.42 ms │     no change │
│ QQuery 94 │        36.13 / 38.57 ±2.23 / 41.86 ms │        37.93 / 39.24 ±0.84 / 40.11 ms │     no change │
│ QQuery 95 │        78.89 / 79.89 ±0.76 / 81.03 ms │        78.70 / 79.69 ±1.00 / 81.57 ms │     no change │
│ QQuery 96 │        22.92 / 23.30 ±0.28 / 23.63 ms │        23.03 / 23.30 ±0.26 / 23.81 ms │     no change │
│ QQuery 97 │        49.15 / 50.28 ±0.73 / 51.19 ms │        50.54 / 51.29 ±0.61 / 52.04 ms │     no change │
│ QQuery 98 │        37.00 / 37.36 ±0.33 / 37.96 ms │        37.92 / 38.63 ±0.84 / 40.13 ms │     no change │
│ QQuery 99 │        63.39 / 64.24 ±1.06 / 66.28 ms │        63.26 / 63.91 ±0.36 / 64.22 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 8890.37ms │
│ Total Time (dict-encoding-bench)   │ 8897.22ms │
│ Average Time (HEAD)                │   89.80ms │
│ Average Time (dict-encoding-bench) │   89.87ms │
│ Queries Faster                     │         2 │
│ Queries Slower                     │         0 │
│ Queries with No Change             │        97 │
│ 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: fbf77371a0512765ebf81fdc60e4a6cdceb8101f | Changed: 72e7d6871e886864d7abb533185f586ccecb938c

tpcds — tpcds_sf1

Query Base Changed Change
Query 1 139.5 KiB 135.4 KiB -2.9%
Query 2 82.8 MiB 69.9 MiB -15.6%
Query 3 1.6 MiB 2.1 MiB +27.8%
Query 4 87.7 MiB 87.8 MiB +0.0%
Query 5 13.0 MiB 13.0 MiB +0.0%
Query 6 4.4 MiB 4.1 MiB -6.2%
Query 7 3.6 MiB 3.7 MiB +2.5%
Query 8 1.8 MiB 2.1 MiB +16.0%
Query 9 32.1 KiB 32.1 KiB +0.0%
Query 10 2.0 MiB 2.0 MiB +0.0%
Query 11 58.8 MiB 58.8 MiB -0.0%
Query 12 114.4 MiB 114.4 MiB -0.0%
Query 13 13.7 MiB 13.7 MiB +0.0%
Query 14 170.9 MiB 170.9 MiB +0.0%
Query 15 4.1 MiB 4.1 MiB +0.5%
Query 16 118.6 KiB 118.6 KiB +0.0%
Query 17 41.5 MiB 41.0 MiB -1.1%
Query 18 21.2 MiB 21.2 MiB +0.1%
Query 19 1.9 MiB 1.9 MiB +1.8%
Query 20 114.6 MiB 114.6 MiB -0.0%
Query 21 3.0 MiB 2.6 MiB -12.3%
Query 22 61.8 MiB 61.8 MiB +0.0%
Query 23 211.9 MiB 212.0 MiB +0.1%
Query 24 38.7 MiB 38.7 MiB +0.0%
Query 25 99.9 MiB 99.9 MiB +0.0%
Query 26 3.4 MiB 3.4 MiB +0.0%
Query 27 1.6 MiB 1.6 MiB +0.0%
Query 28 1.3 MiB 1.2 MiB -10.0%
Query 29 104.7 MiB 104.7 MiB +0.0%
Query 30 3.7 MiB 3.8 MiB +2.4%
Query 31 13.4 MiB 13.4 MiB +0.0%
Query 32 2.7 MiB 2.9 MiB +8.1%
Query 33 4.0 MiB 4.2 MiB +3.8%
Query 34 6.0 MiB 6.0 MiB +0.0%
Query 35 16.6 MiB 16.6 MiB +0.0%
Query 36 10.3 MiB 10.3 MiB +0.0%
Query 37 3.3 MiB 3.3 MiB +0.0%
Query 38 10.8 MiB 10.8 MiB +0.0%
Query 39 53.0 MiB 52.0 MiB -2.0%
Query 40 12.2 MiB 12.2 MiB +0.0%
Query 41 2.1 MiB 2.1 MiB +0.0%
Query 42 1.2 MiB 1.2 MiB +1.8%
Query 43 275.0 KiB 275.0 KiB +0.0%
Query 44 233.2 KiB 233.2 KiB +0.0%
Query 45 4.5 MiB 4.5 MiB +0.0%
Query 46 6.2 MiB 6.2 MiB +0.0%
Query 47 128.5 MiB 138.2 MiB +7.5%
Query 48 11.8 MiB 11.4 MiB -3.2%
Query 49 42.8 MiB 51.1 MiB +19.6%
Query 50 17.7 MiB 17.3 MiB -2.1%
Query 51 178.3 MiB 178.6 MiB +0.2%
Query 52 1.3 MiB 1.5 MiB +13.9%
Query 53 30.6 MiB 30.6 MiB +0.0%
Query 54 2.2 MiB 2.1 MiB -4.2%
Query 55 1.6 MiB 1.3 MiB -23.5%
Query 56 3.3 MiB 3.0 MiB -11.3%
Query 57 120.8 MiB 120.8 MiB -0.0%
Query 58 4.4 MiB 4.4 MiB +0.0%
Query 59 11.7 MiB 11.7 MiB +0.0%
Query 60 5.0 MiB 5.0 MiB -0.2%
Query 61 1.2 MiB 985.1 KiB -16.4%
Query 62 3.7 MiB 3.3 MiB -9.0%
Query 63 20.6 MiB 20.6 MiB +0.0%
Query 64 73.8 MiB 85.6 MiB +16.0%
Query 65 29.7 MiB 29.7 MiB +0.0%
Query 66 14.9 MiB 14.9 MiB +0.0%
Query 67 137.9 MiB 137.9 MiB -0.0%
Query 68 6.2 MiB 6.2 MiB +0.0%
Query 69 3.8 MiB 3.6 MiB -5.0%
Query 70 44.0 MiB 44.0 MiB +0.0%
Query 71 30.6 MiB 40.4 MiB +32.1%
Query 72 97.2 MiB 97.2 MiB +0.0%
Query 73 6.0 MiB 6.0 MiB +0.0%
Query 74 33.6 MiB 33.6 MiB +0.0%
Query 75 20.2 MiB 20.8 MiB +3.2%
Query 76 7.1 MiB 7.9 MiB +12.0%
Query 77 4.1 MiB 4.1 MiB +0.0%
Query 78 109.4 MiB 111.5 MiB +1.9%
Query 79 8.7 MiB 6.8 MiB -22.6%
Query 80 42.0 MiB 41.2 MiB -1.9%
Query 81 4.0 MiB 4.1 MiB +1.9%
Query 82 4.9 MiB 4.9 MiB +0.0%
Query 83 8.6 MiB 8.6 MiB +0.0%
Query 84 11.9 MiB 11.9 MiB +0.0%
Query 85 17.0 MiB 17.0 MiB +0.0%
Query 86 82.1 MiB 82.1 MiB +0.0%
Query 87 12.9 MiB 12.9 MiB +0.0%
Query 88 1.5 MiB 1.8 MiB +19.5%
Query 89 112.2 MiB 112.2 MiB +0.0%
Query 90 564.1 KiB 564.1 KiB +0.0%
Query 91 31.2 MiB 31.3 MiB +0.2%
Query 92 2.7 MiB 2.7 MiB +0.0%
Query 93 15.1 MiB 15.1 MiB +0.0%
Query 94 3.4 MiB 3.7 MiB +8.2%
Query 95 17.9 MiB 17.4 MiB -3.0%
Query 96 224.7 KiB 224.7 KiB +0.0%
Query 97 33.1 MiB 33.1 MiB +0.2%
Query 98 124.4 MiB 114.7 MiB -7.8%
Query 99 1.7 MiB 1.6 MiB -4.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
tpcds base (fbf77371a0512765ebf81fdc60e4a6cdceb8101f) 211.9 MiB 1.9 GiB 1.7 GiB 9.3×
tpcds changed (72e7d6871e886864d7abb533185f586ccecb938c) 212.0 MiB 1.8 GiB 1.6 GiB 8.8×
Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 45.0s
Peak memory 1.9 GiB
Avg memory 1.4 GiB
CPU user 182.7s
CPU sys 5.1s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 45.0s
Peak memory 1.8 GiB
Avg memory 1.3 GiB
CPU user 184.1s
CPU sys 5.2s
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 72e7d68 (72e7d68) to fbf7737 diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "fbf77371a0512765ebf81fdc60e4a6cdceb8101f"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
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 dict-encoding-bench
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ dict-encoding-bench ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     1.23 ms │             1.12 ms │ +1.10x faster │
│ QQuery 1  │    11.56 ms │            11.51 ms │     no change │
│ QQuery 2  │    36.81 ms │            35.22 ms │     no change │
│ QQuery 3  │    32.72 ms │            32.54 ms │     no change │
│ QQuery 4  │   254.62 ms │           249.36 ms │     no change │
│ QQuery 5  │  1568.64 ms │          1499.79 ms │     no change │
│ QQuery 6  │     1.23 ms │             1.25 ms │     no change │
│ QQuery 7  │    13.16 ms │            12.88 ms │     no change │
│ QQuery 8  │   371.52 ms │           361.72 ms │     no change │
│ QQuery 9  │   523.24 ms │           493.79 ms │ +1.06x faster │
│ QQuery 10 │   204.17 ms │           202.11 ms │     no change │
│ QQuery 11 │   216.06 ms │           213.47 ms │     no change │
│ QQuery 12 │  1721.73 ms │          1585.08 ms │ +1.09x faster │
│ QQuery 13 │  2427.57 ms │          2203.20 ms │ +1.10x faster │
│ QQuery 14 │  1742.89 ms │          1693.24 ms │     no change │
│ QQuery 15 │   291.96 ms │           322.88 ms │  1.11x slower │
│ QQuery 16 │  3988.92 ms │          3860.63 ms │     no change │
│ QQuery 17 │  3959.12 ms │          3765.95 ms │     no change │
│ QQuery 18 │  7225.22 ms │          6915.92 ms │     no change │
│ QQuery 19 │    27.22 ms │            28.33 ms │     no change │
│ QQuery 20 │  1082.49 ms │          1065.15 ms │     no change │
│ QQuery 21 │  1376.36 ms │          1389.68 ms │     no change │
│ QQuery 22 │  3244.88 ms │          3313.15 ms │     no change │
│ QQuery 23 │  9327.40 ms │          9380.88 ms │     no change │
│ QQuery 24 │    96.54 ms │            96.61 ms │     no change │
│ QQuery 25 │   351.48 ms │           356.65 ms │     no change │
│ QQuery 26 │    96.92 ms │            98.32 ms │     no change │
│ QQuery 27 │  1168.82 ms │          1180.69 ms │     no change │
│ QQuery 28 │  3610.49 ms │          3618.10 ms │     no change │
│ QQuery 29 │    40.69 ms │            40.08 ms │     no change │
│ QQuery 30 │   575.09 ms │           556.38 ms │     no change │
│ QQuery 31 │   530.87 ms │           558.68 ms │  1.05x slower │
│ QQuery 32 │  1119.56 ms │          1101.47 ms │     no change │
│ QQuery 33 │ 14493.83 ms │         15141.34 ms │     no change │
│ QQuery 34 │ 14007.08 ms │         14443.35 ms │     no change │
│ QQuery 35 │   296.92 ms │           305.31 ms │     no change │
│ QQuery 36 │   168.80 ms │           181.44 ms │  1.07x slower │
│ QQuery 37 │    97.12 ms │            99.26 ms │     no change │
│ QQuery 38 │    78.83 ms │            86.41 ms │  1.10x slower │
│ QQuery 39 │   403.81 ms │           417.70 ms │     no change │
│ QQuery 40 │    14.42 ms │            14.68 ms │     no change │
│ QQuery 41 │    13.72 ms │            13.99 ms │     no change │
│ QQuery 42 │    13.29 ms │            13.72 ms │     no change │
└───────────┴─────────────┴─────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 76829.01ms │
│ Total Time (dict-encoding-bench)   │ 76963.01ms │
│ Average Time (HEAD)                │  1786.72ms │
│ Average Time (dict-encoding-bench) │  1789.84ms │
│ Queries Faster                     │          4 │
│ Queries Slower                     │          4 │
│ Queries with No Change             │         35 │
│ Queries with Failure               │          0 │
└────────────────────────────────────┴────────────┘

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

Comparing HEAD and dict-encoding-bench
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                      HEAD ┃                       dict-encoding-bench ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │              1.23 / 4.54 ±6.29 / 17.11 ms │              1.12 / 4.22 ±6.02 / 16.26 ms │ +1.08x faster │
│ QQuery 1  │            11.56 / 11.78 ±0.11 / 11.87 ms │            11.51 / 11.71 ±0.14 / 11.88 ms │     no change │
│ QQuery 2  │            36.81 / 37.18 ±0.29 / 37.63 ms │            35.22 / 35.87 ±0.53 / 36.81 ms │     no change │
│ QQuery 3  │            32.72 / 33.26 ±0.61 / 34.23 ms │            32.54 / 32.78 ±0.14 / 32.97 ms │     no change │
│ QQuery 4  │         254.62 / 264.44 ±7.11 / 274.81 ms │         249.36 / 256.73 ±5.88 / 266.37 ms │     no change │
│ QQuery 5  │     1568.64 / 1654.28 ±77.07 / 1790.01 ms │     1499.79 / 1570.86 ±58.25 / 1660.62 ms │ +1.05x faster │
│ QQuery 6  │               1.23 / 1.39 ±0.24 / 1.87 ms │               1.25 / 1.40 ±0.25 / 1.89 ms │     no change │
│ QQuery 7  │            13.16 / 13.44 ±0.15 / 13.59 ms │            12.88 / 13.08 ±0.14 / 13.32 ms │     no change │
│ QQuery 8  │        371.52 / 393.02 ±16.30 / 421.03 ms │         361.72 / 371.53 ±7.47 / 382.92 ms │ +1.06x faster │
│ QQuery 9  │        523.24 / 548.90 ±21.02 / 587.43 ms │        493.79 / 516.53 ±18.69 / 540.00 ms │ +1.06x faster │
│ QQuery 10 │         204.17 / 206.02 ±1.30 / 207.58 ms │         202.11 / 206.30 ±6.44 / 219.13 ms │     no change │
│ QQuery 11 │         216.06 / 218.00 ±1.07 / 218.93 ms │         213.47 / 214.72 ±1.26 / 216.72 ms │     no change │
│ QQuery 12 │     1721.73 / 1784.99 ±42.06 / 1849.78 ms │     1585.08 / 1613.92 ±20.09 / 1643.49 ms │ +1.11x faster │
│ QQuery 13 │     2427.57 / 2521.73 ±83.21 / 2649.07 ms │    2203.20 / 2484.43 ±274.41 / 2989.07 ms │     no change │
│ QQuery 14 │     1742.89 / 1852.13 ±74.77 / 1966.06 ms │     1693.24 / 1750.10 ±32.04 / 1784.92 ms │ +1.06x faster │
│ QQuery 15 │        291.96 / 315.02 ±16.09 / 333.81 ms │        322.88 / 337.32 ±18.21 / 372.47 ms │  1.07x slower │
│ QQuery 16 │     3988.92 / 4106.67 ±80.47 / 4222.51 ms │     3860.63 / 3964.31 ±62.09 / 4027.86 ms │     no change │
│ QQuery 17 │    3959.12 / 4110.77 ±101.88 / 4221.44 ms │    3765.95 / 3982.53 ±170.72 / 4236.22 ms │     no change │
│ QQuery 18 │    7225.22 / 7519.10 ±282.64 / 7934.66 ms │    6915.92 / 7291.41 ±316.30 / 7710.80 ms │     no change │
│ QQuery 19 │            27.22 / 30.61 ±6.49 / 43.58 ms │           28.33 / 49.87 ±27.31 / 95.58 ms │  1.63x slower │
│ QQuery 20 │     1082.49 / 1095.26 ±14.71 / 1123.11 ms │      1065.15 / 1077.22 ±8.23 / 1087.73 ms │     no change │
│ QQuery 21 │     1376.36 / 1422.13 ±26.88 / 1450.34 ms │     1389.68 / 1410.24 ±15.50 / 1428.36 ms │     no change │
│ QQuery 22 │     3244.88 / 3334.20 ±55.97 / 3413.46 ms │     3313.15 / 3381.13 ±54.94 / 3454.27 ms │     no change │
│ QQuery 23 │    9327.40 / 9556.60 ±192.58 / 9911.15 ms │    9380.88 / 9658.98 ±163.62 / 9863.50 ms │     no change │
│ QQuery 24 │        96.54 / 163.64 ±113.14 / 388.37 ms │         96.61 / 135.72 ±74.45 / 284.57 ms │ +1.21x faster │
│ QQuery 25 │         351.48 / 355.51 ±2.69 / 359.47 ms │         356.65 / 360.69 ±3.67 / 367.35 ms │     no change │
│ QQuery 26 │           96.92 / 99.21 ±1.34 / 101.01 ms │          98.32 / 101.23 ±2.28 / 104.71 ms │     no change │
│ QQuery 27 │     1168.82 / 1179.68 ±10.53 / 1194.74 ms │      1180.69 / 1188.60 ±5.99 / 1195.30 ms │     no change │
│ QQuery 28 │     3610.49 / 3640.71 ±31.54 / 3693.58 ms │     3618.10 / 3668.20 ±27.93 / 3699.69 ms │     no change │
│ QQuery 29 │            40.69 / 41.76 ±1.55 / 44.80 ms │          40.08 / 52.43 ±23.83 / 100.09 ms │  1.26x slower │
│ QQuery 30 │         575.09 / 586.42 ±8.12 / 595.88 ms │        556.38 / 568.20 ±12.91 / 592.99 ms │     no change │
│ QQuery 31 │        530.87 / 559.89 ±15.76 / 574.38 ms │        558.68 / 571.38 ±12.57 / 589.87 ms │     no change │
│ QQuery 32 │    1119.56 / 1260.64 ±174.37 / 1567.68 ms │    1101.47 / 1247.69 ±113.09 / 1411.29 ms │     no change │
│ QQuery 33 │ 14493.83 / 15410.99 ±939.35 / 17102.39 ms │ 15141.34 / 15446.86 ±292.67 / 15997.69 ms │     no change │
│ QQuery 34 │ 14007.08 / 15293.30 ±838.23 / 16551.62 ms │ 14443.35 / 15388.28 ±850.23 / 16950.79 ms │     no change │
│ QQuery 35 │        296.92 / 343.03 ±76.29 / 495.07 ms │        305.31 / 386.47 ±90.50 / 519.28 ms │  1.13x slower │
│ QQuery 36 │        168.80 / 189.79 ±22.20 / 232.81 ms │         181.44 / 194.04 ±7.54 / 202.45 ms │     no change │
│ QQuery 37 │          97.12 / 101.76 ±4.68 / 107.97 ms │          99.26 / 101.60 ±2.91 / 106.97 ms │     no change │
│ QQuery 38 │            78.83 / 81.83 ±1.84 / 84.26 ms │            86.41 / 87.99 ±1.06 / 89.49 ms │  1.08x slower │
│ QQuery 39 │         403.81 / 417.17 ±7.64 / 424.28 ms │         417.70 / 423.53 ±5.71 / 433.18 ms │     no change │
│ QQuery 40 │            14.42 / 14.93 ±0.41 / 15.68 ms │            14.68 / 15.17 ±0.45 / 15.99 ms │     no change │
│ QQuery 41 │            13.72 / 14.09 ±0.31 / 14.57 ms │            13.99 / 14.24 ±0.18 / 14.51 ms │     no change │
│ QQuery 42 │            13.29 / 13.38 ±0.08 / 13.52 ms │            13.72 / 13.86 ±0.17 / 14.19 ms │     no change │
└───────────┴───────────────────────────────────────────┴───────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                  ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                  │ 80803.19ms │
│ Total Time (dict-encoding-bench)   │ 80203.39ms │
│ Average Time (HEAD)                │  1879.14ms │
│ Average Time (dict-encoding-bench) │  1865.20ms │
│ Queries Faster                     │          7 │
│ Queries Slower                     │          5 │
│ Queries with No Change             │         31 │
│ 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: fbf77371a0512765ebf81fdc60e4a6cdceb8101f | Changed: 72e7d6871e886864d7abb533185f586ccecb938c

clickbench_partitioned

Query Base Changed Change
Query 0 0 B 0 B 0.0%
Query 1 104 B 104 B +0.0%
Query 2 936 B 936 B +0.0%
Query 3 312 B 312 B +0.0%
Query 4 827.4 MiB 827.3 MiB -0.0%
Query 5 1.4 GiB 1.4 GiB -0.1%
Query 6 0 B 0 B 0.0%
Query 7 50.3 MiB 50.3 MiB -0.1%
Query 8 948.5 MiB 966.0 MiB +1.9%
Query 9 594.0 MiB 552.0 MiB -7.1%
Query 10 73.4 MiB 72.3 MiB -1.6%
Query 11 77.3 MiB 74.1 MiB -4.1%
Query 12 1.6 GiB 1.6 GiB +1.2%
Query 13 1.8 GiB 2.1 GiB +12.5%
Query 14 1.9 GiB 1.8 GiB -1.8%
Query 15 1.2 GiB 1.2 GiB -3.6%
Query 16 3.3 GiB 3.6 GiB +7.1%
Query 17 3.4 GiB 3.4 GiB -1.4%
Query 18 7.6 GiB 7.2 GiB -5.1%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 1.4 MiB 1.1 MiB -18.3%
Query 22 2.4 MiB 2.6 MiB +8.5%
Query 23 11.8 MiB 12.2 MiB +2.6%
Query 24 6.0 MiB 6.7 MiB +12.2%
Query 25 6.9 MiB 6.4 MiB -7.6%
Query 26 7.7 MiB 8.3 MiB +7.2%
Query 27 2.5 MiB 2.5 MiB +1.2%
Query 28 1.7 GiB 1.7 GiB +0.8%
Query 29 624 B 624 B +0.0%
Query 30 646.9 MiB 654.5 MiB +1.2%
Query 31 1.5 GiB 1.5 GiB -3.1%
Query 32 7.1 GiB 7.1 GiB +0.0%
Query 33 12.7 GiB 12.4 GiB -2.8%
Query 34 12.3 GiB 12.7 GiB +3.4%
Query 35 674.6 MiB 668.8 MiB -0.9%
Query 36 474.1 MiB 474.1 MiB +0.0%
Query 37 8.1 MiB 8.1 MiB -0.0%
Query 38 5.7 MiB 4.8 MiB -16.1%
Query 39 450.8 MiB 450.8 MiB +0.0%
Query 40 2.3 MiB 2.3 MiB +1.9%
Query 41 3.1 MiB 3.1 MiB +0.0%
Query 42 1.8 MiB 1.7 MiB -5.5%

Pool accounting vs. process RSS

Max pool peak is the largest reservation any single query in the run reached; peak RSS covers the whole invocation, including data loading and allocator retention, and the two high-water marks need not coincide in time. The gap is therefore an upper bound on what the pool did not account for, not a measurement of it.

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
clickbench_partitioned base (fbf77371a0512765ebf81fdc60e4a6cdceb8101f) 12.7 GiB 13.1 GiB 433.6 MiB 1.0×
clickbench_partitioned changed (72e7d6871e886864d7abb533185f586ccecb938c) 12.7 GiB 12.9 GiB 236.4 MiB 1.0×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 405.1s
Peak memory 13.1 GiB
Avg memory 5.9 GiB
CPU user 3505.8s
CPU sys 220.4s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 405.1s
Peak memory 12.9 GiB
Avg memory 6.0 GiB
CPU user 3488.5s
CPU sys 223.4s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark parquet_rle_dictionary_scan

baseline:
ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6271133219-3597-2tdbl 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 72e7d68 (72e7d68) to 6096dab diff

Run configuration
run benchmark parquet_rle_dictionary_scan
baseline:
  ref: "6096dab24154d1a954e86004d5ac5a9a067f26e1"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"

Results will be posted here when complete


File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch tpcds clickbench_partitioned

env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"

baseline:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"

changed:
ref: "72e7d6871e886864d7abb533185f586ccecb938c"
env:
DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c6271356686-3599-mspjd 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 72e7d68 (72e7d68) to 72e7d68 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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-c6271356686-3598-bwhsk 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 72e7d68 (72e7d68) to 72e7d68 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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-c6271356686-3600-tqrq6 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 72e7d68 (72e7d68) to 72e7d68 diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

Hi @Rich-T-kid, thanks for the request (#26250 (comment)).

Usage:

run benchmark <name>           # run specific benchmark(s)
run benchmarks                 # run default suite
run benchmarks <name1> <name2> # run specific benchmarks

Any benchmark name is accepted: bench.sh suite names (e.g. tpch, clickbench_partitioned, wide_schema) and Criterion bench targets (e.g. sql_planner) are resolved automatically. A name that matches neither fails on the runner.

Per-side configuration (run benchmark tpch followed by):

env:
# shared env is inherited by BOTH the build and the run, so build
# flags go here. Builds default to no debuginfo for speed; opt back
# in for hung-job gdb dumps and cap jobs to stay within memory:
CARGO_PROFILE_RELEASE_DEBUG: "1"
CARGO_BUILD_JOBS: "1"
baseline:
ref: v45.0.0
env:
# per-side env only reaches the benchmark run, not the build
DATAFUSION_RUNTIME_MEMORY_LIMIT: 1G
changed:
ref: v46.0.0
env:
DATAFUSION_RUNTIME_MEMORY_LIMIT: 2G

Pod size and CPU architecture (each key is optional and keeps the default when absent; requests and limits are set equal):

resources:
cpu: "16"
memory: "128Gi"
arch: arm64          # arm64 or amd64

Independent benchmark shards (optional; 1–8, default 1):

run benchmark arrow_writer
shards: 4

Each shard builds both revisions, measures its assigned cases, and posts its own report. Resources and the job deadline apply per shard. DataFusion requests specifying a shard count greater than 1 fail with an error. Omit shards or use shards: 1 for DataFusion.


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-c6271465298-3601-mmt9c 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 72e7d68 (72e7d68) to 72e7d68 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

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-c6271465298-3602-7676t 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 72e7d68 (72e7d68) to 72e7d68 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_SCHEMA_FORCE_VIEW_TYPES: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "false"
changed:
  ref: "72e7d6871e886864d7abb533185f586ccecb938c"
  env:
    DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"

Results will be posted here when complete


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.

3 participants