Skip to content

Avoid dictionary promotion for plain Parquet pages - #26973

Closed
Rich-T-kid wants to merge 1 commit into
apache:mainfrom
Rich-T-kid:codex/dictionary-only-pages
Closed

Rich-T-kid wants to merge 1 commit into
apache:mainfrom
Rich-T-kid:codex/dictionary-only-pages

Conversation

@Rich-T-kid

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

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

What changes are included?

With enable_rle_to_dictionary=true, DataFusion currently promotes a column when any row group has a dictionary page. If later pages fall back to plain encoding, the reader rebuilds dictionaries per batch and can be much slower than the plain path.

This change only promotes a column when page encoding statistics show that every data page is dictionary encoded and a dictionary page is present. Missing evidence keeps the plain type. Directory schema inference also keeps the plain type when files disagree.

Commit: Avoid dictionary promotion for plain Parquet pages

Performance

The current hosted run compares exact SHAs with dictionary reads enabled on both sides:

  • ClickBench: 39.49 s to 22.54 s (-42.9%); 24 faster, two slower, 17 unchanged. Q28 is the only material regression at 1.14x.
  • TPC-H SF1: 779.10 ms to 762.96 ms (-2.1%).
  • TPC-DS SF1: 8.78 s to 8.50 s (-3.2%).
  • Wide schema: Q01 narrow is 1.30x faster and Q01 wide is 1.07x faster; the other cases are unchanged.

Testing

  • cargo test -p datafusion-datasource-parquet --lib (296 tests)
  • cargo test --test sqllogictests -- information_schema
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo fmt --all -- --check
  • ./dev/update_config_docs.sh

User-facing change

Columns with plain fallback pages, or without page encoding statistics, remain their plain string or binary type when dictionary reads are enabled.

@github-actions github-actions Bot added documentation Improvements or additions to documentation sqllogictest SQL Logic Tests (.slt) common Related to common crate datasource Changes to the datasource crate labels Oct 31, 2026
@Rich-T-kid
Rich-T-kid marked this pull request as draft November 2, 2026 05:06
@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark clickbench_partitioned

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

@adriangbot

Copy link
Copy Markdown

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

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

Comparing codex/dictionary-only-pages (03cf12c) to 0e314cc (merge-base) diff

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

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing codex/dictionary-only-pages (03cf12c) to 0e314cc (merge-base) diff

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

Comparing HEAD and codex_dictionary-only-pages
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃        HEAD ┃ codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │     1.13 ms │                     1.17 ms │     no change │
│ QQuery 1  │    10.85 ms │                    11.49 ms │  1.06x slower │
│ QQuery 2  │    35.98 ms │                    36.01 ms │     no change │
│ QQuery 3  │    31.04 ms │                    31.50 ms │     no change │
│ QQuery 4  │   233.17 ms │                   237.86 ms │     no change │
│ QQuery 5  │  1467.23 ms │                   275.90 ms │ +5.32x faster │
│ QQuery 6  │     1.16 ms │                     1.20 ms │     no change │
│ QQuery 7  │    11.95 ms │                    12.58 ms │  1.05x slower │
│ QQuery 8  │   335.27 ms │                   322.28 ms │     no change │
│ QQuery 9  │   466.34 ms │                   468.17 ms │     no change │
│ QQuery 10 │   197.55 ms │                   199.18 ms │     no change │
│ QQuery 11 │   208.22 ms │                   209.75 ms │     no change │
│ QQuery 12 │  1488.91 ms │                   266.40 ms │ +5.59x faster │
│ QQuery 13 │  2047.91 ms │                   367.14 ms │ +5.58x faster │
│ QQuery 14 │  1637.22 ms │                   280.61 ms │ +5.83x faster │
│ QQuery 15 │   289.73 ms │                   283.04 ms │     no change │
│ QQuery 16 │  3656.78 ms │                   612.24 ms │ +5.97x faster │
│ QQuery 17 │  3700.07 ms │                   620.79 ms │ +5.96x faster │
│ QQuery 18 │  6755.99 ms │                  1274.92 ms │ +5.30x faster │
│ QQuery 19 │    26.81 ms │                    27.03 ms │     no change │
│ QQuery 20 │  1040.49 ms │                   517.74 ms │ +2.01x faster │
│ QQuery 21 │  1363.14 ms │                   508.87 ms │ +2.68x faster │
│ QQuery 22 │  3223.31 ms │                   977.45 ms │ +3.30x faster │
│ QQuery 23 │  9118.71 ms │                  6063.67 ms │ +1.50x faster │
│ QQuery 24 │    95.74 ms │                    40.87 ms │ +2.34x faster │
│ QQuery 25 │   349.57 ms │                   105.39 ms │ +3.32x faster │
│ QQuery 26 │    96.96 ms │                    42.27 ms │ +2.29x faster │
│ QQuery 27 │  1136.95 ms │                   509.59 ms │ +2.23x faster │
│ QQuery 28 │  2823.63 ms │                  2847.95 ms │     no change │
│ QQuery 29 │    38.23 ms │                    38.63 ms │     no change │
│ QQuery 30 │   545.83 ms │                   303.43 ms │ +1.80x faster │
│ QQuery 31 │   534.22 ms │                   274.53 ms │ +1.95x faster │
│ QQuery 32 │  1049.92 ms │                   927.37 ms │ +1.13x faster │
│ QQuery 33 │ 13790.22 ms │                  1452.16 ms │ +9.50x faster │
│ QQuery 34 │ 13987.14 ms │                  1485.38 ms │ +9.42x faster │
│ QQuery 35 │   296.29 ms │                   297.11 ms │     no change │
│ QQuery 36 │   171.89 ms │                    66.24 ms │ +2.59x faster │
│ QQuery 37 │    95.35 ms │                    35.75 ms │ +2.67x faster │
│ QQuery 38 │    78.98 ms │                    39.85 ms │ +1.98x faster │
│ QQuery 39 │   399.61 ms │                   141.50 ms │ +2.82x faster │
│ QQuery 40 │    14.11 ms │                    14.67 ms │     no change │
│ QQuery 41 │    13.66 ms │                    14.04 ms │     no change │
│ QQuery 42 │    12.98 ms │                    13.39 ms │     no change │
└───────────┴─────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 72880.22ms │
│ Total Time (codex_dictionary-only-pages)   │ 22257.13ms │
│ Average Time (HEAD)                        │  1694.89ms │
│ Average Time (codex_dictionary-only-pages) │   517.61ms │
│ Queries Faster                             │         24 │
│ Queries Slower                             │          2 │
│ Queries with No Change                     │         17 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and codex_dictionary-only-pages
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                      HEAD ┃           codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │              1.13 / 4.08 ±5.82 / 15.72 ms │          1.17 / 4.18 ±5.88 / 15.93 ms │     no change │
│ QQuery 1  │            10.85 / 11.02 ±0.11 / 11.16 ms │        11.49 / 11.66 ±0.18 / 12.00 ms │  1.06x slower │
│ QQuery 2  │            35.98 / 36.41 ±0.32 / 36.94 ms │        36.01 / 36.68 ±0.77 / 38.19 ms │     no change │
│ QQuery 3  │            31.04 / 31.88 ±0.84 / 33.22 ms │        31.50 / 31.76 ±0.25 / 32.22 ms │     no change │
│ QQuery 4  │         233.17 / 239.89 ±3.48 / 242.59 ms │     237.86 / 240.88 ±2.47 / 245.10 ms │     no change │
│ QQuery 5  │     1467.23 / 1496.97 ±25.30 / 1543.56 ms │     275.90 / 281.14 ±4.15 / 286.53 ms │ +5.32x faster │
│ QQuery 6  │               1.16 / 1.33 ±0.25 / 1.82 ms │           1.20 / 1.37 ±0.25 / 1.86 ms │     no change │
│ QQuery 7  │            11.95 / 15.85 ±7.40 / 30.65 ms │        12.58 / 12.77 ±0.15 / 12.98 ms │ +1.24x faster │
│ QQuery 8  │         335.27 / 337.01 ±2.07 / 341.07 ms │     322.28 / 333.74 ±7.53 / 342.98 ms │     no change │
│ QQuery 9  │        466.34 / 483.78 ±12.82 / 504.82 ms │    468.17 / 489.51 ±11.05 / 499.75 ms │     no change │
│ QQuery 10 │         197.55 / 198.09 ±0.67 / 199.38 ms │     199.18 / 200.08 ±0.90 / 201.80 ms │     no change │
│ QQuery 11 │         208.22 / 209.34 ±0.70 / 210.28 ms │     209.75 / 210.51 ±0.70 / 211.44 ms │     no change │
│ QQuery 12 │     1488.91 / 1540.43 ±46.60 / 1599.22 ms │     266.40 / 271.00 ±5.27 / 281.13 ms │ +5.68x faster │
│ QQuery 13 │    2047.91 / 2438.75 ±344.54 / 2880.24 ms │     367.14 / 374.14 ±4.99 / 380.63 ms │ +6.52x faster │
│ QQuery 14 │     1637.22 / 1658.73 ±23.55 / 1703.12 ms │     280.61 / 287.10 ±4.53 / 293.10 ms │ +5.78x faster │
│ QQuery 15 │         289.73 / 302.42 ±8.71 / 315.69 ms │     283.04 / 287.79 ±5.31 / 295.95 ms │     no change │
│ QQuery 16 │     3656.78 / 3754.49 ±99.68 / 3916.41 ms │    612.24 / 627.48 ±12.52 / 650.50 ms │ +5.98x faster │
│ QQuery 17 │    3700.07 / 3823.48 ±103.15 / 3998.55 ms │     620.79 / 631.51 ±8.94 / 645.84 ms │ +6.05x faster │
│ QQuery 18 │    6755.99 / 7198.87 ±373.85 / 7834.20 ms │  1274.92 / 1283.86 ±8.73 / 1294.81 ms │ +5.61x faster │
│ QQuery 19 │          26.81 / 50.11 ±39.68 / 128.73 ms │        27.03 / 27.48 ±0.28 / 27.74 ms │ +1.82x faster │
│ QQuery 20 │      1040.49 / 1052.85 ±8.63 / 1067.37 ms │    517.74 / 533.28 ±20.77 / 574.32 ms │ +1.97x faster │
│ QQuery 21 │      1363.14 / 1374.98 ±8.78 / 1387.29 ms │     508.87 / 516.17 ±3.80 / 519.20 ms │ +2.66x faster │
│ QQuery 22 │     3223.31 / 3265.72 ±37.21 / 3325.26 ms │     977.45 / 984.87 ±6.98 / 993.43 ms │ +3.32x faster │
│ QQuery 23 │    9118.71 / 9397.05 ±188.19 / 9648.57 ms │ 6063.67 / 6155.10 ±48.76 / 6204.22 ms │ +1.53x faster │
│ QQuery 24 │        95.74 / 160.50 ±112.56 / 384.49 ms │        40.87 / 45.83 ±5.88 / 57.29 ms │ +3.50x faster │
│ QQuery 25 │         349.57 / 354.04 ±3.34 / 359.81 ms │     105.39 / 107.40 ±2.09 / 111.32 ms │ +3.30x faster │
│ QQuery 26 │           96.96 / 99.88 ±2.23 / 102.81 ms │        42.27 / 47.86 ±9.53 / 66.88 ms │ +2.09x faster │
│ QQuery 27 │     1136.95 / 1160.42 ±26.71 / 1210.68 ms │     509.59 / 513.20 ±5.14 / 523.35 ms │ +2.26x faster │
│ QQuery 28 │     2823.63 / 2849.08 ±35.43 / 2916.33 ms │ 2847.95 / 2897.26 ±36.81 / 2958.47 ms │     no change │
│ QQuery 29 │            38.23 / 38.91 ±0.62 / 39.73 ms │       38.63 / 48.56 ±19.69 / 87.93 ms │  1.25x slower │
│ QQuery 30 │         545.83 / 555.81 ±6.29 / 565.59 ms │     303.43 / 309.93 ±5.05 / 319.01 ms │ +1.79x faster │
│ QQuery 31 │        534.22 / 551.01 ±15.18 / 570.93 ms │    274.53 / 300.94 ±17.15 / 327.13 ms │ +1.83x faster │
│ QQuery 32 │     1049.92 / 1087.56 ±44.21 / 1169.58 ms │   927.37 / 979.85 ±38.15 / 1043.19 ms │ +1.11x faster │
│ QQuery 33 │ 13790.22 / 14304.81 ±479.37 / 15059.29 ms │ 1452.16 / 1480.67 ±20.27 / 1506.85 ms │ +9.66x faster │
│ QQuery 34 │ 13987.14 / 14716.86 ±685.63 / 15563.68 ms │ 1485.38 / 1528.77 ±39.60 / 1602.34 ms │ +9.63x faster │
│ QQuery 35 │        296.29 / 383.18 ±99.99 / 531.01 ms │    297.11 / 335.57 ±48.49 / 420.54 ms │ +1.14x faster │
│ QQuery 36 │        171.89 / 190.10 ±12.41 / 208.42 ms │        66.24 / 75.55 ±7.11 / 86.62 ms │ +2.52x faster │
│ QQuery 37 │          95.35 / 101.63 ±7.18 / 114.89 ms │       35.75 / 43.45 ±12.82 / 68.96 ms │ +2.34x faster │
│ QQuery 38 │            78.98 / 84.06 ±4.58 / 92.54 ms │        39.85 / 41.84 ±1.17 / 43.42 ms │ +2.01x faster │
│ QQuery 39 │         399.61 / 415.52 ±8.85 / 424.19 ms │     141.50 / 156.40 ±8.30 / 166.23 ms │ +2.66x faster │
│ QQuery 40 │            14.11 / 14.89 ±0.72 / 15.78 ms │        14.67 / 15.10 ±0.36 / 15.75 ms │     no change │
│ QQuery 41 │            13.66 / 14.03 ±0.71 / 15.44 ms │        14.04 / 14.47 ±0.30 / 14.80 ms │     no change │
│ QQuery 42 │            12.98 / 13.25 ±0.17 / 13.45 ms │        13.39 / 13.45 ±0.07 / 13.56 ms │     no change │
└───────────┴───────────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 76019.11ms │
│ Total Time (codex_dictionary-only-pages)   │ 22790.16ms │
│ Average Time (HEAD)                        │  1767.89ms │
│ Average Time (codex_dictionary-only-pages) │   530.00ms │
│ Queries Faster                             │         27 │
│ Queries Slower                             │          2 │
│ Queries with No Change                     │         14 │
│ 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: 0e314cc (merge-base) | Changed: codex/dictionary-only-pages

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 846.0 MiB 811.2 MiB -4.1%
Query 5 1.4 GiB 1.2 GiB -15.8%
Query 6 0 B 0 B 0.0%
Query 7 60.0 MiB 60.0 MiB +0.0%
Query 8 967.0 MiB 969.7 MiB +0.3%
Query 9 594.0 MiB 636.0 MiB +7.1%
Query 10 74.9 MiB 72.3 MiB -3.5%
Query 11 77.7 MiB 76.9 MiB -1.1%
Query 12 1.6 GiB 1.3 GiB -16.7%
Query 13 1.9 GiB 1.6 GiB -15.5%
Query 14 1.9 GiB 1.3 GiB -32.1%
Query 15 1.2 GiB 1.3 GiB +4.6%
Query 16 3.3 GiB 3.4 GiB +2.9%
Query 17 3.4 GiB 3.4 GiB -0.1%
Query 18 7.2 GiB 8.1 GiB +11.6%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 1.3 MiB 3.7 MiB +177.0%
Query 22 2.2 MiB 2.9 MiB +31.0%
Query 23 12.4 MiB 11.7 MiB -5.1%
Query 24 6.9 MiB 60.6 MiB +780.1%
Query 25 7.8 MiB 170.1 MiB +2075.2%
Query 26 8.0 MiB 64.4 MiB +700.8%
Query 27 2.5 MiB 2.2 MiB -8.9%
Query 28 1.9 GiB 1.7 GiB -10.8%
Query 29 624 B 624 B +0.0%
Query 30 648.6 MiB 697.5 MiB +7.5%
Query 31 1.4 GiB 1.5 GiB +4.9%
Query 32 7.1 GiB 7.1 GiB -0.3%
Query 33 12.7 GiB 8.0 GiB -37.5%
Query 34 12.4 GiB 8.2 GiB -33.5%
Query 35 668.8 MiB 664.8 MiB -0.6%
Query 36 474.1 MiB 121.0 MiB -74.5%
Query 37 8.1 MiB 7.3 MiB -10.3%
Query 38 5.3 MiB 5.8 MiB +10.2%
Query 39 450.8 MiB 296.7 MiB -34.2%
Query 40 2.6 MiB 2.3 MiB -11.5%
Query 41 3.3 MiB 3.3 MiB +0.0%
Query 42 1.7 MiB 2.0 MiB +17.3%

Pool accounting vs. process RSS

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

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
clickbench_partitioned base (0e314cc (merge-base)) 12.7 GiB 12.6 GiB −115.7 MiB 1.0×
clickbench_partitioned changed (codex/dictionary-only-pages) 8.2 GiB 12.7 GiB 4.5 GiB 1.5×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 385.1s
Peak memory 12.6 GiB
Avg memory 5.9 GiB
CPU user 3307.2s
CPU sys 206.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 115.0s
Peak memory 12.7 GiB
Avg memory 4.6 GiB
CPU user 1183.5s
CPU sys 73.7s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid Rich-T-kid closed this Nov 3, 2026
@Rich-T-kid Rich-T-kid reopened this Nov 9, 2026
@Rich-T-kid
Rich-T-kid force-pushed the codex/dictionary-only-pages branch from 03cf12c to e66caad Compare November 9, 2026 13:29
@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

run benchmark tpch tpcds clickbench_partitioned wide_schema

env:
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"

@adriangbot

Copy link
Copy Markdown

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

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark wide_schema
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"

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-c6741294042-4669-72pfw 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"

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-c6741294042-4668-dqwlg 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"

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-c6741294042-4667-9cg2c 6.12.105+ #1 SMP Sat Sep 19 07:55:25 UTC 2026 aarch64 GNU/Linux

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"

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 e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"
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 codex_dictionary-only-pages
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 39.80 ms │                    39.83 ms │     no change │
│ QQuery 2  │ 19.14 ms │                    19.33 ms │     no change │
│ QQuery 3  │ 28.88 ms │                    29.28 ms │     no change │
│ QQuery 4  │ 17.47 ms │                    17.28 ms │     no change │
│ QQuery 5  │ 35.58 ms │                    35.79 ms │     no change │
│ QQuery 6  │ 13.77 ms │                    13.99 ms │     no change │
│ QQuery 7  │ 42.61 ms │                    43.50 ms │     no change │
│ QQuery 8  │ 41.49 ms │                    40.95 ms │     no change │
│ QQuery 9  │ 53.44 ms │                    49.79 ms │ +1.07x faster │
│ QQuery 10 │ 61.26 ms │                    48.38 ms │ +1.27x faster │
│ QQuery 11 │ 14.43 ms │                    14.12 ms │     no change │
│ QQuery 12 │ 21.42 ms │                    21.10 ms │     no change │
│ QQuery 13 │ 48.82 ms │                    41.96 ms │ +1.16x faster │
│ QQuery 14 │ 24.03 ms │                    24.58 ms │     no change │
│ QQuery 15 │ 31.94 ms │                    31.86 ms │     no change │
│ QQuery 16 │ 13.97 ms │                    13.77 ms │     no change │
│ QQuery 17 │ 72.21 ms │                    71.48 ms │     no change │
│ QQuery 18 │ 63.48 ms │                    69.77 ms │  1.10x slower │
│ QQuery 19 │ 29.83 ms │                    30.17 ms │     no change │
│ QQuery 20 │ 34.76 ms │                    33.07 ms │     no change │
│ QQuery 21 │ 54.60 ms │                    56.66 ms │     no change │
│ QQuery 22 │ 16.17 ms │                    16.29 ms │     no change │
└───────────┴──────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 779.10ms │
│ Total Time (codex_dictionary-only-pages)   │ 762.96ms │
│ Average Time (HEAD)                        │  35.41ms │
│ Average Time (codex_dictionary-only-pages) │  34.68ms │
│ Queries Faster                             │        3 │
│ Queries Slower                             │        1 │
│ Queries with No Change                     │       18 │
│ Queries with Failure                       │        0 │
└────────────────────────────────────────────┴──────────┘

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

Comparing HEAD and codex_dictionary-only-pages
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃    codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 39.80 / 41.42 ±1.22 / 42.99 ms │ 39.83 / 40.62 ±1.20 / 43.02 ms │     no change │
│ QQuery 2  │ 19.14 / 19.70 ±0.91 / 21.52 ms │ 19.33 / 19.82 ±0.71 / 21.24 ms │     no change │
│ QQuery 3  │ 28.88 / 29.09 ±0.19 / 29.36 ms │ 29.28 / 30.12 ±1.01 / 31.51 ms │     no change │
│ QQuery 4  │ 17.47 / 17.87 ±0.56 / 18.98 ms │ 17.28 / 17.67 ±0.64 / 18.94 ms │     no change │
│ QQuery 5  │ 35.58 / 36.08 ±0.50 / 36.97 ms │ 35.79 / 37.02 ±1.21 / 39.27 ms │     no change │
│ QQuery 6  │ 13.77 / 13.86 ±0.06 / 13.96 ms │ 13.99 / 14.41 ±0.62 / 15.64 ms │     no change │
│ QQuery 7  │ 42.61 / 44.94 ±1.71 / 46.92 ms │ 43.50 / 45.32 ±1.03 / 46.33 ms │     no change │
│ QQuery 8  │ 41.49 / 41.92 ±0.39 / 42.65 ms │ 40.95 / 41.84 ±1.44 / 44.71 ms │     no change │
│ QQuery 9  │ 53.44 / 53.77 ±0.26 / 54.04 ms │ 49.79 / 50.76 ±0.94 / 52.43 ms │ +1.06x faster │
│ QQuery 10 │ 61.26 / 61.69 ±0.51 / 62.58 ms │ 48.38 / 48.96 ±0.48 / 49.65 ms │ +1.26x faster │
│ QQuery 11 │ 14.43 / 14.59 ±0.11 / 14.75 ms │ 14.12 / 14.27 ±0.12 / 14.47 ms │     no change │
│ QQuery 12 │ 21.42 / 22.09 ±0.57 / 22.90 ms │ 21.10 / 21.34 ±0.26 / 21.76 ms │     no change │
│ QQuery 13 │ 48.82 / 49.73 ±0.84 / 51.32 ms │ 41.96 / 43.99 ±3.09 / 49.98 ms │ +1.13x faster │
│ QQuery 14 │ 24.03 / 24.41 ±0.24 / 24.68 ms │ 24.58 / 24.86 ±0.15 / 24.99 ms │     no change │
│ QQuery 15 │ 31.94 / 32.58 ±0.73 / 33.93 ms │ 31.86 / 32.49 ±0.73 / 33.91 ms │     no change │
│ QQuery 16 │ 13.97 / 14.21 ±0.27 / 14.71 ms │ 13.77 / 13.95 ±0.19 / 14.19 ms │     no change │
│ QQuery 17 │ 72.21 / 73.73 ±1.11 / 75.13 ms │ 71.48 / 73.25 ±1.38 / 75.62 ms │     no change │
│ QQuery 18 │ 63.48 / 68.57 ±3.76 / 72.52 ms │ 69.77 / 70.87 ±1.12 / 72.68 ms │     no change │
│ QQuery 19 │ 29.83 / 30.12 ±0.28 / 30.64 ms │ 30.17 / 30.79 ±1.10 / 32.98 ms │     no change │
│ QQuery 20 │ 34.76 / 35.18 ±0.24 / 35.51 ms │ 33.07 / 33.82 ±0.67 / 35.05 ms │     no change │
│ QQuery 21 │ 54.60 / 55.54 ±0.80 / 56.80 ms │ 56.66 / 57.78 ±0.98 / 59.12 ms │     no change │
│ QQuery 22 │ 16.17 / 16.85 ±1.14 / 19.12 ms │ 16.29 / 16.55 ±0.17 / 16.80 ms │     no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 797.93ms │
│ Total Time (codex_dictionary-only-pages)   │ 780.50ms │
│ Average Time (HEAD)                        │  36.27ms │
│ Average Time (codex_dictionary-only-pages) │  35.48ms │
│ Queries Faster                             │        3 │
│ Queries Slower                             │        0 │
│ Queries with No Change                     │       19 │
│ 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: b8534c7fd836f23e99f3f95fccea53cd7e167bff | Changed: e66caad9042cf570a605da822e480a02845360b9

tpch — tpch_sf1

Query Base Changed Change
Query 1 30.2 MiB 40.1 MiB +33.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 32.2 MiB +44.6%
Query 5 52.8 MiB 42.8 MiB -19.0%
Query 6 832 B 832 B +0.0%
Query 7 107.6 MiB 107.6 MiB +0.0%
Query 8 34.0 MiB 39.8 MiB +17.1%
Query 9 155.6 MiB 155.6 MiB +0.0%
Query 10 53.3 MiB 47.4 MiB -11.1%
Query 11 71.7 MiB 61.5 MiB -14.2%
Query 12 12.6 MiB 12.6 MiB +0.0%
Query 13 42.7 MiB 72.3 MiB +69.3%
Query 14 7.7 MiB 7.7 MiB +0.0%
Query 15 12.9 MiB 12.7 MiB -1.6%
Query 16 33.3 MiB 33.2 MiB -0.2%
Query 17 150.3 MiB 150.3 MiB +0.0%
Query 18 127.5 MiB 127.6 MiB +0.1%
Query 19 228.6 KiB 228.6 KiB +0.0%
Query 20 60.3 MiB 67.5 MiB +11.9%
Query 21 37.7 MiB 37.7 MiB +0.0%
Query 22 31.8 MiB 32.0 MiB +0.6%

Pool accounting vs. process RSS

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

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
tpch base (b8534c7fd836f23e99f3f95fccea53cd7e167bff) 155.6 MiB 1.2 GiB 1.0 GiB 7.6×
tpch changed (e66caad9042cf570a605da822e480a02845360b9) 155.6 MiB 1.1 GiB 1014.7 MiB 7.5×
Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 1.2 GiB
Avg memory 604.8 MiB
CPU user 21.0s
CPU sys 1.8s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 485.5 MiB
CPU user 20.5s
CPU sys 1.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"
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 codex_dictionary-only-pages
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.23 ms │                     5.15 ms │     no change │
│ QQuery 2  │   75.70 ms │                    75.56 ms │     no change │
│ QQuery 3  │   28.50 ms │                    28.36 ms │     no change │
│ QQuery 4  │  561.88 ms │                   408.49 ms │ +1.38x faster │
│ QQuery 5  │   49.15 ms │                    49.10 ms │     no change │
│ QQuery 6  │   32.83 ms │                    32.88 ms │     no change │
│ QQuery 7  │   68.89 ms │                    69.41 ms │     no change │
│ QQuery 8  │   37.32 ms │                    37.35 ms │     no change │
│ QQuery 9  │   50.75 ms │                    49.83 ms │     no change │
│ QQuery 10 │   57.44 ms │                    57.72 ms │     no change │
│ QQuery 11 │  370.98 ms │                   254.47 ms │ +1.46x faster │
│ QQuery 12 │   24.82 ms │                    27.74 ms │  1.12x slower │
│ QQuery 13 │  109.86 ms │                   109.51 ms │     no change │
│ QQuery 14 │  373.25 ms │                   371.40 ms │     no change │
│ QQuery 15 │   51.15 ms │                    50.63 ms │     no change │
│ QQuery 16 │    5.88 ms │                     5.98 ms │     no change │
│ QQuery 17 │   75.08 ms │                    74.38 ms │     no change │
│ QQuery 18 │  100.62 ms │                   102.46 ms │     no change │
│ QQuery 19 │   40.28 ms │                    40.56 ms │     no change │
│ QQuery 20 │   30.41 ms │                    33.05 ms │  1.09x slower │
│ QQuery 21 │   16.63 ms │                    16.47 ms │     no change │
│ QQuery 22 │   68.02 ms │                    67.81 ms │     no change │
│ QQuery 23 │  286.06 ms │                   285.72 ms │     no change │
│ QQuery 24 │  185.78 ms │                   183.94 ms │     no change │
│ QQuery 25 │  102.18 ms │                   101.83 ms │     no change │
│ QQuery 26 │   43.70 ms │                    43.55 ms │     no change │
│ QQuery 27 │    5.99 ms │                     5.82 ms │     no change │
│ QQuery 28 │   56.11 ms │                    55.04 ms │     no change │
│ QQuery 29 │   90.62 ms │                    91.25 ms │     no change │
│ QQuery 30 │   34.96 ms │                    31.91 ms │ +1.10x faster │
│ QQuery 31 │  106.90 ms │                   107.10 ms │     no change │
│ QQuery 32 │   19.83 ms │                    19.38 ms │     no change │
│ QQuery 33 │   35.83 ms │                    35.48 ms │     no change │
│ QQuery 34 │    9.12 ms │                     9.06 ms │     no change │
│ QQuery 35 │   68.41 ms │                    68.21 ms │     no change │
│ QQuery 36 │    5.57 ms │                     5.51 ms │     no change │
│ QQuery 37 │    7.25 ms │                     6.51 ms │ +1.11x faster │
│ QQuery 38 │   62.95 ms │                    62.96 ms │     no change │
│ QQuery 39 │   71.01 ms │                    70.00 ms │     no change │
│ QQuery 40 │   22.00 ms │                    22.21 ms │     no change │
│ QQuery 41 │   13.36 ms │                    13.25 ms │     no change │
│ QQuery 42 │   23.16 ms │                    23.24 ms │     no change │
│ QQuery 43 │    4.70 ms │                     4.60 ms │     no change │
│ QQuery 44 │    8.32 ms │                     8.12 ms │     no change │
│ QQuery 45 │   34.39 ms │                    34.72 ms │     no change │
│ QQuery 46 │   10.64 ms │                    10.80 ms │     no change │
│ QQuery 47 │  197.54 ms │                   198.96 ms │     no change │
│ QQuery 48 │   88.85 ms │                    89.23 ms │     no change │
│ QQuery 49 │   67.23 ms │                    67.25 ms │     no change │
│ QQuery 50 │   55.56 ms │                    56.02 ms │     no change │
│ QQuery 51 │   91.30 ms │                    93.50 ms │     no change │
│ QQuery 52 │   23.52 ms │                    23.83 ms │     no change │
│ QQuery 53 │   28.89 ms │                    28.67 ms │     no change │
│ QQuery 54 │   52.37 ms │                    52.04 ms │     no change │
│ QQuery 55 │   23.19 ms │                    22.76 ms │     no change │
│ QQuery 56 │   37.02 ms │                    36.94 ms │     no change │
│ QQuery 57 │  149.35 ms │                   149.07 ms │     no change │
│ QQuery 58 │  102.19 ms │                   101.56 ms │     no change │
│ QQuery 59 │  106.10 ms │                   105.49 ms │     no change │
│ QQuery 60 │   36.94 ms │                    37.40 ms │     no change │
│ QQuery 61 │   10.12 ms │                    10.08 ms │     no change │
│ QQuery 62 │   37.19 ms │                    37.56 ms │     no change │
│ QQuery 63 │   28.23 ms │                    29.04 ms │     no change │
│ QQuery 64 │  348.72 ms │                   349.93 ms │     no change │
│ QQuery 65 │   74.26 ms │                    72.91 ms │     no change │
│ QQuery 66 │   70.60 ms │                    70.69 ms │     no change │
│ QQuery 67 │  221.39 ms │                   219.92 ms │     no change │
│ QQuery 68 │   10.96 ms │                    10.96 ms │     no change │
│ QQuery 69 │   52.94 ms │                    53.38 ms │     no change │
│ QQuery 70 │   95.58 ms │                    95.95 ms │     no change │
│ QQuery 71 │   34.30 ms │                    34.13 ms │     no change │
│ QQuery 72 │ 1520.53 ms │                  1557.28 ms │     no change │
│ QQuery 73 │    8.87 ms │                     8.65 ms │     no change │
│ QQuery 74 │  238.06 ms │                   188.81 ms │ +1.26x faster │
│ QQuery 75 │  134.76 ms │                   135.75 ms │     no change │
│ QQuery 76 │   33.18 ms │                    33.63 ms │     no change │
│ QQuery 77 │   57.62 ms │                    57.89 ms │     no change │
│ QQuery 78 │  254.79 ms │                   257.89 ms │     no change │
│ QQuery 79 │   66.73 ms │                    65.82 ms │     no change │
│ QQuery 80 │   90.95 ms │                    91.05 ms │     no change │
│ QQuery 81 │   27.24 ms │                    26.49 ms │     no change │
│ QQuery 82 │   16.21 ms │                    15.87 ms │     no change │
│ QQuery 83 │   31.68 ms │                    31.35 ms │     no change │
│ QQuery 84 │   30.13 ms │                    29.16 ms │     no change │
│ QQuery 85 │   93.49 ms │                    92.91 ms │     no change │
│ QQuery 86 │   23.33 ms │                    23.69 ms │     no change │
│ QQuery 87 │   63.31 ms │                    63.84 ms │     no change │
│ QQuery 88 │   58.20 ms │                    57.59 ms │     no change │
│ QQuery 89 │   35.00 ms │                    35.18 ms │     no change │
│ QQuery 90 │   15.76 ms │                    15.76 ms │     no change │
│ QQuery 91 │   38.69 ms │                    39.11 ms │     no change │
│ QQuery 92 │   28.48 ms │                    28.36 ms │     no change │
│ QQuery 93 │   48.11 ms │                    47.45 ms │     no change │
│ QQuery 94 │   37.43 ms │                    37.28 ms │     no change │
│ QQuery 95 │   77.95 ms │                    78.94 ms │     no change │
│ QQuery 96 │   23.27 ms │                    23.06 ms │     no change │
│ QQuery 97 │   49.58 ms │                    49.64 ms │     no change │
│ QQuery 98 │   37.09 ms │                    40.32 ms │  1.09x slower │
│ QQuery 99 │   55.26 ms │                    55.94 ms │     no change │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8783.54ms │
│ Total Time (codex_dictionary-only-pages)   │ 8504.49ms │
│ Average Time (HEAD)                        │   88.72ms │
│ Average Time (codex_dictionary-only-pages) │   85.90ms │
│ Queries Faster                             │         5 │
│ Queries Slower                             │         3 │
│ Queries with No Change                     │        91 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and codex_dictionary-only-pages
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.23 / 5.85 ±1.01 / 7.86 ms │           5.15 / 5.73 ±1.08 / 7.88 ms │     no change │
│ QQuery 2  │        75.70 / 76.00 ±0.18 / 76.19 ms │        75.56 / 76.07 ±0.34 / 76.62 ms │     no change │
│ QQuery 3  │        28.50 / 28.61 ±0.10 / 28.74 ms │        28.36 / 28.61 ±0.15 / 28.81 ms │     no change │
│ QQuery 4  │     561.88 / 567.47 ±4.10 / 571.83 ms │     408.49 / 417.45 ±4.97 / 423.17 ms │ +1.36x faster │
│ QQuery 5  │        49.15 / 49.58 ±0.32 / 49.99 ms │        49.10 / 49.22 ±0.07 / 49.31 ms │     no change │
│ QQuery 6  │        32.83 / 33.06 ±0.14 / 33.27 ms │        32.88 / 34.53 ±2.36 / 39.17 ms │     no change │
│ QQuery 7  │        68.89 / 70.98 ±2.81 / 76.53 ms │        69.41 / 70.52 ±0.67 / 71.45 ms │     no change │
│ QQuery 8  │        37.32 / 37.56 ±0.15 / 37.80 ms │        37.35 / 37.63 ±0.27 / 38.12 ms │     no change │
│ QQuery 9  │        50.75 / 51.55 ±0.50 / 52.22 ms │        49.83 / 51.17 ±1.69 / 54.31 ms │     no change │
│ QQuery 10 │        57.44 / 57.81 ±0.33 / 58.33 ms │        57.72 / 58.35 ±0.51 / 59.20 ms │     no change │
│ QQuery 11 │     370.98 / 375.29 ±3.61 / 380.16 ms │     254.47 / 256.57 ±1.99 / 259.74 ms │ +1.46x faster │
│ QQuery 12 │        24.82 / 25.30 ±0.41 / 26.03 ms │        27.74 / 27.89 ±0.13 / 28.12 ms │  1.10x slower │
│ QQuery 13 │     109.86 / 112.38 ±4.35 / 121.06 ms │     109.51 / 111.77 ±2.24 / 115.29 ms │     no change │
│ QQuery 14 │     373.25 / 375.45 ±2.94 / 381.26 ms │     371.40 / 373.05 ±1.38 / 375.23 ms │     no change │
│ QQuery 15 │        51.15 / 51.85 ±0.47 / 52.46 ms │        50.63 / 53.20 ±2.78 / 58.38 ms │     no change │
│ QQuery 16 │           5.88 / 6.11 ±0.26 / 6.59 ms │           5.98 / 6.17 ±0.25 / 6.66 ms │     no change │
│ QQuery 17 │        75.08 / 76.13 ±1.07 / 78.19 ms │        74.38 / 75.67 ±1.32 / 78.20 ms │     no change │
│ QQuery 18 │     100.62 / 103.80 ±3.81 / 111.27 ms │     102.46 / 103.05 ±0.40 / 103.66 ms │     no change │
│ QQuery 19 │        40.28 / 40.86 ±0.49 / 41.49 ms │        40.56 / 40.78 ±0.16 / 41.02 ms │     no change │
│ QQuery 20 │        30.41 / 30.55 ±0.11 / 30.74 ms │        33.05 / 33.58 ±0.30 / 33.84 ms │  1.10x slower │
│ QQuery 21 │        16.63 / 16.95 ±0.22 / 17.20 ms │        16.47 / 16.73 ±0.15 / 16.90 ms │     no change │
│ QQuery 22 │        68.02 / 68.79 ±0.64 / 69.78 ms │        67.81 / 68.41 ±0.57 / 69.20 ms │     no change │
│ QQuery 23 │     286.06 / 288.68 ±2.50 / 293.16 ms │     285.72 / 292.00 ±3.85 / 295.73 ms │     no change │
│ QQuery 24 │     185.78 / 189.96 ±3.90 / 197.37 ms │     183.94 / 187.44 ±3.66 / 194.07 ms │     no change │
│ QQuery 25 │     102.18 / 104.82 ±2.19 / 108.79 ms │     101.83 / 103.56 ±2.40 / 108.19 ms │     no change │
│ QQuery 26 │        43.70 / 43.95 ±0.21 / 44.21 ms │        43.55 / 44.38 ±1.23 / 46.80 ms │     no change │
│ QQuery 27 │           5.99 / 6.12 ±0.17 / 6.45 ms │           5.82 / 5.96 ±0.15 / 6.25 ms │     no change │
│ QQuery 28 │        56.11 / 59.85 ±1.89 / 61.27 ms │        55.04 / 58.26 ±2.25 / 60.21 ms │     no change │
│ QQuery 29 │       90.62 / 94.82 ±4.25 / 102.86 ms │        91.25 / 92.03 ±1.16 / 94.32 ms │     no change │
│ QQuery 30 │        34.96 / 35.53 ±0.39 / 36.14 ms │        31.91 / 33.10 ±1.76 / 36.61 ms │ +1.07x faster │
│ QQuery 31 │     106.90 / 107.67 ±0.46 / 108.24 ms │     107.10 / 108.70 ±1.75 / 111.81 ms │     no change │
│ QQuery 32 │        19.83 / 21.45 ±1.83 / 23.78 ms │        19.38 / 19.63 ±0.17 / 19.82 ms │ +1.09x faster │
│ QQuery 33 │        35.83 / 37.00 ±0.65 / 37.81 ms │        35.48 / 36.43 ±0.50 / 36.88 ms │     no change │
│ QQuery 34 │           9.12 / 9.32 ±0.20 / 9.69 ms │           9.06 / 9.22 ±0.19 / 9.58 ms │     no change │
│ QQuery 35 │        68.41 / 68.89 ±0.46 / 69.66 ms │        68.21 / 69.83 ±1.43 / 72.46 ms │     no change │
│ QQuery 36 │           5.57 / 5.80 ±0.28 / 6.35 ms │           5.51 / 6.45 ±1.41 / 9.19 ms │  1.11x slower │
│ QQuery 37 │           7.25 / 7.33 ±0.07 / 7.44 ms │           6.51 / 6.75 ±0.21 / 7.13 ms │ +1.09x faster │
│ QQuery 38 │        62.95 / 63.76 ±1.16 / 66.05 ms │        62.96 / 63.45 ±0.44 / 64.25 ms │     no change │
│ QQuery 39 │        71.01 / 71.81 ±1.00 / 73.75 ms │        70.00 / 71.05 ±0.60 / 71.77 ms │     no change │
│ QQuery 40 │        22.00 / 22.25 ±0.28 / 22.75 ms │        22.21 / 23.12 ±0.94 / 24.91 ms │     no change │
│ QQuery 41 │        13.36 / 13.52 ±0.17 / 13.85 ms │        13.25 / 13.41 ±0.15 / 13.68 ms │     no change │
│ QQuery 42 │        23.16 / 23.53 ±0.36 / 24.19 ms │        23.24 / 23.62 ±0.29 / 23.96 ms │     no change │
│ QQuery 43 │           4.70 / 4.83 ±0.18 / 5.20 ms │           4.60 / 4.72 ±0.19 / 5.10 ms │     no change │
│ QQuery 44 │           8.32 / 8.40 ±0.08 / 8.54 ms │           8.12 / 8.25 ±0.14 / 8.53 ms │     no change │
│ QQuery 45 │        34.39 / 34.78 ±0.38 / 35.48 ms │        34.72 / 35.38 ±0.47 / 36.08 ms │     no change │
│ QQuery 46 │        10.64 / 10.86 ±0.21 / 11.20 ms │        10.80 / 11.01 ±0.25 / 11.50 ms │     no change │
│ QQuery 47 │     197.54 / 199.56 ±2.62 / 204.61 ms │     198.96 / 200.53 ±1.26 / 202.27 ms │     no change │
│ QQuery 48 │        88.85 / 90.47 ±2.45 / 95.34 ms │        89.23 / 89.97 ±0.65 / 91.17 ms │     no change │
│ QQuery 49 │        67.23 / 68.11 ±0.92 / 69.87 ms │        67.25 / 67.67 ±0.63 / 68.92 ms │     no change │
│ QQuery 50 │        55.56 / 59.00 ±5.69 / 70.32 ms │        56.02 / 56.44 ±0.69 / 57.81 ms │     no change │
│ QQuery 51 │        91.30 / 94.51 ±2.72 / 97.76 ms │        93.50 / 95.07 ±1.97 / 98.90 ms │     no change │
│ QQuery 52 │        23.52 / 23.74 ±0.20 / 24.00 ms │        23.83 / 23.90 ±0.05 / 23.96 ms │     no change │
│ QQuery 53 │        28.89 / 29.17 ±0.33 / 29.79 ms │        28.67 / 30.06 ±1.93 / 33.84 ms │     no change │
│ QQuery 54 │        52.37 / 54.64 ±2.87 / 59.51 ms │        52.04 / 52.78 ±0.52 / 53.62 ms │     no change │
│ QQuery 55 │        23.19 / 23.72 ±0.43 / 24.31 ms │        22.76 / 23.06 ±0.26 / 23.40 ms │     no change │
│ QQuery 56 │        37.02 / 37.37 ±0.18 / 37.50 ms │        36.94 / 37.34 ±0.31 / 37.81 ms │     no change │
│ QQuery 57 │     149.35 / 152.09 ±2.97 / 157.84 ms │     149.07 / 151.20 ±2.20 / 154.30 ms │     no change │
│ QQuery 58 │     102.19 / 103.21 ±1.12 / 105.26 ms │     101.56 / 103.50 ±2.27 / 107.95 ms │     no change │
│ QQuery 59 │     106.10 / 107.90 ±2.57 / 112.98 ms │     105.49 / 106.75 ±0.97 / 108.26 ms │     no change │
│ QQuery 60 │        36.94 / 38.11 ±1.04 / 39.47 ms │        37.40 / 38.10 ±0.54 / 38.80 ms │     no change │
│ QQuery 61 │        10.12 / 10.29 ±0.14 / 10.51 ms │        10.08 / 10.33 ±0.18 / 10.61 ms │     no change │
│ QQuery 62 │        37.19 / 37.61 ±0.29 / 38.03 ms │        37.56 / 38.88 ±1.89 / 42.62 ms │     no change │
│ QQuery 63 │        28.23 / 28.63 ±0.22 / 28.84 ms │        29.04 / 29.98 ±1.38 / 32.70 ms │     no change │
│ QQuery 64 │     348.72 / 351.27 ±2.65 / 355.96 ms │     349.93 / 353.86 ±3.34 / 359.62 ms │     no change │
│ QQuery 65 │        74.26 / 74.79 ±0.36 / 75.38 ms │        72.91 / 75.20 ±3.00 / 81.01 ms │     no change │
│ QQuery 66 │        70.60 / 74.49 ±6.36 / 87.11 ms │        70.69 / 70.93 ±0.15 / 71.14 ms │     no change │
│ QQuery 67 │     221.39 / 224.49 ±1.62 / 225.84 ms │     219.92 / 224.78 ±2.67 / 228.06 ms │     no change │
│ QQuery 68 │        10.96 / 11.18 ±0.25 / 11.60 ms │        10.96 / 11.11 ±0.26 / 11.62 ms │     no change │
│ QQuery 69 │        52.94 / 53.19 ±0.17 / 53.44 ms │        53.38 / 55.77 ±3.09 / 61.40 ms │     no change │
│ QQuery 70 │       95.58 / 98.84 ±3.93 / 106.21 ms │        95.95 / 97.14 ±1.02 / 98.75 ms │     no change │
│ QQuery 71 │        34.30 / 34.72 ±0.41 / 35.41 ms │        34.13 / 34.55 ±0.27 / 34.90 ms │     no change │
│ QQuery 72 │ 1520.53 / 1590.57 ±48.34 / 1654.74 ms │ 1557.28 / 1611.10 ±40.17 / 1659.62 ms │     no change │
│ QQuery 73 │           8.87 / 9.20 ±0.31 / 9.74 ms │           8.65 / 8.88 ±0.25 / 9.35 ms │     no change │
│ QQuery 74 │     238.06 / 242.67 ±3.37 / 248.23 ms │     188.81 / 193.60 ±4.57 / 200.47 ms │ +1.25x faster │
│ QQuery 75 │     134.76 / 137.23 ±1.93 / 140.29 ms │     135.75 / 138.43 ±3.86 / 145.73 ms │     no change │
│ QQuery 76 │        33.18 / 33.59 ±0.22 / 33.80 ms │        33.63 / 33.87 ±0.20 / 34.16 ms │     no change │
│ QQuery 77 │        57.62 / 58.12 ±0.40 / 58.72 ms │        57.89 / 60.18 ±2.71 / 65.45 ms │     no change │
│ QQuery 78 │     254.79 / 263.10 ±9.64 / 280.05 ms │    257.89 / 267.99 ±11.68 / 290.42 ms │     no change │
│ QQuery 79 │        66.73 / 69.21 ±3.07 / 74.58 ms │        65.82 / 66.45 ±0.34 / 66.72 ms │     no change │
│ QQuery 80 │        90.95 / 92.41 ±1.76 / 95.72 ms │        91.05 / 93.32 ±1.55 / 95.90 ms │     no change │
│ QQuery 81 │        27.24 / 27.47 ±0.22 / 27.84 ms │        26.49 / 28.15 ±2.74 / 33.61 ms │     no change │
│ QQuery 82 │        16.21 / 17.42 ±1.46 / 20.29 ms │        15.87 / 16.16 ±0.20 / 16.44 ms │ +1.08x faster │
│ QQuery 83 │        31.68 / 34.22 ±3.18 / 39.39 ms │        31.35 / 31.65 ±0.16 / 31.81 ms │ +1.08x faster │
│ QQuery 84 │        30.13 / 30.59 ±0.42 / 31.29 ms │        29.16 / 29.41 ±0.41 / 30.23 ms │     no change │
│ QQuery 85 │        93.49 / 94.49 ±0.93 / 95.93 ms │        92.91 / 94.74 ±1.61 / 97.56 ms │     no change │
│ QQuery 86 │        23.33 / 23.67 ±0.26 / 24.06 ms │        23.69 / 26.04 ±3.32 / 32.63 ms │  1.10x slower │
│ QQuery 87 │        63.31 / 64.67 ±1.35 / 67.02 ms │        63.84 / 64.46 ±0.59 / 65.50 ms │     no change │
│ QQuery 88 │        58.20 / 58.95 ±0.48 / 59.47 ms │        57.59 / 58.65 ±0.66 / 59.56 ms │     no change │
│ QQuery 89 │        35.00 / 35.41 ±0.48 / 36.33 ms │        35.18 / 35.52 ±0.27 / 35.91 ms │     no change │
│ QQuery 90 │        15.76 / 15.89 ±0.11 / 16.09 ms │        15.76 / 15.95 ±0.15 / 16.22 ms │     no change │
│ QQuery 91 │        38.69 / 39.07 ±0.35 / 39.72 ms │        39.11 / 39.48 ±0.25 / 39.86 ms │     no change │
│ QQuery 92 │        28.48 / 30.07 ±1.36 / 31.82 ms │        28.36 / 28.66 ±0.36 / 29.36 ms │     no change │
│ QQuery 93 │        48.11 / 48.90 ±0.94 / 50.15 ms │        47.45 / 48.59 ±0.64 / 49.27 ms │     no change │
│ QQuery 94 │        37.43 / 37.94 ±0.41 / 38.65 ms │        37.28 / 38.24 ±1.50 / 41.21 ms │     no change │
│ QQuery 95 │        77.95 / 78.31 ±0.30 / 78.83 ms │        78.94 / 81.21 ±2.23 / 85.13 ms │     no change │
│ QQuery 96 │        23.27 / 24.31 ±1.84 / 27.98 ms │        23.06 / 23.31 ±0.24 / 23.62 ms │     no change │
│ QQuery 97 │        49.58 / 50.91 ±1.24 / 52.68 ms │        49.64 / 50.43 ±0.76 / 51.36 ms │     no change │
│ QQuery 98 │        37.09 / 37.33 ±0.14 / 37.52 ms │        40.32 / 41.04 ±0.57 / 41.97 ms │  1.10x slower │
│ QQuery 99 │        55.26 / 55.70 ±0.48 / 56.56 ms │        55.94 / 58.32 ±2.81 / 63.57 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8979.33ms │
│ Total Time (codex_dictionary-only-pages)   │ 8686.66ms │
│ Average Time (HEAD)                        │   90.70ms │
│ Average Time (codex_dictionary-only-pages) │   87.74ms │
│ Queries Faster                             │         8 │
│ Queries Slower                             │         5 │
│ Queries with No Change                     │        86 │
│ 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: b8534c7fd836f23e99f3f95fccea53cd7e167bff | Changed: e66caad9042cf570a605da822e480a02845360b9

tpcds — tpcds_sf1

Query Base Changed Change
Query 1 135.4 KiB 135.4 KiB -0.0%
Query 2 89.2 MiB 72.9 MiB -18.3%
Query 3 1.9 MiB 1.7 MiB -11.2%
Query 4 87.8 MiB 81.9 MiB -6.8%
Query 5 13.0 MiB 13.0 MiB -0.1%
Query 6 4.4 MiB 4.1 MiB -5.6%
Query 7 3.7 MiB 3.7 MiB -0.7%
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.9 MiB 56.6 MiB -3.8%
Query 12 114.4 MiB 116.2 MiB +1.6%
Query 13 13.7 MiB 13.7 MiB -0.0%
Query 14 171.0 MiB 170.9 MiB -0.1%
Query 15 4.2 MiB 4.2 MiB +0.2%
Query 16 118.6 KiB 118.6 KiB +0.0%
Query 17 41.0 MiB 40.2 MiB -2.1%
Query 18 21.3 MiB 21.3 MiB +0.0%
Query 19 1.9 MiB 2.1 MiB +9.7%
Query 20 114.6 MiB 116.5 MiB +1.7%
Query 21 3.3 MiB 3.2 MiB -2.5%
Query 22 61.8 MiB 61.8 MiB +0.0%
Query 23 213.0 MiB 211.7 MiB -0.6%
Query 24 38.7 MiB 38.7 MiB +0.0%
Query 25 99.9 MiB 99.7 MiB -0.2%
Query 26 3.4 MiB 3.6 MiB +6.5%
Query 27 1.6 MiB 1.6 MiB +0.0%
Query 28 1.3 MiB 1.5 MiB +10.0%
Query 29 104.7 MiB 104.8 MiB +0.1%
Query 30 3.6 MiB 4.1 MiB +12.6%
Query 31 13.4 MiB 13.4 MiB -0.0%
Query 32 2.7 MiB 2.7 MiB -0.1%
Query 33 4.0 MiB 4.2 MiB +3.8%
Query 34 6.0 MiB 6.0 MiB +0.0%
Query 35 17.5 MiB 16.6 MiB -5.1%
Query 36 10.3 MiB 10.3 MiB +0.0%
Query 37 3.3 MiB 3.9 MiB +17.2%
Query 38 10.8 MiB 10.8 MiB -0.2%
Query 39 42.9 MiB 41.5 MiB -3.1%
Query 40 12.2 MiB 12.2 MiB +0.0%
Query 41 2.1 MiB 2.1 MiB +0.0%
Query 42 1.3 MiB 1.5 MiB +18.2%
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 128.5 MiB +0.0%
Query 48 11.8 MiB 11.8 MiB +0.0%
Query 49 43.2 MiB 52.8 MiB +22.2%
Query 50 16.9 MiB 16.9 MiB -0.1%
Query 51 177.7 MiB 178.0 MiB +0.2%
Query 52 1.8 MiB 2.0 MiB +12.4%
Query 53 20.3 MiB 30.4 MiB +50.1%
Query 54 2.2 MiB 2.2 MiB +0.1%
Query 55 1.4 MiB 1.5 MiB +3.6%
Query 56 3.0 MiB 2.9 MiB -2.6%
Query 57 120.8 MiB 120.8 MiB -0.0%
Query 58 4.2 MiB 4.4 MiB +5.1%
Query 59 11.7 MiB 11.7 MiB +0.0%
Query 60 5.3 MiB 5.3 MiB +0.1%
Query 61 1.1 MiB 985.1 KiB -8.7%
Query 62 3.3 MiB 4.0 MiB +19.9%
Query 63 30.6 MiB 10.6 MiB -65.4%
Query 64 105.3 MiB 105.3 MiB +0.0%
Query 65 29.7 MiB 27.0 MiB -9.1%
Query 66 14.9 MiB 14.9 MiB +0.0%
Query 67 138.2 MiB 137.9 MiB -0.3%
Query 68 6.2 MiB 6.2 MiB +0.0%
Query 69 3.6 MiB 3.6 MiB +0.3%
Query 70 44.0 MiB 44.0 MiB +0.0%
Query 71 40.6 MiB 40.6 MiB +0.1%
Query 72 97.2 MiB 97.3 MiB +0.1%
Query 73 6.0 MiB 6.0 MiB +0.0%
Query 74 36.0 MiB 36.0 MiB +0.2%
Query 75 22.0 MiB 22.6 MiB +2.7%
Query 76 4.3 MiB 4.3 MiB +0.0%
Query 77 4.1 MiB 4.1 MiB +0.0%
Query 78 335.7 MiB 335.7 MiB -0.0%
Query 79 7.4 MiB 8.7 MiB +17.7%
Query 80 42.4 MiB 41.6 MiB -1.9%
Query 81 4.0 MiB 4.2 MiB +3.4%
Query 82 4.9 MiB 3.9 MiB -21.6%
Query 83 9.0 MiB 9.0 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.7 MiB 1.6 MiB -4.3%
Query 89 112.2 MiB 112.0 MiB -0.2%
Query 90 348.6 KiB 363.7 KiB +4.3%
Query 91 31.4 MiB 21.4 MiB -32.0%
Query 92 2.7 MiB 2.7 MiB +0.0%
Query 93 15.4 MiB 15.4 MiB +0.0%
Query 94 3.4 MiB 3.7 MiB +8.2%
Query 95 23.9 MiB 23.4 MiB -2.1%
Query 96 224.7 KiB 224.7 KiB +0.0%
Query 97 33.1 MiB 33.1 MiB -0.2%
Query 98 114.7 MiB 116.3 MiB +1.4%
Query 99 1.9 MiB 1.4 MiB -25.4%

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 (b8534c7fd836f23e99f3f95fccea53cd7e167bff) 335.7 MiB 2.1 GiB 1.8 GiB 6.4×
tpcds changed (e66caad9042cf570a605da822e480a02845360b9) 335.7 MiB 2.0 GiB 1.6 GiB 6.0×
Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 2.1 GiB
Avg memory 1.3 GiB
CPU user 182.7s
CPU sys 5.1s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 45.0s
Peak memory 2.0 GiB
Avg memory 1.4 GiB
CPU user 182.1s
CPU sys 4.9s
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 e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"
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 codex_dictionary-only-pages
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.16 ms │                     1.14 ms │     no change │
│ QQuery 1  │   11.41 ms │                    11.86 ms │     no change │
│ QQuery 2  │   36.30 ms │                    35.67 ms │     no change │
│ QQuery 3  │   31.56 ms │                    31.00 ms │     no change │
│ QQuery 4  │  236.48 ms │                   246.57 ms │     no change │
│ QQuery 5  │  820.66 ms │                   279.45 ms │ +2.94x faster │
│ QQuery 6  │    1.19 ms │                     1.20 ms │     no change │
│ QQuery 7  │   12.74 ms │                    12.92 ms │     no change │
│ QQuery 8  │  331.76 ms │                   343.53 ms │     no change │
│ QQuery 9  │  471.61 ms │                   484.87 ms │     no change │
│ QQuery 10 │  202.78 ms │                   202.29 ms │     no change │
│ QQuery 11 │  213.78 ms │                   213.48 ms │     no change │
│ QQuery 12 │  804.27 ms │                   269.44 ms │ +2.98x faster │
│ QQuery 13 │ 1086.29 ms │                   362.79 ms │ +2.99x faster │
│ QQuery 14 │  854.53 ms │                   284.61 ms │ +3.00x faster │
│ QQuery 15 │  286.86 ms │                   296.09 ms │     no change │
│ QQuery 16 │ 1285.10 ms │                   628.65 ms │ +2.04x faster │
│ QQuery 17 │ 1255.34 ms │                   636.86 ms │ +1.97x faster │
│ QQuery 18 │ 2047.31 ms │                  1240.56 ms │ +1.65x faster │
│ QQuery 19 │   27.27 ms │                    27.68 ms │     no change │
│ QQuery 20 │ 1054.81 ms │                   515.08 ms │ +2.05x faster │
│ QQuery 21 │ 1359.35 ms │                   511.29 ms │ +2.66x faster │
│ QQuery 22 │ 3218.91 ms │                   990.03 ms │ +3.25x faster │
│ QQuery 23 │ 9247.51 ms │                  6156.86 ms │ +1.50x faster │
│ QQuery 24 │   95.39 ms │                    41.71 ms │ +2.29x faster │
│ QQuery 25 │  358.21 ms │                   106.17 ms │ +3.37x faster │
│ QQuery 26 │   97.34 ms │                    41.57 ms │ +2.34x faster │
│ QQuery 27 │ 1145.56 ms │                   515.26 ms │ +2.22x faster │
│ QQuery 28 │ 2528.65 ms │                  2879.93 ms │  1.14x slower │
│ QQuery 29 │   38.21 ms │                    38.72 ms │     no change │
│ QQuery 30 │  543.96 ms │                   303.56 ms │ +1.79x faster │
│ QQuery 31 │  536.66 ms │                   276.60 ms │ +1.94x faster │
│ QQuery 32 │ 1008.06 ms │                   952.71 ms │ +1.06x faster │
│ QQuery 33 │ 3599.72 ms │                  1475.85 ms │ +2.44x faster │
│ QQuery 34 │ 3684.54 ms │                  1485.66 ms │ +2.48x faster │
│ QQuery 35 │  291.98 ms │                   297.23 ms │     no change │
│ QQuery 36 │  138.77 ms │                    65.53 ms │ +2.12x faster │
│ QQuery 37 │   96.30 ms │                    35.61 ms │ +2.70x faster │
│ QQuery 38 │   81.39 ms │                    41.75 ms │ +1.95x faster │
│ QQuery 39 │  307.70 ms │                   152.50 ms │ +2.02x faster │
│ QQuery 40 │   13.63 ms │                    14.63 ms │  1.07x slower │
│ QQuery 41 │   13.33 ms │                    14.00 ms │     no change │
│ QQuery 42 │   12.88 ms │                    13.37 ms │     no change │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 39491.23ms │
│ Total Time (codex_dictionary-only-pages)   │ 22536.29ms │
│ Average Time (HEAD)                        │   918.40ms │
│ Average Time (codex_dictionary-only-pages) │   524.10ms │
│ Queries Faster                             │         24 │
│ Queries Slower                             │          2 │
│ Queries with No Change                     │         17 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and codex_dictionary-only-pages
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                   HEAD ┃           codex_dictionary-only-pages ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │            1.16 / 1.81 ±1.16 / 4.11 ms │           1.14 / 1.75 ±1.13 / 4.01 ms │     no change │
│ QQuery 1  │         11.41 / 11.50 ±0.08 / 11.60 ms │        11.86 / 12.05 ±0.14 / 12.24 ms │     no change │
│ QQuery 2  │         36.30 / 36.78 ±0.25 / 36.98 ms │        35.67 / 35.90 ±0.22 / 36.24 ms │     no change │
│ QQuery 3  │         31.56 / 32.19 ±0.56 / 32.96 ms │        31.00 / 31.60 ±0.43 / 32.11 ms │     no change │
│ QQuery 4  │      236.48 / 243.75 ±5.11 / 250.54 ms │     246.57 / 248.50 ±1.05 / 249.73 ms │     no change │
│ QQuery 5  │     820.66 / 835.91 ±12.21 / 854.71 ms │     279.45 / 282.78 ±2.46 / 285.67 ms │ +2.96x faster │
│ QQuery 6  │            1.19 / 1.43 ±0.24 / 1.78 ms │           1.20 / 1.37 ±0.24 / 1.84 ms │     no change │
│ QQuery 7  │         12.74 / 12.87 ±0.09 / 13.00 ms │        12.92 / 14.69 ±2.56 / 19.78 ms │  1.14x slower │
│ QQuery 8  │      331.76 / 335.85 ±2.73 / 338.93 ms │     343.53 / 347.17 ±2.29 / 349.63 ms │     no change │
│ QQuery 9  │      471.61 / 481.64 ±8.91 / 495.54 ms │     484.87 / 487.25 ±1.69 / 488.89 ms │     no change │
│ QQuery 10 │      202.78 / 203.30 ±0.41 / 203.73 ms │     202.29 / 205.16 ±4.51 / 214.15 ms │     no change │
│ QQuery 11 │      213.78 / 214.89 ±0.80 / 215.81 ms │     213.48 / 213.74 ±0.18 / 213.95 ms │     no change │
│ QQuery 12 │     804.27 / 826.72 ±14.55 / 847.72 ms │     269.44 / 278.44 ±6.90 / 287.68 ms │ +2.97x faster │
│ QQuery 13 │  1086.29 / 1148.25 ±35.70 / 1187.42 ms │    362.79 / 395.84 ±18.18 / 415.54 ms │ +2.90x faster │
│ QQuery 14 │     854.53 / 878.75 ±12.57 / 889.58 ms │    284.61 / 292.86 ±11.54 / 315.47 ms │ +3.00x faster │
│ QQuery 15 │      286.86 / 295.13 ±4.94 / 301.12 ms │     296.09 / 307.34 ±8.55 / 317.06 ms │     no change │
│ QQuery 16 │  1285.10 / 1307.87 ±22.16 / 1341.84 ms │     628.65 / 639.64 ±9.53 / 655.68 ms │ +2.04x faster │
│ QQuery 17 │  1255.34 / 1273.81 ±20.72 / 1311.94 ms │     636.86 / 646.87 ±8.49 / 658.19 ms │ +1.97x faster │
│ QQuery 18 │  2047.31 / 2055.19 ±11.34 / 2077.10 ms │ 1240.56 / 1255.59 ±12.47 / 1271.80 ms │ +1.64x faster │
│ QQuery 19 │         27.27 / 29.48 ±3.45 / 36.36 ms │       27.68 / 42.42 ±14.32 / 63.46 ms │  1.44x slower │
│ QQuery 20 │   1054.81 / 1060.89 ±5.57 / 1070.48 ms │     515.08 / 522.12 ±4.68 / 527.26 ms │ +2.03x faster │
│ QQuery 21 │   1359.35 / 1367.44 ±5.76 / 1375.13 ms │     511.29 / 515.06 ±3.05 / 519.93 ms │ +2.65x faster │
│ QQuery 22 │  3218.91 / 3254.97 ±27.74 / 3303.34 ms │     990.03 / 995.78 ±3.61 / 999.43 ms │ +3.27x faster │
│ QQuery 23 │ 9247.51 / 9469.28 ±184.92 / 9694.72 ms │ 6156.86 / 6219.06 ±45.63 / 6277.33 ms │ +1.52x faster │
│ QQuery 24 │         95.39 / 97.79 ±1.53 / 99.93 ms │        41.71 / 42.40 ±0.87 / 44.08 ms │ +2.31x faster │
│ QQuery 25 │      358.21 / 362.21 ±3.41 / 367.32 ms │    106.17 / 116.76 ±14.34 / 144.80 ms │ +3.10x faster │
│ QQuery 26 │        97.34 / 98.92 ±1.61 / 102.03 ms │        41.57 / 44.20 ±5.09 / 54.37 ms │ +2.24x faster │
│ QQuery 27 │   1145.56 / 1151.15 ±4.88 / 1160.02 ms │     515.26 / 521.35 ±3.66 / 525.52 ms │ +2.21x faster │
│ QQuery 28 │  2528.65 / 2573.96 ±28.33 / 2611.72 ms │ 2879.93 / 2917.34 ±29.34 / 2967.21 ms │  1.13x slower │
│ QQuery 29 │         38.21 / 38.63 ±0.35 / 39.12 ms │        38.72 / 39.65 ±0.74 / 40.62 ms │     no change │
│ QQuery 30 │      543.96 / 551.32 ±8.80 / 568.35 ms │     303.56 / 313.47 ±7.57 / 322.86 ms │ +1.76x faster │
│ QQuery 31 │      536.66 / 543.30 ±5.51 / 552.08 ms │    276.60 / 297.06 ±15.53 / 315.21 ms │ +1.83x faster │
│ QQuery 32 │  1008.06 / 1062.08 ±51.24 / 1158.90 ms │    952.71 / 970.56 ±11.80 / 984.39 ms │ +1.09x faster │
│ QQuery 33 │  3599.72 / 3656.54 ±36.30 / 3709.86 ms │ 1475.85 / 1508.19 ±24.03 / 1538.40 ms │ +2.42x faster │
│ QQuery 34 │  3684.54 / 3755.21 ±53.04 / 3839.85 ms │ 1485.66 / 1546.21 ±36.46 / 1587.42 ms │ +2.43x faster │
│ QQuery 35 │     291.98 / 311.25 ±18.85 / 345.36 ms │    297.23 / 331.49 ±51.73 / 433.48 ms │  1.07x slower │
│ QQuery 36 │     138.77 / 150.77 ±11.28 / 168.68 ms │        65.53 / 71.71 ±5.84 / 80.90 ms │ +2.10x faster │
│ QQuery 37 │        96.30 / 98.60 ±1.58 / 100.99 ms │        35.61 / 37.83 ±2.30 / 41.81 ms │ +2.61x faster │
│ QQuery 38 │         81.39 / 85.67 ±4.03 / 93.16 ms │        41.75 / 43.03 ±0.84 / 44.20 ms │ +1.99x faster │
│ QQuery 39 │      307.70 / 311.52 ±3.07 / 315.34 ms │    152.50 / 164.22 ±10.19 / 179.46 ms │ +1.90x faster │
│ QQuery 40 │         13.63 / 14.83 ±1.22 / 16.97 ms │        14.63 / 14.96 ±0.42 / 15.77 ms │     no change │
│ QQuery 41 │         13.33 / 13.66 ±0.31 / 14.18 ms │        14.00 / 14.10 ±0.11 / 14.24 ms │     no change │
│ QQuery 42 │         12.88 / 15.65 ±5.40 / 26.45 ms │        13.37 / 13.43 ±0.08 / 13.59 ms │ +1.16x faster │
└───────────┴────────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 40272.77ms │
│ Total Time (codex_dictionary-only-pages)   │ 23000.96ms │
│ Average Time (HEAD)                        │   936.58ms │
│ Average Time (codex_dictionary-only-pages) │   534.91ms │
│ Queries Faster                             │         25 │
│ Queries Slower                             │          4 │
│ Queries with No Change                     │         14 │
│ 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: b8534c7fd836f23e99f3f95fccea53cd7e167bff | Changed: e66caad9042cf570a605da822e480a02845360b9

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 829.0 MiB 826.2 MiB -0.3%
Query 5 1.4 GiB 1.2 GiB -16.0%
Query 6 0 B 0 B 0.0%
Query 7 40.3 MiB 50.3 MiB +24.8%
Query 8 950.4 MiB 924.0 MiB -2.8%
Query 9 552.0 MiB 552.0 MiB +0.0%
Query 10 73.8 MiB 74.8 MiB +1.4%
Query 11 76.9 MiB 77.2 MiB +0.4%
Query 12 1.6 GiB 1.3 GiB -16.8%
Query 13 1.7 GiB 1.7 GiB +1.6%
Query 14 1.6 GiB 1.4 GiB -16.0%
Query 15 1.2 GiB 1.2 GiB +1.0%
Query 16 3.2 GiB 3.4 GiB +3.4%
Query 17 3.3 GiB 3.3 GiB +1.1%
Query 18 7.1 GiB 8.3 GiB +16.3%
Query 19 0 B 0 B 0.0%
Query 20 104 B 104 B +0.0%
Query 21 1.3 MiB 3.7 MiB +181.8%
Query 22 2.2 MiB 3.4 MiB +56.5%
Query 23 12.3 MiB 10.8 MiB -12.5%
Query 24 6.3 MiB 59.1 MiB +835.2%
Query 25 7.6 MiB 160.0 MiB +2011.3%
Query 26 7.8 MiB 59.7 MiB +666.1%
Query 27 2.5 MiB 2.4 MiB -3.0%
Query 28 1.8 GiB 1.7 GiB -3.5%
Query 29 624 B 624 B +0.0%
Query 30 691.6 MiB 744.0 MiB +7.6%
Query 31 1.5 GiB 1.5 GiB -1.5%
Query 32 7.2 GiB 7.1 GiB -0.4%
Query 33 9.9 GiB 8.1 GiB -18.4%
Query 34 9.9 GiB 7.6 GiB -23.3%
Query 35 668.7 MiB 669.9 MiB +0.2%
Query 36 105.4 MiB 124.4 MiB +18.1%
Query 37 8.1 MiB 7.3 MiB -10.4%
Query 38 5.2 MiB 5.3 MiB +3.0%
Query 39 213.4 MiB 308.8 MiB +44.7%
Query 40 2.3 MiB 2.5 MiB +7.2%
Query 41 3.3 MiB 3.3 MiB +0.0%
Query 42 1.7 MiB 1.7 MiB -0.0%

Pool accounting vs. process RSS

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

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
clickbench_partitioned base (b8534c7fd836f23e99f3f95fccea53cd7e167bff) 9.9 GiB 13.1 GiB 3.2 GiB 1.3×
clickbench_partitioned changed (e66caad9042cf570a605da822e480a02845360b9) 8.3 GiB 12.8 GiB 4.5 GiB 1.5×
Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 205.1s
Peak memory 13.1 GiB
Avg memory 5.7 GiB
CPU user 1966.8s
CPU sys 127.3s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 120.0s
Peak memory 12.8 GiB
Avg memory 4.3 GiB
CPU user 1195.0s
CPU sys 73.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing e66caad (e66caad) to b8534c7 diff

Run configuration
run benchmark wide_schema
env:
  DATAFUSION_EXECUTION_PARQUET_ENABLE_RLE_TO_DICTIONARY: "true"
  DATAFUSION_RUNTIME_MEMORY_LIMIT: "32G"
baseline:
  ref: "b8534c7fd836f23e99f3f95fccea53cd7e167bff"
changed:
  ref: "e66caad9042cf570a605da822e480a02845360b9"
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                                   codex_dictionary-only-pages
-----                     ----                                   ---------------------------
wide_schema/Q01_narrow    1.30     90.4±0.34ms        ? ?/sec    1.00     69.4±0.22ms        ? ?/sec
wide_schema/Q01_wide      1.07    356.8±4.78ms        ? ?/sec    1.00    333.5±2.48ms        ? ?/sec
wide_schema/Q02_narrow    1.00      6.0±0.12ms        ? ?/sec    1.01      6.0±0.16ms        ? ?/sec
wide_schema/Q02_wide      1.01    182.1±1.69ms        ? ?/sec    1.00    180.1±1.83ms        ? ?/sec
wide_schema/Q03_narrow    1.00      9.5±0.05ms        ? ?/sec    1.01      9.6±0.09ms        ? ?/sec
wide_schema/Q03_wide      1.01    189.9±1.98ms        ? ?/sec    1.00    188.2±1.54ms        ? ?/sec
wide_schema/Q04_narrow    1.00     31.0±0.13ms        ? ?/sec    1.02     31.6±0.86ms        ? ?/sec
wide_schema/Q04_wide      1.01    299.6±2.03ms        ? ?/sec    1.00    297.6±2.44ms        ? ?/sec

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: b8534c7fd836f23e99f3f95fccea53cd7e167bff | Changed: e66caad9042cf570a605da822e480a02845360b9

wide_schema — wide_schema_narrow

Query Base Changed Change
wide_schema/Q01_narrow 9.4 MiB 36.3 MiB +287.3%
wide_schema/Q02_narrow 0 B 0 B 0.0%
wide_schema/Q03_narrow 0 B 0 B 0.0%
wide_schema/Q04_narrow 0 B 0 B 0.0%

wide_schema — wide_schema_wide

Query Base Changed Change
wide_schema/Q01_wide 9.4 MiB 36.1 MiB +284.9%
wide_schema/Q02_wide 0 B 0 B 0.0%
wide_schema/Q03_wide 0 B 0 B 0.0%
wide_schema/Q04_wide 0 B 0 B 0.0%

Pool accounting vs. process RSS

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

Benchmark Side Max pool peak Peak RSS Gap RSS / pool
wide_schema base (b8534c7fd836f23e99f3f95fccea53cd7e167bff) 9.4 MiB 1.0 GiB 1.0 GiB 114.6×
wide_schema changed (e66caad9042cf570a605da822e480a02845360b9) 36.3 MiB 979.8 MiB 943.5 MiB 27.0×
Resource Usage

wide_schema — base (merge-base)

Metric Value
Wall time 805.3s
Peak memory 1.0 GiB
Avg memory 97.9 MiB
CPU user 572.4s
CPU sys 56.9s
Peak spill 0 B

wide_schema — branch

Metric Value
Wall time 800.3s
Peak memory 979.8 MiB
Avg memory 91.3 MiB
CPU user 550.8s
CPU sys 55.8s
Peak spill 0 B

File an issue against this benchmark runner

@Rich-T-kid

Copy link
Copy Markdown
Contributor Author

I followed up on Q28 because it was the only material regression in the current hosted ClickBench run.

Four balanced local runs (main / PR / PR / main, five iterations each) gave a pooled median of 2127.83 ms on main and 2188.88 ms on this PR (+2.9%). The paired runs changed direction: the first pair had the PR 12.0% slower, while the reverse pair had it 14.3% faster. The earlier hosted run also classified Q28 as unchanged.

I do not see a reproducible Q28 regression locally, so I have left the page-encoding policy unchanged.

@Rich-T-kid Rich-T-kid closed this Nov 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

common Related to common crate datasource Changes to the datasource crate documentation Improvements or additions to documentation sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Avoid dictionary promotion for Parquet plain fallback pages

2 participants