Skip to content

chore: Simplifying SortPreservingMergeStream to use generators instead of state machine#23407

Open
rluvaton wants to merge 21 commits into
apache:mainfrom
rluvaton:use-yield
Open

chore: Simplifying SortPreservingMergeStream to use generators instead of state machine#23407
rluvaton wants to merge 21 commits into
apache:mainfrom
rluvaton:use-yield

Conversation

@rluvaton

@rluvaton rluvaton commented Jul 9, 2026

Copy link
Copy Markdown
Member

Which issue does this PR close?

  • N/A

Rationale for this change

I'm trying to make some Sort optimization but it is hard to get stuff merged where the code is already complex even if adding a simple optimization (like when only 1 stream is left just return those batches).

This makes the code simpler as you can now read it in straight line flow control, while not sacrificing performance

I did not use RecordBatchReceiverStreamBuilder since I want pull based and not push based stream

What changes are included in this PR?

Added genawaiter dependency, replace the SortPersevingMergeStream main state machine loop with generator yield

Are these changes tested?

existing tests

Are there any user-facing changes?

no


Why not using async-stream crate from tokio?

Why not using async-stream crate from tokio (that we already have transitive dependency on) or other crates that are macro based.

Because couple of reasons:

  1. cargo fmt does not format macros body, so you manually need to format and validate that the style is kept
  2. more "magic" yield is not a function call
    i. When you read the code, you cant go to definition of the yield keyword since it is not a function
    ii. Cant put debugger on that keyword (from what I remember)
    iii. there is some hidden code that you need to
  3. You can only use yield from the macro body (so you cant extract functions with yield for example)

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

rluvaton commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

run benchmarks

@rluvaton

rluvaton commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

run benchmark sort tpch10

@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@apache apache deleted a comment from adriangbot Jul 9, 2026
@adriangbot

This comment was marked as outdated.

@adriangbot

This comment was marked as outdated.

@adriangbot

This comment was marked as outdated.

@adriangbot

This comment was marked as outdated.

@adriangbot

This comment was marked as outdated.

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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 use-yield
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃                      use-yield ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │ 38.84 / 39.98 ±1.06 / 41.70 ms │ 38.56 / 40.32 ±1.44 / 41.87 ms │ no change │
│ QQuery 2  │ 19.82 / 20.00 ±0.18 / 20.30 ms │ 19.06 / 19.47 ±0.35 / 20.13 ms │ no change │
│ QQuery 3  │ 31.27 / 34.73 ±2.04 / 36.74 ms │ 31.68 / 34.51 ±1.80 / 37.29 ms │ no change │
│ QQuery 4  │ 17.69 / 17.95 ±0.43 / 18.81 ms │ 17.58 / 17.79 ±0.13 / 17.94 ms │ no change │
│ QQuery 5  │ 38.29 / 40.52 ±1.18 / 41.60 ms │ 38.28 / 40.33 ±2.03 / 44.00 ms │ no change │
│ QQuery 6  │ 16.20 / 16.94 ±0.76 / 18.33 ms │ 16.17 / 16.25 ±0.07 / 16.37 ms │ no change │
│ QQuery 7  │ 45.51 / 47.50 ±2.46 / 51.80 ms │ 45.07 / 46.43 ±1.02 / 47.91 ms │ no change │
│ QQuery 8  │ 43.06 / 43.82 ±1.13 / 46.06 ms │ 43.66 / 43.89 ±0.26 / 44.40 ms │ no change │
│ QQuery 9  │ 49.98 / 50.83 ±0.62 / 51.60 ms │ 49.72 / 50.76 ±0.79 / 51.82 ms │ no change │
│ QQuery 10 │ 42.43 / 42.56 ±0.14 / 42.75 ms │ 42.25 / 42.65 ±0.23 / 42.88 ms │ no change │
│ QQuery 11 │ 13.54 / 14.21 ±0.79 / 15.65 ms │ 13.35 / 13.53 ±0.11 / 13.65 ms │ no change │
│ QQuery 12 │ 23.82 / 24.41 ±0.52 / 25.16 ms │ 24.23 / 24.77 ±0.39 / 25.35 ms │ no change │
│ QQuery 13 │ 31.61 / 34.28 ±2.44 / 37.27 ms │ 32.55 / 34.69 ±1.79 / 36.80 ms │ no change │
│ QQuery 14 │ 23.81 / 24.14 ±0.24 / 24.34 ms │ 24.12 / 24.18 ±0.04 / 24.23 ms │ no change │
│ QQuery 15 │ 31.36 / 31.57 ±0.25 / 31.95 ms │ 31.27 / 32.22 ±0.98 / 33.53 ms │ no change │
│ QQuery 16 │ 14.01 / 14.26 ±0.17 / 14.54 ms │ 14.26 / 14.46 ±0.20 / 14.79 ms │ no change │
│ QQuery 17 │ 73.88 / 75.40 ±0.98 / 76.96 ms │ 74.88 / 76.14 ±1.33 / 78.51 ms │ no change │
│ QQuery 18 │ 59.14 / 60.82 ±1.28 / 63.06 ms │ 60.30 / 61.34 ±0.81 / 62.47 ms │ no change │
│ QQuery 19 │ 33.04 / 33.61 ±0.65 / 34.79 ms │ 33.52 / 33.81 ±0.31 / 34.25 ms │ no change │
│ QQuery 20 │ 32.41 / 33.35 ±0.88 / 34.74 ms │ 31.79 / 32.34 ±0.37 / 32.88 ms │ no change │
│ QQuery 21 │ 55.61 / 56.94 ±1.08 / 58.81 ms │ 55.24 / 56.42 ±1.04 / 57.72 ms │ no change │
│ QQuery 22 │ 14.08 / 14.23 ±0.12 / 14.40 ms │ 13.93 / 14.26 ±0.23 / 14.50 ms │ no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary        ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)        │ 772.05ms │
│ Total Time (use-yield)   │ 770.56ms │
│ Average Time (HEAD)      │  35.09ms │
│ Average Time (use-yield) │  35.03ms │
│ Queries Faster           │        0 │
│ Queries Slower           │        0 │
│ Queries with No Change   │       22 │
│ Queries with Failure     │        0 │
└──────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

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

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 500.1 MiB
CPU user 22.4s
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)

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 use-yield
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                               HEAD ┃                          use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │  311.25 / 312.79 ±1.35 / 315.14 ms │  311.77 / 316.62 ±3.59 / 321.53 ms │     no change │
│ QQuery 2  │  101.33 / 105.25 ±4.17 / 112.99 ms │  101.35 / 105.03 ±1.91 / 106.70 ms │     no change │
│ QQuery 3  │  231.46 / 237.92 ±5.38 / 244.72 ms │  228.14 / 232.63 ±3.22 / 237.76 ms │     no change │
│ QQuery 4  │  111.72 / 112.15 ±0.44 / 112.94 ms │  111.49 / 114.67 ±1.81 / 117.04 ms │     no change │
│ QQuery 5  │  349.33 / 357.73 ±8.49 / 372.02 ms │ 352.62 / 377.10 ±16.61 / 395.92 ms │  1.05x slower │
│ QQuery 6  │  123.63 / 125.12 ±1.34 / 127.66 ms │  129.85 / 135.94 ±5.43 / 146.05 ms │  1.09x slower │
│ QQuery 7  │ 497.86 / 525.50 ±16.16 / 543.33 ms │ 457.15 / 477.22 ±15.20 / 504.14 ms │ +1.10x faster │
│ QQuery 8  │ 407.49 / 418.73 ±10.04 / 432.96 ms │  378.92 / 387.85 ±6.99 / 399.30 ms │ +1.08x faster │
│ QQuery 9  │ 555.62 / 589.30 ±29.53 / 628.61 ms │  540.35 / 553.34 ±9.66 / 565.46 ms │ +1.06x faster │
│ QQuery 10 │  290.39 / 302.72 ±6.63 / 308.43 ms │  289.88 / 297.10 ±5.34 / 305.38 ms │     no change │
│ QQuery 11 │     83.01 / 88.47 ±4.05 / 94.40 ms │    85.34 / 89.25 ±5.44 / 100.05 ms │     no change │
│ QQuery 12 │  178.16 / 187.41 ±9.20 / 199.59 ms │  176.07 / 182.94 ±6.89 / 192.42 ms │     no change │
│ QQuery 13 │  289.93 / 293.86 ±5.59 / 304.93 ms │ 292.87 / 313.18 ±12.09 / 327.28 ms │  1.07x slower │
│ QQuery 14 │  170.67 / 174.69 ±4.08 / 182.46 ms │  184.52 / 190.32 ±5.74 / 199.97 ms │  1.09x slower │
│ QQuery 15 │  300.43 / 303.15 ±2.25 / 306.40 ms │  302.13 / 314.46 ±9.93 / 329.40 ms │     no change │
│ QQuery 16 │     63.57 / 68.44 ±5.87 / 78.75 ms │     64.09 / 67.22 ±2.88 / 72.14 ms │     no change │
│ QQuery 17 │ 619.55 / 690.79 ±55.70 / 755.96 ms │  616.61 / 626.05 ±6.93 / 637.00 ms │ +1.10x faster │
│ QQuery 18 │ 680.67 / 698.70 ±11.25 / 711.83 ms │ 656.85 / 691.63 ±21.82 / 723.49 ms │     no change │
│ QQuery 19 │ 245.94 / 261.52 ±12.22 / 275.61 ms │ 242.24 / 257.32 ±14.78 / 278.12 ms │     no change │
│ QQuery 20 │ 275.13 / 289.26 ±10.86 / 302.85 ms │ 273.47 / 290.23 ±12.17 / 305.17 ms │     no change │
│ QQuery 21 │  655.50 / 661.04 ±3.26 / 665.29 ms │ 667.99 / 728.99 ±30.59 / 748.30 ms │  1.10x slower │
│ QQuery 22 │     60.16 / 61.41 ±1.58 / 64.47 ms │     66.91 / 71.62 ±4.83 / 80.91 ms │  1.17x slower │
└───────────┴────────────────────────────────────┴────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary        ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 6865.97ms │
│ Total Time (use-yield)   │ 6820.72ms │
│ Average Time (HEAD)      │  312.09ms │
│ Average Time (use-yield) │  310.03ms │
│ Queries Faster           │         4 │
│ Queries Slower           │         6 │
│ Queries with No Change   │        12 │
│ Queries with Failure     │         0 │
└──────────────────────────┴───────────┘

Resource Usage

tpch10 — base (merge-base)

Metric Value
Wall time 35.0s
Peak memory 4.9 GiB
Avg memory 1.5 GiB
CPU user 347.8s
CPU sys 18.1s
Peak spill 0 B

tpch10 — branch

Metric Value
Wall time 35.0s
Peak memory 5.1 GiB
Avg memory 1.5 GiB
CPU user 345.9s
CPU sys 18.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)

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 use-yield
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                              use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           6.22 / 6.72 ±0.75 / 8.21 ms │            5.89 / 6.46 ±0.83 / 8.09 ms │     no change │
│ QQuery 2  │        84.59 / 85.72 ±0.57 / 86.08 ms │         83.05 / 83.39 ±0.29 / 83.91 ms │     no change │
│ QQuery 3  │        32.04 / 32.27 ±0.17 / 32.48 ms │         31.14 / 31.58 ±0.38 / 32.07 ms │     no change │
│ QQuery 4  │    506.19 / 524.13 ±21.41 / 564.25 ms │      551.14 / 557.33 ±5.08 / 562.94 ms │  1.06x slower │
│ QQuery 5  │        51.96 / 52.75 ±0.47 / 53.40 ms │         53.44 / 54.44 ±0.55 / 54.98 ms │     no change │
│ QQuery 6  │        36.72 / 37.26 ±0.39 / 37.60 ms │         38.40 / 38.61 ±0.15 / 38.86 ms │     no change │
│ QQuery 7  │       96.31 / 98.88 ±3.29 / 105.11 ms │       98.20 / 104.69 ±3.26 / 106.80 ms │  1.06x slower │
│ QQuery 8  │        37.21 / 37.67 ±0.38 / 38.12 ms │         40.58 / 41.20 ±0.66 / 42.35 ms │  1.09x slower │
│ QQuery 9  │        52.78 / 56.19 ±1.82 / 58.00 ms │         58.81 / 60.38 ±1.28 / 62.20 ms │  1.07x slower │
│ QQuery 10 │        64.39 / 64.81 ±0.45 / 65.64 ms │         68.51 / 71.71 ±2.53 / 76.19 ms │  1.11x slower │
│ QQuery 11 │     316.40 / 322.79 ±4.87 / 331.23 ms │     354.56 / 368.03 ±10.90 / 383.23 ms │  1.14x slower │
│ QQuery 12 │        29.37 / 29.83 ±0.79 / 31.41 ms │         32.19 / 33.12 ±0.84 / 34.52 ms │  1.11x slower │
│ QQuery 13 │     121.17 / 123.76 ±4.11 / 131.88 ms │      123.68 / 125.41 ±1.49 / 127.97 ms │     no change │
│ QQuery 14 │     419.72 / 423.01 ±1.72 / 424.68 ms │      429.64 / 434.54 ±2.94 / 437.66 ms │     no change │
│ QQuery 15 │        59.66 / 60.39 ±0.74 / 61.69 ms │         65.70 / 67.77 ±2.47 / 72.44 ms │  1.12x slower │
│ QQuery 16 │           6.80 / 6.95 ±0.19 / 7.32 ms │            7.08 / 7.24 ±0.11 / 7.38 ms │     no change │
│ QQuery 17 │        81.29 / 82.56 ±1.32 / 84.78 ms │         83.61 / 85.20 ±1.90 / 88.90 ms │     no change │
│ QQuery 18 │     125.77 / 127.29 ±0.95 / 128.66 ms │      131.92 / 134.49 ±1.96 / 137.89 ms │  1.06x slower │
│ QQuery 19 │        42.54 / 43.58 ±1.37 / 46.27 ms │         44.33 / 44.94 ±0.52 / 45.73 ms │     no change │
│ QQuery 20 │        37.26 / 38.01 ±0.80 / 39.55 ms │         38.08 / 39.03 ±0.89 / 40.62 ms │     no change │
│ QQuery 21 │        18.11 / 18.29 ±0.20 / 18.58 ms │         18.95 / 19.55 ±0.89 / 21.32 ms │  1.07x slower │
│ QQuery 22 │        63.32 / 63.97 ±0.41 / 64.40 ms │         68.09 / 70.55 ±1.26 / 71.58 ms │  1.10x slower │
│ QQuery 23 │     353.02 / 356.66 ±2.07 / 358.48 ms │      381.17 / 388.99 ±7.38 / 400.08 ms │  1.09x slower │
│ QQuery 24 │     228.07 / 233.93 ±5.17 / 242.14 ms │      237.72 / 239.83 ±2.81 / 245.38 ms │     no change │
│ QQuery 25 │     119.93 / 122.64 ±1.75 / 124.53 ms │      117.58 / 119.56 ±2.14 / 123.49 ms │     no change │
│ QQuery 26 │        62.55 / 63.35 ±0.43 / 63.70 ms │         60.91 / 62.46 ±2.35 / 67.07 ms │     no change │
│ QQuery 27 │           7.21 / 7.36 ±0.09 / 7.47 ms │            6.86 / 7.02 ±0.09 / 7.14 ms │     no change │
│ QQuery 28 │        60.78 / 64.49 ±1.88 / 65.83 ms │         60.59 / 64.57 ±2.06 / 66.39 ms │     no change │
│ QQuery 29 │      99.94 / 104.33 ±4.66 / 112.57 ms │      102.33 / 104.18 ±1.44 / 106.68 ms │     no change │
│ QQuery 30 │        32.80 / 33.02 ±0.25 / 33.50 ms │         35.29 / 37.07 ±2.03 / 40.94 ms │  1.12x slower │
│ QQuery 31 │     114.57 / 117.92 ±2.70 / 121.55 ms │      118.42 / 120.08 ±1.21 / 121.33 ms │     no change │
│ QQuery 32 │        22.05 / 22.49 ±0.36 / 22.94 ms │         22.69 / 22.78 ±0.08 / 22.91 ms │     no change │
│ QQuery 33 │        39.15 / 39.49 ±0.23 / 39.83 ms │         40.10 / 40.30 ±0.22 / 40.58 ms │     no change │
│ QQuery 34 │        10.44 / 10.65 ±0.20 / 10.99 ms │         11.17 / 12.87 ±2.67 / 18.18 ms │  1.21x slower │
│ QQuery 35 │        74.33 / 76.66 ±1.69 / 78.43 ms │         79.58 / 81.24 ±1.07 / 82.53 ms │  1.06x slower │
│ QQuery 36 │           5.92 / 6.10 ±0.19 / 6.45 ms │            6.33 / 6.45 ±0.10 / 6.64 ms │  1.06x slower │
│ QQuery 37 │           7.09 / 7.19 ±0.07 / 7.26 ms │            7.52 / 7.63 ±0.07 / 7.72 ms │  1.06x slower │
│ QQuery 38 │        64.43 / 65.20 ±0.62 / 66.24 ms │         68.35 / 69.24 ±0.95 / 70.90 ms │  1.06x slower │
│ QQuery 39 │        91.82 / 92.30 ±0.37 / 92.79 ms │      100.21 / 112.82 ±7.07 / 121.77 ms │  1.22x slower │
│ QQuery 40 │        24.13 / 24.29 ±0.14 / 24.51 ms │         26.50 / 27.04 ±0.43 / 27.63 ms │  1.11x slower │
│ QQuery 41 │        11.79 / 11.96 ±0.14 / 12.20 ms │         13.74 / 14.11 ±0.23 / 14.43 ms │  1.18x slower │
│ QQuery 42 │        24.92 / 26.43 ±1.90 / 29.94 ms │         27.64 / 28.18 ±0.39 / 28.69 ms │  1.07x slower │
│ QQuery 43 │           4.97 / 5.15 ±0.19 / 5.52 ms │            5.82 / 6.07 ±0.21 / 6.38 ms │  1.18x slower │
│ QQuery 44 │           9.59 / 9.71 ±0.12 / 9.87 ms │         11.44 / 11.66 ±0.18 / 11.98 ms │  1.20x slower │
│ QQuery 45 │        39.59 / 40.18 ±0.47 / 40.97 ms │         56.01 / 58.29 ±1.84 / 61.36 ms │  1.45x slower │
│ QQuery 46 │        12.08 / 12.49 ±0.31 / 12.93 ms │         14.09 / 14.55 ±0.48 / 15.16 ms │  1.16x slower │
│ QQuery 47 │     234.62 / 237.55 ±2.27 / 240.43 ms │     262.41 / 279.04 ±17.71 / 313.02 ms │  1.17x slower │
│ QQuery 48 │        97.39 / 97.98 ±0.34 / 98.35 ms │      101.06 / 105.21 ±5.04 / 114.98 ms │  1.07x slower │
│ QQuery 49 │        78.43 / 80.35 ±2.83 / 85.90 ms │         80.12 / 82.33 ±1.65 / 84.42 ms │     no change │
│ QQuery 50 │        59.90 / 60.67 ±0.54 / 61.41 ms │         62.56 / 63.74 ±0.85 / 64.73 ms │  1.05x slower │
│ QQuery 51 │        93.63 / 94.61 ±0.70 / 95.77 ms │        96.79 / 99.32 ±2.03 / 101.73 ms │     no change │
│ QQuery 52 │        25.18 / 25.42 ±0.22 / 25.69 ms │         25.45 / 25.98 ±0.37 / 26.51 ms │     no change │
│ QQuery 53 │        30.17 / 30.36 ±0.13 / 30.52 ms │         30.84 / 31.68 ±1.06 / 33.74 ms │     no change │
│ QQuery 54 │        56.81 / 57.42 ±0.33 / 57.79 ms │         58.18 / 58.58 ±0.30 / 59.05 ms │     no change │
│ QQuery 55 │        24.26 / 24.63 ±0.35 / 25.26 ms │         24.83 / 26.49 ±2.37 / 31.12 ms │  1.08x slower │
│ QQuery 56 │        39.93 / 41.45 ±1.70 / 44.66 ms │         41.25 / 41.53 ±0.23 / 41.81 ms │     no change │
│ QQuery 57 │     178.09 / 180.34 ±1.41 / 181.84 ms │      186.52 / 191.42 ±3.02 / 195.59 ms │  1.06x slower │
│ QQuery 58 │     117.36 / 119.34 ±1.98 / 123.11 ms │      122.30 / 123.96 ±1.71 / 126.41 ms │     no change │
│ QQuery 59 │     119.90 / 121.61 ±2.49 / 126.55 ms │      121.68 / 122.94 ±1.56 / 126.00 ms │     no change │
│ QQuery 60 │        40.42 / 41.44 ±0.78 / 42.77 ms │         41.59 / 42.76 ±0.78 / 43.75 ms │     no change │
│ QQuery 61 │        12.32 / 12.76 ±0.39 / 13.43 ms │         12.95 / 13.12 ±0.12 / 13.32 ms │     no change │
│ QQuery 62 │        47.44 / 47.62 ±0.15 / 47.85 ms │         48.07 / 48.50 ±0.25 / 48.75 ms │     no change │
│ QQuery 63 │        30.10 / 30.33 ±0.15 / 30.55 ms │         31.04 / 32.53 ±2.06 / 36.61 ms │  1.07x slower │
│ QQuery 64 │     414.79 / 419.32 ±2.85 / 422.22 ms │      436.57 / 440.22 ±5.49 / 450.98 ms │     no change │
│ QQuery 65 │     149.99 / 154.50 ±3.01 / 158.83 ms │      151.23 / 155.55 ±2.58 / 158.26 ms │     no change │
│ QQuery 66 │        81.35 / 83.75 ±2.32 / 88.00 ms │         84.58 / 85.08 ±0.27 / 85.33 ms │     no change │
│ QQuery 67 │     248.41 / 252.96 ±4.73 / 261.27 ms │      272.04 / 275.23 ±2.68 / 278.11 ms │  1.09x slower │
│ QQuery 68 │        12.01 / 12.22 ±0.21 / 12.54 ms │         12.72 / 12.87 ±0.11 / 13.01 ms │  1.05x slower │
│ QQuery 69 │        58.54 / 58.77 ±0.20 / 59.07 ms │         59.75 / 62.50 ±3.07 / 68.40 ms │  1.06x slower │
│ QQuery 70 │     108.77 / 114.01 ±5.57 / 120.98 ms │      111.49 / 114.10 ±3.33 / 120.66 ms │     no change │
│ QQuery 71 │        36.97 / 37.38 ±0.38 / 37.89 ms │         37.31 / 37.75 ±0.30 / 38.04 ms │     no change │
│ QQuery 72 │ 2286.96 / 2413.27 ±82.04 / 2506.98 ms │ 2381.75 / 2617.29 ±134.92 / 2777.96 ms │  1.08x slower │
│ QQuery 73 │        10.38 / 10.57 ±0.20 / 10.86 ms │         10.89 / 11.37 ±0.35 / 11.94 ms │  1.08x slower │
│ QQuery 74 │    179.56 / 192.29 ±10.07 / 203.29 ms │      198.38 / 207.62 ±9.10 / 220.04 ms │  1.08x slower │
│ QQuery 75 │     152.84 / 155.05 ±2.19 / 158.27 ms │      158.07 / 160.75 ±1.60 / 162.53 ms │     no change │
│ QQuery 76 │        36.58 / 37.21 ±0.57 / 38.10 ms │         38.75 / 39.56 ±0.65 / 40.45 ms │  1.06x slower │
│ QQuery 77 │        61.89 / 62.38 ±0.32 / 62.86 ms │         66.81 / 67.75 ±0.72 / 68.85 ms │  1.09x slower │
│ QQuery 78 │     200.31 / 205.02 ±3.78 / 209.61 ms │      212.76 / 217.59 ±4.69 / 224.17 ms │  1.06x slower │
│ QQuery 79 │        69.26 / 71.03 ±2.67 / 76.29 ms │         70.36 / 71.39 ±0.71 / 72.32 ms │     no change │
│ QQuery 80 │     106.83 / 110.26 ±2.50 / 112.97 ms │      104.90 / 109.21 ±7.23 / 123.63 ms │     no change │
│ QQuery 81 │        27.84 / 28.71 ±0.66 / 29.56 ms │         28.02 / 29.29 ±2.23 / 33.74 ms │     no change │
│ QQuery 82 │        18.73 / 20.23 ±2.16 / 24.38 ms │         17.63 / 18.03 ±0.27 / 18.39 ms │ +1.12x faster │
│ QQuery 83 │        44.31 / 45.79 ±1.66 / 49.03 ms │         42.23 / 42.92 ±0.75 / 44.38 ms │ +1.07x faster │
│ QQuery 84 │        32.36 / 33.73 ±1.79 / 37.27 ms │         31.44 / 33.29 ±3.16 / 39.58 ms │     no change │
│ QQuery 85 │     113.60 / 115.19 ±1.29 / 117.15 ms │      111.88 / 113.45 ±1.07 / 115.13 ms │     no change │
│ QQuery 86 │        26.35 / 28.25 ±1.30 / 29.84 ms │         28.42 / 29.05 ±0.52 / 29.75 ms │     no change │
│ QQuery 87 │        64.91 / 66.33 ±1.02 / 68.04 ms │         74.53 / 75.83 ±1.21 / 77.80 ms │  1.14x slower │
│ QQuery 88 │        65.10 / 65.77 ±0.77 / 66.96 ms │         68.51 / 68.96 ±0.49 / 69.86 ms │     no change │
│ QQuery 89 │        37.75 / 38.22 ±0.74 / 39.68 ms │         39.45 / 40.30 ±0.91 / 41.82 ms │  1.05x slower │
│ QQuery 90 │        18.30 / 18.44 ±0.11 / 18.57 ms │         19.08 / 19.29 ±0.13 / 19.45 ms │     no change │
│ QQuery 91 │        48.09 / 48.87 ±0.43 / 49.29 ms │         50.63 / 52.20 ±2.76 / 57.70 ms │  1.07x slower │
│ QQuery 92 │        31.26 / 32.65 ±1.22 / 34.84 ms │         33.71 / 34.45 ±0.44 / 34.86 ms │  1.06x slower │
│ QQuery 93 │        51.35 / 52.77 ±0.84 / 54.00 ms │         56.64 / 57.78 ±1.06 / 59.11 ms │  1.09x slower │
│ QQuery 94 │        39.09 / 39.71 ±0.54 / 40.71 ms │         39.82 / 40.47 ±0.69 / 41.32 ms │     no change │
│ QQuery 95 │        83.35 / 85.05 ±1.76 / 87.30 ms │         84.36 / 86.37 ±1.82 / 88.58 ms │     no change │
│ QQuery 96 │        24.64 / 25.08 ±0.30 / 25.41 ms │         25.38 / 25.62 ±0.17 / 25.90 ms │     no change │
│ QQuery 97 │        47.92 / 48.53 ±0.62 / 49.67 ms │         48.80 / 49.48 ±0.61 / 50.58 ms │     no change │
│ QQuery 98 │        43.50 / 44.14 ±0.45 / 44.76 ms │         46.06 / 46.95 ±0.66 / 47.87 ms │  1.06x slower │
│ QQuery 99 │        72.27 / 74.46 ±1.59 / 76.53 ms │         73.00 / 76.01 ±3.28 / 82.17 ms │     no change │
└───────────┴───────────────────────────────────────┴────────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 10496.62ms │
│ Total Time (use-yield)   │ 11151.34ms │
│ Average Time (HEAD)      │   106.03ms │
│ Average Time (use-yield) │   112.64ms │
│ Queries Faster           │          2 │
│ Queries Slower           │         47 │
│ Queries with No Change   │         50 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.3 GiB
Avg memory 1.6 GiB
CPU user 242.3s
CPU sys 6.2s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 60.0s
Peak memory 2.0 GiB
Avg memory 1.4 GiB
CPU user 260.9s
CPU sys 6.8s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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 use-yield
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                             use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.27 / 4.27 ±5.77 / 15.81 ms │          1.48 / 4.55 ±5.93 / 16.41 ms │  1.07x slower │
│ QQuery 1  │        13.14 / 13.73 ±0.32 / 14.05 ms │        14.06 / 14.37 ±0.26 / 14.73 ms │     no change │
│ QQuery 2  │        36.94 / 37.37 ±0.34 / 37.91 ms │        37.97 / 38.28 ±0.26 / 38.71 ms │     no change │
│ QQuery 3  │        32.05 / 33.86 ±1.49 / 36.47 ms │        31.93 / 33.29 ±0.77 / 34.08 ms │     no change │
│ QQuery 4  │     265.78 / 269.38 ±2.85 / 272.39 ms │     257.97 / 263.92 ±4.70 / 272.13 ms │     no change │
│ QQuery 5  │     302.05 / 308.05 ±4.12 / 313.83 ms │     296.35 / 299.07 ±1.79 / 301.77 ms │     no change │
│ QQuery 6  │           1.30 / 1.64 ±0.25 / 1.89 ms │           1.32 / 1.49 ±0.26 / 2.00 ms │ +1.11x faster │
│ QQuery 7  │        14.59 / 15.14 ±0.63 / 16.37 ms │        15.03 / 15.25 ±0.15 / 15.48 ms │     no change │
│ QQuery 8  │     357.99 / 361.71 ±2.45 / 364.76 ms │     365.47 / 373.15 ±6.01 / 383.71 ms │     no change │
│ QQuery 9  │    501.47 / 517.24 ±14.44 / 541.77 ms │    508.70 / 527.26 ±18.60 / 551.35 ms │     no change │
│ QQuery 10 │        74.06 / 76.79 ±1.68 / 78.77 ms │        76.53 / 82.22 ±8.78 / 99.64 ms │  1.07x slower │
│ QQuery 11 │       89.10 / 93.59 ±6.44 / 106.31 ms │        88.73 / 90.48 ±2.02 / 94.18 ms │     no change │
│ QQuery 12 │     304.89 / 309.62 ±4.42 / 316.01 ms │     303.62 / 312.43 ±7.17 / 324.03 ms │     no change │
│ QQuery 13 │     423.68 / 434.82 ±9.83 / 450.96 ms │    412.74 / 429.08 ±14.23 / 449.27 ms │     no change │
│ QQuery 14 │     320.70 / 331.28 ±7.35 / 340.08 ms │     316.08 / 329.25 ±7.29 / 336.95 ms │     no change │
│ QQuery 15 │     313.82 / 320.00 ±5.62 / 329.81 ms │     308.96 / 313.65 ±2.97 / 316.98 ms │     no change │
│ QQuery 16 │    697.04 / 721.65 ±22.18 / 756.58 ms │    688.88 / 704.79 ±10.80 / 719.10 ms │     no change │
│ QQuery 17 │     719.00 / 728.55 ±5.65 / 734.23 ms │    670.26 / 686.37 ±11.33 / 699.15 ms │ +1.06x faster │
│ QQuery 18 │ 1395.86 / 1414.20 ±16.00 / 1441.78 ms │ 1321.16 / 1367.50 ±26.58 / 1398.47 ms │     no change │
│ QQuery 19 │        29.02 / 30.36 ±0.97 / 31.61 ms │       29.37 / 38.64 ±17.96 / 74.56 ms │  1.27x slower │
│ QQuery 20 │     523.50 / 533.01 ±8.08 / 543.64 ms │     528.67 / 534.28 ±5.15 / 543.51 ms │     no change │
│ QQuery 21 │     518.80 / 527.07 ±6.85 / 537.09 ms │     531.27 / 538.83 ±5.09 / 546.33 ms │     no change │
│ QQuery 22 │  989.70 / 1001.99 ±10.20 / 1016.51 ms │ 1028.32 / 1043.06 ±10.13 / 1056.34 ms │     no change │
│ QQuery 23 │ 3044.57 / 3146.98 ±72.21 / 3231.85 ms │ 3275.40 / 3341.54 ±45.25 / 3400.99 ms │  1.06x slower │
│ QQuery 24 │        42.01 / 47.34 ±6.46 / 56.99 ms │        43.80 / 44.64 ±1.12 / 46.73 ms │ +1.06x faster │
│ QQuery 25 │     113.52 / 120.65 ±8.18 / 135.73 ms │     119.18 / 124.51 ±6.18 / 135.64 ms │     no change │
│ QQuery 26 │        42.75 / 44.00 ±1.49 / 46.83 ms │        43.90 / 45.14 ±1.33 / 47.55 ms │     no change │
│ QQuery 27 │    672.45 / 684.98 ±12.06 / 706.51 ms │     694.30 / 701.62 ±5.58 / 709.35 ms │     no change │
│ QQuery 28 │ 3087.69 / 3108.60 ±27.61 / 3161.52 ms │ 3180.00 / 3199.70 ±19.92 / 3230.88 ms │     no change │
│ QQuery 29 │       41.51 / 53.91 ±21.13 / 96.07 ms │      43.41 / 62.34 ±36.31 / 134.96 ms │  1.16x slower │
│ QQuery 30 │     320.74 / 334.38 ±7.41 / 340.79 ms │     335.64 / 342.29 ±6.11 / 353.84 ms │     no change │
│ QQuery 31 │     296.20 / 307.67 ±6.22 / 314.48 ms │     308.55 / 318.83 ±9.30 / 334.53 ms │     no change │
│ QQuery 32 │ 1002.01 / 1058.87 ±41.16 / 1117.65 ms │ 1071.77 / 1092.90 ±21.93 / 1120.30 ms │     no change │
│ QQuery 33 │ 1597.79 / 1626.57 ±21.18 / 1661.88 ms │ 1558.43 / 1626.80 ±81.32 / 1769.12 ms │     no change │
│ QQuery 34 │ 1671.60 / 1723.91 ±31.49 / 1761.65 ms │ 1554.01 / 1617.88 ±51.98 / 1699.48 ms │ +1.07x faster │
│ QQuery 35 │    343.44 / 356.74 ±15.62 / 387.38 ms │    314.92 / 328.14 ±14.70 / 356.71 ms │ +1.09x faster │
│ QQuery 36 │        71.54 / 78.90 ±6.23 / 87.34 ms │        70.21 / 76.82 ±5.80 / 87.34 ms │     no change │
│ QQuery 37 │        38.29 / 40.67 ±4.49 / 49.64 ms │        37.30 / 38.49 ±1.38 / 40.99 ms │ +1.06x faster │
│ QQuery 38 │        41.58 / 46.44 ±2.88 / 49.86 ms │        41.56 / 44.66 ±3.74 / 50.49 ms │     no change │
│ QQuery 39 │     152.28 / 170.08 ±9.51 / 179.33 ms │     164.10 / 168.36 ±5.09 / 178.13 ms │     no change │
│ QQuery 40 │        15.61 / 17.30 ±2.75 / 22.71 ms │        15.14 / 15.42 ±0.20 / 15.74 ms │ +1.12x faster │
│ QQuery 41 │        14.98 / 18.34 ±3.88 / 24.15 ms │       15.44 / 23.70 ±10.01 / 43.00 ms │  1.29x slower │
│ QQuery 42 │        14.32 / 14.97 ±1.17 / 17.30 ms │        14.52 / 16.23 ±2.92 / 22.05 ms │  1.08x slower │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 21086.61ms │
│ Total Time (use-yield)   │ 21271.20ms │
│ Average Time (HEAD)      │   490.39ms │
│ Average Time (use-yield) │   494.68ms │
│ Queries Faster           │          7 │
│ Queries Slower           │          7 │
│ Queries with No Change   │         29 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 110.0s
Peak memory 11.6 GiB
Avg memory 4.6 GiB
CPU user 1081.6s
CPU sys 77.2s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 110.0s
Peak memory 12.2 GiB
Avg memory 4.6 GiB
CPU user 1085.8s
CPU sys 80.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)

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                                    use-yield
-----                                               ----                                    ---------
merge sorted f64 100k                               1.01      3.4±0.02ms        ? ?/sec     1.00      3.3±0.02ms        ? ?/sec
merge sorted f64 1M                                 1.01     34.4±0.18ms        ? ?/sec     1.00     33.9±0.21ms        ? ?/sec
merge sorted i64 100k                               1.01      3.3±0.07ms        ? ?/sec     1.00      3.3±0.01ms        ? ?/sec
merge sorted i64 1M                                 1.01     33.2±0.14ms        ? ?/sec     1.00     32.9±0.11ms        ? ?/sec
merge sorted mixed dictionary tuple 100k            1.03      7.8±0.07ms        ? ?/sec     1.00      7.6±0.04ms        ? ?/sec
merge sorted mixed dictionary tuple 1M              1.00     75.0±0.41ms        ? ?/sec     1.00     75.1±0.23ms        ? ?/sec
merge sorted mixed tuple 100k                       1.01      7.8±0.05ms        ? ?/sec     1.00      7.7±0.04ms        ? ?/sec
merge sorted mixed tuple 1M                         1.00     76.1±0.18ms        ? ?/sec     1.01     76.9±0.23ms        ? ?/sec
merge sorted mixed tuple with utf8 view 100k        1.03      7.5±0.07ms        ? ?/sec     1.00      7.2±0.07ms        ? ?/sec
merge sorted mixed tuple with utf8 view 1M          1.00     71.5±0.21ms        ? ?/sec     1.01     72.2±0.19ms        ? ?/sec
merge sorted utf8 dictionary 100k                   1.00      3.6±0.02ms        ? ?/sec     1.00      3.6±0.01ms        ? ?/sec
merge sorted utf8 dictionary 1M                     1.00     35.1±0.20ms        ? ?/sec     1.01     35.3±0.13ms        ? ?/sec
merge sorted utf8 dictionary tuple 100k             1.01      5.2±0.03ms        ? ?/sec     1.00      5.2±0.03ms        ? ?/sec
merge sorted utf8 dictionary tuple 1M               1.00     51.2±0.25ms        ? ?/sec     1.00     51.1±0.24ms        ? ?/sec
merge sorted utf8 high cardinality 100k             1.04      5.3±0.02ms        ? ?/sec     1.00      5.1±0.02ms        ? ?/sec
merge sorted utf8 high cardinality 1M               1.29   106.5±63.91ms        ? ?/sec     1.00    82.8±49.91ms        ? ?/sec
merge sorted utf8 low cardinality 100k              1.03      3.5±0.02ms        ? ?/sec     1.00      3.4±0.01ms        ? ?/sec
merge sorted utf8 low cardinality 1M                1.03     36.3±0.17ms        ? ?/sec     1.00     35.2±0.19ms        ? ?/sec
merge sorted utf8 tuple 100k                        1.03      8.4±0.07ms        ? ?/sec     1.00      8.2±0.04ms        ? ?/sec
merge sorted utf8 tuple 1M                          1.00     82.1±0.45ms        ? ?/sec     1.00     82.4±0.44ms        ? ?/sec
merge sorted utf8 view high cardinality 100k        1.10      4.7±0.04ms        ? ?/sec     1.00      4.3±0.04ms        ? ?/sec
merge sorted utf8 view high cardinality 1M          1.26    76.8±31.44ms        ? ?/sec     1.00    60.9±25.01ms        ? ?/sec
merge sorted utf8 view low cardinality 100k         1.04      2.4±0.02ms        ? ?/sec     1.00      2.4±0.01ms        ? ?/sec
merge sorted utf8 view low cardinality 1M           1.03     25.0±0.16ms        ? ?/sec     1.00     24.4±0.15ms        ? ?/sec
merge sorted utf8 view tuple 100k                   1.05      8.1±0.13ms        ? ?/sec     1.00      7.8±0.05ms        ? ?/sec
merge sorted utf8 view tuple 1M                     1.01     78.5±0.44ms        ? ?/sec     1.00     78.0±0.72ms        ? ?/sec
sort f64 100k                                       1.01      2.7±0.01ms        ? ?/sec     1.00      2.7±0.02ms        ? ?/sec
sort f64 1M                                         1.01     23.8±0.48ms        ? ?/sec     1.00     23.6±0.50ms        ? ?/sec
sort i64 100k                                       1.02      2.5±0.02ms        ? ?/sec     1.00      2.4±0.01ms        ? ?/sec
sort i64 1M                                         1.02     22.8±0.39ms        ? ?/sec     1.00     22.4±0.38ms        ? ?/sec
sort merge f64 100k                                 1.01      3.1±0.01ms        ? ?/sec     1.00      3.1±0.01ms        ? ?/sec
sort merge f64 1M                                   1.02     31.4±0.10ms        ? ?/sec     1.00     30.8±0.07ms        ? ?/sec
sort merge i64 100k                                 1.01      3.0±0.01ms        ? ?/sec     1.00      3.0±0.01ms        ? ?/sec
sort merge i64 1M                                   1.01     30.2±0.07ms        ? ?/sec     1.00     29.8±0.12ms        ? ?/sec
sort merge mixed dictionary tuple 100k              1.01      7.2±0.03ms        ? ?/sec     1.00      7.1±0.02ms        ? ?/sec
sort merge mixed dictionary tuple 1M                1.00     73.0±0.44ms        ? ?/sec     1.00     73.1±0.36ms        ? ?/sec
sort merge mixed tuple 100k                         1.00      7.2±0.05ms        ? ?/sec     1.00      7.2±0.02ms        ? ?/sec
sort merge mixed tuple 1M                           1.00     73.3±0.21ms        ? ?/sec     1.01     74.3±0.27ms        ? ?/sec
sort merge mixed tuple with utf8 view 100k          1.00      7.1±0.05ms        ? ?/sec     1.01      7.1±0.04ms        ? ?/sec
sort merge mixed tuple with utf8 view 1M            1.00     68.0±0.22ms        ? ?/sec     1.01     68.9±0.21ms        ? ?/sec
sort merge utf8 dictionary 100k                     1.01      3.1±0.01ms        ? ?/sec     1.00      3.1±0.01ms        ? ?/sec
sort merge utf8 dictionary 1M                       1.00     31.0±0.14ms        ? ?/sec     1.01     31.2±0.11ms        ? ?/sec
sort merge utf8 dictionary tuple 100k               1.01      4.8±0.03ms        ? ?/sec     1.00      4.8±0.02ms        ? ?/sec
sort merge utf8 dictionary tuple 1M                 1.00     49.5±0.26ms        ? ?/sec     1.01     49.9±0.26ms        ? ?/sec
sort merge utf8 high cardinality 100k               1.04      5.0±0.02ms        ? ?/sec     1.00      4.8±0.01ms        ? ?/sec
sort merge utf8 high cardinality 1M                 1.03     49.7±0.19ms        ? ?/sec     1.00     48.1±0.11ms        ? ?/sec
sort merge utf8 low cardinality 100k                1.03      3.3±0.01ms        ? ?/sec     1.00      3.2±0.01ms        ? ?/sec
sort merge utf8 low cardinality 1M                  1.03     33.1±0.10ms        ? ?/sec     1.00     32.0±0.14ms        ? ?/sec
sort merge utf8 tuple 100k                          1.01      8.4±0.06ms        ? ?/sec     1.00      8.3±0.04ms        ? ?/sec
sort merge utf8 tuple 1M                            1.00     80.3±0.39ms        ? ?/sec     1.01     80.8±0.44ms        ? ?/sec
sort merge utf8 view high cardinality 100k          1.09      4.5±0.05ms        ? ?/sec     1.00      4.1±0.02ms        ? ?/sec
sort merge utf8 view high cardinality 1M            1.08     43.8±0.35ms        ? ?/sec     1.00     40.7±0.35ms        ? ?/sec
sort merge utf8 view low cardinality 100k           1.05      2.2±0.01ms        ? ?/sec     1.00      2.1±0.01ms        ? ?/sec
sort merge utf8 view low cardinality 1M             1.04     21.4±0.07ms        ? ?/sec     1.00     20.7±0.12ms        ? ?/sec
sort merge utf8 view tuple 100k                     1.02      7.8±0.06ms        ? ?/sec     1.00      7.6±0.03ms        ? ?/sec
sort merge utf8 view tuple 1M                       1.00     76.1±0.43ms        ? ?/sec     1.00     76.3±0.33ms        ? ?/sec
sort mixed dictionary tuple 100k                    1.03     11.0±0.07ms        ? ?/sec     1.00     10.7±0.07ms        ? ?/sec
sort mixed dictionary tuple 1M                      1.01    148.1±1.81ms        ? ?/sec     1.00    146.0±1.49ms        ? ?/sec
sort mixed tuple 100k                               1.03     10.4±0.07ms        ? ?/sec     1.00     10.0±0.04ms        ? ?/sec
sort mixed tuple 1M                                 1.01    119.6±0.97ms        ? ?/sec     1.00    118.4±0.86ms        ? ?/sec
sort mixed tuple with utf8 view 100k                1.04      9.8±0.08ms        ? ?/sec     1.00      9.5±0.06ms        ? ?/sec
sort mixed tuple with utf8 view 1M                  1.00    112.9±0.79ms        ? ?/sec     1.00    113.2±0.82ms        ? ?/sec
sort partitioned f64 100k                           1.05  140.2±174.36µs        ? ?/sec     1.00  133.1±130.38µs        ? ?/sec
sort partitioned f64 1M                             1.07  1771.7±77.84µs        ? ?/sec     1.00  1657.1±82.48µs        ? ?/sec
sort partitioned i64 100k                           1.05  141.7±198.79µs        ? ?/sec     1.00  134.5±154.97µs        ? ?/sec
sort partitioned i64 1M                             1.12  1809.4±73.89µs        ? ?/sec     1.00  1617.1±104.07µs        ? ?/sec
sort partitioned mixed dictionary tuple 100k        1.02  534.7±273.63µs        ? ?/sec     1.00  525.0±180.76µs        ? ?/sec
sort partitioned mixed dictionary tuple 1M          1.04     11.4±0.40ms        ? ?/sec     1.00     11.0±0.17ms        ? ?/sec
sort partitioned mixed tuple 100k                   1.03  315.8±180.36µs        ? ?/sec     1.00  307.0±138.14µs        ? ?/sec
sort partitioned mixed tuple 1M                     1.01     10.0±0.29ms        ? ?/sec     1.00      9.8±0.07ms        ? ?/sec
sort partitioned mixed tuple with utf8 view 100k    1.01   876.3±94.99µs        ? ?/sec     1.00   870.9±81.73µs        ? ?/sec
sort partitioned mixed tuple with utf8 view 1M      1.02      9.1±0.27ms        ? ?/sec     1.00      9.0±0.08ms        ? ?/sec
sort partitioned utf8 dictionary 100k               1.08  179.7±288.47µs        ? ?/sec     1.00  166.2±191.79µs        ? ?/sec
sort partitioned utf8 dictionary 1M                 1.00      2.7±0.03ms        ? ?/sec     1.00      2.7±0.02ms        ? ?/sec
sort partitioned utf8 dictionary tuple 100k         1.00   460.5±95.20µs        ? ?/sec     1.01  464.6±118.64µs        ? ?/sec
sort partitioned utf8 dictionary tuple 1M           1.03     10.5±0.41ms        ? ?/sec     1.00     10.2±0.16ms        ? ?/sec
sort partitioned utf8 high cardinality 100k         1.06  199.2±277.22µs        ? ?/sec     1.00  188.4±210.98µs        ? ?/sec
sort partitioned utf8 high cardinality 1M           1.04      3.9±0.06ms        ? ?/sec     1.00      3.7±0.04ms        ? ?/sec
sort partitioned utf8 low cardinality 100k          1.02   197.4±89.58µs        ? ?/sec     1.00   194.2±71.66µs        ? ?/sec
sort partitioned utf8 low cardinality 1M            1.02      3.2±0.03ms        ? ?/sec     1.00      3.1±0.03ms        ? ?/sec
sort partitioned utf8 tuple 100k                    1.01  1152.3±127.91µs        ? ?/sec    1.00  1138.3±112.16µs        ? ?/sec
sort partitioned utf8 tuple 1M                      1.03     12.2±0.45ms        ? ?/sec     1.00     11.9±0.16ms        ? ?/sec
sort partitioned utf8 view high cardinality 100k    1.00  367.9±196.94µs        ? ?/sec     1.03  379.1±154.61µs        ? ?/sec
sort partitioned utf8 view high cardinality 1M      1.06      4.3±0.08ms        ? ?/sec     1.00      4.1±0.11ms        ? ?/sec
sort partitioned utf8 view low cardinality 100k     1.07  158.1±186.45µs        ? ?/sec     1.00  147.6±106.62µs        ? ?/sec
sort partitioned utf8 view low cardinality 1M       1.07      2.3±0.06ms        ? ?/sec     1.00      2.2±0.03ms        ? ?/sec
sort partitioned utf8 view tuple 100k               1.02   974.9±73.67µs        ? ?/sec     1.00   958.8±67.53µs        ? ?/sec
sort partitioned utf8 view tuple 1M                 1.00     10.3±0.13ms        ? ?/sec     1.00     10.3±0.12ms        ? ?/sec
sort utf8 dictionary 100k                           1.04  1188.1±43.17µs        ? ?/sec     1.00  1139.7±11.95µs        ? ?/sec
sort utf8 dictionary 1M                             1.00     27.6±0.32ms        ? ?/sec     1.00     27.5±0.32ms        ? ?/sec
sort utf8 dictionary tuple 100k                     1.02      8.1±0.05ms        ? ?/sec     1.00      7.9±0.04ms        ? ?/sec
sort utf8 dictionary tuple 1M                       1.02    112.1±1.27ms        ? ?/sec     1.00    110.1±1.00ms        ? ?/sec
sort utf8 high cardinality 100k                     1.05      3.8±0.10ms        ? ?/sec     1.00      3.6±0.05ms        ? ?/sec
sort utf8 high cardinality 1M                       1.02     56.3±1.34ms        ? ?/sec     1.00     55.1±1.29ms        ? ?/sec
sort utf8 low cardinality 100k                      1.03      3.8±0.02ms        ? ?/sec     1.00      3.7±0.02ms        ? ?/sec
sort utf8 low cardinality 1M                        1.01     37.4±0.58ms        ? ?/sec     1.00     37.1±0.74ms        ? ?/sec
sort utf8 tuple 100k                                1.05     11.0±0.10ms        ? ?/sec     1.00     10.5±0.05ms        ? ?/sec
sort utf8 tuple 1M                                  1.01    141.6±1.54ms        ? ?/sec     1.00    140.2±2.28ms        ? ?/sec
sort utf8 view high cardinality 100k                1.09      3.9±0.08ms        ? ?/sec     1.00      3.6±0.04ms        ? ?/sec
sort utf8 view high cardinality 1M                  1.06     63.7±0.89ms        ? ?/sec     1.00    59.8±11.67ms        ? ?/sec
sort utf8 view low cardinality 100k                 1.06      2.3±0.03ms        ? ?/sec     1.00      2.2±0.02ms        ? ?/sec
sort utf8 view low cardinality 1M                   1.11     28.0±0.42ms        ? ?/sec     1.00     25.1±0.51ms        ? ?/sec
sort utf8 view tuple 100k                           1.05     10.4±0.11ms        ? ?/sec     1.00     10.0±0.06ms        ? ?/sec
sort utf8 view tuple 1M                             1.01    139.0±1.14ms        ? ?/sec     1.00    137.3±1.31ms        ? ?/sec

Resource Usage

sort — base (merge-base)

Metric Value
Wall time 3275.7s
Peak memory 792.5 MiB
Avg memory 500.9 MiB
CPU user 4960.0s
CPU sys 230.7s
Peak spill 0 B

sort — branch

Metric Value
Wall time 3450.8s
Peak memory 793.6 MiB
Avg memory 465.3 MiB
CPU user 4874.3s
CPU sys 225.9s
Peak spill 0 B

File an issue against this benchmark runner

@rluvaton

rluvaton commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

run benchmark sort tpch10

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark running (GKE) | trigger
Instance: c4a-highmem-16 (12 vCPU / 65 GiB) | Linux bench-c4924659837-942-59phh 6.12.85+ #1 SMP Mon May 11 08:17:35 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 use-yield (18262df) to b790763 (merge-base) diff using: sort
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)

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 use-yield
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃                      use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 38.38 / 39.93 ±1.93 / 43.65 ms │ 38.08 / 39.30 ±1.18 / 41.03 ms │     no change │
│ QQuery 2  │ 18.96 / 19.45 ±0.36 / 20.01 ms │ 19.10 / 19.41 ±0.38 / 20.16 ms │     no change │
│ QQuery 3  │ 31.78 / 33.19 ±0.76 / 33.99 ms │ 30.99 / 32.35 ±1.42 / 34.23 ms │     no change │
│ QQuery 4  │ 17.55 / 17.72 ±0.09 / 17.84 ms │ 17.44 / 17.76 ±0.36 / 18.46 ms │     no change │
│ QQuery 5  │ 40.26 / 40.84 ±0.46 / 41.53 ms │ 37.99 / 40.52 ±1.69 / 43.27 ms │     no change │
│ QQuery 6  │ 16.28 / 17.90 ±1.24 / 19.08 ms │ 16.20 / 16.87 ±0.87 / 18.60 ms │ +1.06x faster │
│ QQuery 7  │ 44.07 / 46.78 ±2.98 / 52.27 ms │ 44.53 / 45.72 ±0.89 / 46.90 ms │     no change │
│ QQuery 8  │ 43.12 / 43.38 ±0.19 / 43.61 ms │ 43.49 / 44.82 ±1.41 / 46.83 ms │     no change │
│ QQuery 9  │ 50.18 / 50.47 ±0.30 / 51.06 ms │ 48.89 / 49.88 ±0.82 / 51.06 ms │     no change │
│ QQuery 10 │ 42.23 / 42.59 ±0.27 / 42.93 ms │ 42.08 / 42.80 ±0.98 / 44.75 ms │     no change │
│ QQuery 11 │ 13.45 / 13.73 ±0.30 / 14.21 ms │ 13.23 / 13.43 ±0.18 / 13.73 ms │     no change │
│ QQuery 12 │ 24.10 / 24.91 ±1.03 / 26.91 ms │ 23.87 / 25.04 ±1.22 / 27.39 ms │     no change │
│ QQuery 13 │ 31.80 / 33.57 ±1.75 / 36.77 ms │ 32.23 / 34.91 ±1.82 / 37.49 ms │     no change │
│ QQuery 14 │ 23.79 / 24.06 ±0.22 / 24.30 ms │ 23.96 / 24.58 ±0.37 / 25.02 ms │     no change │
│ QQuery 15 │ 31.24 / 32.18 ±0.72 / 33.08 ms │ 31.26 / 31.64 ±0.45 / 32.31 ms │     no change │
│ QQuery 16 │ 13.84 / 14.17 ±0.29 / 14.71 ms │ 13.97 / 14.13 ±0.15 / 14.36 ms │     no change │
│ QQuery 17 │ 73.57 / 75.13 ±1.76 / 77.94 ms │ 72.47 / 73.83 ±0.81 / 74.80 ms │     no change │
│ QQuery 18 │ 58.72 / 59.86 ±1.15 / 61.87 ms │ 59.08 / 60.06 ±0.65 / 60.82 ms │     no change │
│ QQuery 19 │ 33.03 / 34.33 ±1.26 / 36.48 ms │ 32.89 / 33.65 ±0.93 / 35.45 ms │     no change │
│ QQuery 20 │ 31.91 / 32.23 ±0.18 / 32.42 ms │ 31.76 / 32.13 ±0.22 / 32.43 ms │     no change │
│ QQuery 21 │ 54.59 / 56.01 ±1.24 / 58.05 ms │ 55.07 / 55.45 ±0.32 / 55.93 ms │     no change │
│ QQuery 22 │ 13.73 / 14.15 ±0.28 / 14.62 ms │ 13.89 / 13.99 ±0.09 / 14.15 ms │     no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary        ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)        │ 766.59ms │
│ Total Time (use-yield)   │ 762.28ms │
│ Average Time (HEAD)      │  34.84ms │
│ Average Time (use-yield) │  34.65ms │
│ Queries Faster           │        1 │
│ Queries Slower           │        0 │
│ Queries with No Change   │       21 │
│ Queries with Failure     │        0 │
└──────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

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

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 1.1 GiB
Avg memory 507.4 MiB
CPU user 22.1s
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)

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 use-yield
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Query     ┃                               HEAD ┃                          use-yield ┃    Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ QQuery 1  │  307.41 / 309.75 ±1.37 / 311.37 ms │  308.25 / 310.82 ±1.67 / 312.37 ms │ no change │
│ QQuery 2  │  100.64 / 103.66 ±2.12 / 106.23 ms │  101.83 / 104.77 ±2.16 / 107.57 ms │ no change │
│ QQuery 3  │  231.58 / 237.33 ±3.20 / 240.57 ms │  224.04 / 232.23 ±4.63 / 237.82 ms │ no change │
│ QQuery 4  │  112.61 / 113.92 ±1.39 / 116.18 ms │  111.56 / 112.32 ±0.71 / 113.52 ms │ no change │
│ QQuery 5  │  349.35 / 355.50 ±5.42 / 363.46 ms │  354.93 / 359.01 ±3.04 / 364.00 ms │ no change │
│ QQuery 6  │  123.38 / 124.93 ±1.45 / 126.68 ms │  122.94 / 125.60 ±2.33 / 128.55 ms │ no change │
│ QQuery 7  │  458.51 / 468.83 ±8.86 / 480.00 ms │  451.91 / 461.95 ±6.04 / 470.60 ms │ no change │
│ QQuery 8  │  377.04 / 383.12 ±8.20 / 399.14 ms │  378.32 / 382.67 ±2.25 / 384.61 ms │ no change │
│ QQuery 9  │  548.18 / 554.53 ±5.55 / 562.91 ms │  540.35 / 553.08 ±8.45 / 563.64 ms │ no change │
│ QQuery 10 │  304.26 / 309.25 ±5.24 / 317.67 ms │  297.45 / 301.78 ±2.37 / 304.29 ms │ no change │
│ QQuery 11 │    87.72 / 92.63 ±5.70 / 103.35 ms │    85.69 / 91.21 ±6.64 / 102.50 ms │ no change │
│ QQuery 12 │  176.71 / 183.04 ±3.19 / 185.10 ms │  177.18 / 179.05 ±2.87 / 184.71 ms │ no change │
│ QQuery 13 │  287.37 / 293.52 ±5.78 / 301.49 ms │ 290.88 / 297.68 ±10.68 / 318.82 ms │ no change │
│ QQuery 14 │  170.96 / 177.46 ±6.62 / 188.01 ms │  168.66 / 174.88 ±5.48 / 182.62 ms │ no change │
│ QQuery 15 │  305.50 / 307.27 ±1.56 / 309.77 ms │  300.01 / 300.99 ±0.56 / 301.55 ms │ no change │
│ QQuery 16 │     67.31 / 70.98 ±3.99 / 78.28 ms │     64.28 / 68.71 ±6.06 / 80.71 ms │ no change │
│ QQuery 17 │ 620.70 / 634.10 ±10.05 / 646.39 ms │  615.21 / 622.69 ±5.29 / 631.60 ms │ no change │
│ QQuery 18 │ 664.95 / 682.26 ±16.54 / 713.72 ms │  677.41 / 687.23 ±8.06 / 698.47 ms │ no change │
│ QQuery 19 │  248.16 / 261.75 ±9.74 / 275.05 ms │ 244.81 / 259.36 ±14.56 / 278.29 ms │ no change │
│ QQuery 20 │  276.74 / 286.70 ±6.78 / 294.57 ms │  284.63 / 292.67 ±7.09 / 303.15 ms │ no change │
│ QQuery 21 │  658.69 / 669.72 ±8.46 / 684.46 ms │  655.92 / 665.15 ±8.82 / 677.93 ms │ no change │
│ QQuery 22 │     60.18 / 63.51 ±3.44 / 68.29 ms │     60.17 / 63.82 ±4.78 / 73.16 ms │ no change │
└───────────┴────────────────────────────────────┴────────────────────────────────────┴───────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary        ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 6683.76ms │
│ Total Time (use-yield)   │ 6647.66ms │
│ Average Time (HEAD)      │  303.81ms │
│ Average Time (use-yield) │  302.17ms │
│ Queries Faster           │         0 │
│ Queries Slower           │         0 │
│ Queries with No Change   │        22 │
│ Queries with Failure     │         0 │
└──────────────────────────┴───────────┘

Resource Usage

tpch10 — base (merge-base)

Metric Value
Wall time 35.0s
Peak memory 5.0 GiB
Avg memory 1.5 GiB
CPU user 339.2s
CPU sys 18.8s
Peak spill 0 B

tpch10 — branch

Metric Value
Wall time 35.0s
Peak memory 4.8 GiB
Avg memory 1.4 GiB
CPU user 337.6s
CPU sys 18.5s
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)

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 use-yield
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                             use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.59 / 6.12 ±0.86 / 7.83 ms │           5.31 / 5.89 ±0.87 / 7.61 ms │     no change │
│ QQuery 2  │        81.53 / 82.11 ±0.34 / 82.58 ms │        81.72 / 82.02 ±0.26 / 82.33 ms │     no change │
│ QQuery 3  │        29.84 / 30.11 ±0.19 / 30.37 ms │        30.13 / 30.56 ±0.23 / 30.79 ms │     no change │
│ QQuery 4  │     497.50 / 503.40 ±4.52 / 508.66 ms │     498.16 / 504.52 ±6.42 / 516.89 ms │     no change │
│ QQuery 5  │        52.04 / 53.06 ±0.61 / 53.97 ms │        52.71 / 53.08 ±0.37 / 53.71 ms │     no change │
│ QQuery 6  │        36.88 / 37.07 ±0.15 / 37.34 ms │        36.54 / 37.00 ±0.46 / 37.85 ms │     no change │
│ QQuery 7  │        95.37 / 96.61 ±1.67 / 99.91 ms │       95.02 / 96.93 ±2.59 / 102.07 ms │     no change │
│ QQuery 8  │        37.28 / 37.98 ±0.56 / 38.77 ms │        37.74 / 37.87 ±0.12 / 38.10 ms │     no change │
│ QQuery 9  │        53.48 / 56.21 ±1.76 / 58.17 ms │        53.69 / 54.49 ±0.61 / 55.28 ms │     no change │
│ QQuery 10 │        63.95 / 64.48 ±0.43 / 65.10 ms │        63.60 / 64.08 ±0.32 / 64.44 ms │     no change │
│ QQuery 11 │     312.87 / 315.87 ±3.01 / 321.23 ms │     301.97 / 307.89 ±3.51 / 311.54 ms │     no change │
│ QQuery 12 │        29.46 / 29.96 ±0.32 / 30.41 ms │        28.95 / 29.44 ±0.39 / 29.87 ms │     no change │
│ QQuery 13 │     120.26 / 121.25 ±0.61 / 121.88 ms │     118.87 / 121.09 ±2.73 / 126.45 ms │     no change │
│ QQuery 14 │     414.78 / 421.16 ±4.37 / 426.60 ms │     417.29 / 424.56 ±6.50 / 433.31 ms │     no change │
│ QQuery 15 │        58.98 / 59.92 ±0.64 / 60.89 ms │        59.29 / 60.61 ±1.06 / 62.45 ms │     no change │
│ QQuery 16 │           6.62 / 6.78 ±0.21 / 7.18 ms │           6.43 / 6.67 ±0.24 / 7.10 ms │     no change │
│ QQuery 17 │        80.93 / 82.05 ±1.32 / 84.18 ms │        81.78 / 82.35 ±0.89 / 84.11 ms │     no change │
│ QQuery 18 │     124.36 / 126.46 ±2.02 / 130.04 ms │     124.80 / 126.44 ±0.86 / 127.24 ms │     no change │
│ QQuery 19 │        42.11 / 42.55 ±0.31 / 42.96 ms │        42.19 / 42.44 ±0.17 / 42.71 ms │     no change │
│ QQuery 20 │        36.41 / 37.82 ±1.66 / 40.93 ms │        35.46 / 36.18 ±0.58 / 37.05 ms │     no change │
│ QQuery 21 │        17.80 / 18.01 ±0.18 / 18.23 ms │        17.76 / 17.94 ±0.18 / 18.19 ms │     no change │
│ QQuery 22 │        62.96 / 63.79 ±1.25 / 66.28 ms │        63.42 / 65.01 ±0.90 / 66.20 ms │     no change │
│ QQuery 23 │     349.08 / 352.51 ±3.04 / 356.68 ms │     350.80 / 355.64 ±4.16 / 361.98 ms │     no change │
│ QQuery 24 │     226.95 / 232.47 ±6.90 / 246.09 ms │     227.86 / 232.21 ±3.58 / 236.65 ms │     no change │
│ QQuery 25 │     111.68 / 112.76 ±1.10 / 114.85 ms │     110.60 / 112.88 ±1.77 / 115.23 ms │     no change │
│ QQuery 26 │        58.40 / 58.88 ±0.29 / 59.30 ms │        58.52 / 58.99 ±0.51 / 59.92 ms │     no change │
│ QQuery 27 │           6.29 / 6.37 ±0.15 / 6.67 ms │           6.14 / 6.31 ±0.16 / 6.60 ms │     no change │
│ QQuery 28 │        62.13 / 62.51 ±0.26 / 62.81 ms │        56.65 / 59.89 ±2.16 / 62.03 ms │     no change │
│ QQuery 29 │      98.21 / 100.38 ±2.22 / 103.26 ms │      97.55 / 101.40 ±3.63 / 108.31 ms │     no change │
│ QQuery 30 │        32.98 / 33.77 ±0.54 / 34.57 ms │        32.50 / 32.73 ±0.16 / 32.93 ms │     no change │
│ QQuery 31 │     113.17 / 114.47 ±0.72 / 115.18 ms │     112.14 / 112.84 ±0.38 / 113.22 ms │     no change │
│ QQuery 32 │        21.27 / 21.51 ±0.15 / 21.63 ms │        20.55 / 20.81 ±0.18 / 21.06 ms │     no change │
│ QQuery 33 │        38.75 / 41.21 ±2.91 / 46.87 ms │        38.48 / 40.76 ±2.87 / 45.79 ms │     no change │
│ QQuery 34 │        10.02 / 10.28 ±0.18 / 10.52 ms │        10.04 / 10.50 ±0.43 / 11.09 ms │     no change │
│ QQuery 35 │        74.27 / 75.30 ±0.87 / 76.87 ms │        73.17 / 73.93 ±0.66 / 74.84 ms │     no change │
│ QQuery 36 │           5.69 / 5.85 ±0.19 / 6.21 ms │           5.54 / 5.69 ±0.20 / 6.07 ms │     no change │
│ QQuery 37 │           6.92 / 7.06 ±0.12 / 7.26 ms │           6.80 / 6.91 ±0.06 / 6.98 ms │     no change │
│ QQuery 38 │        63.56 / 65.30 ±1.27 / 67.25 ms │        62.79 / 64.11 ±0.72 / 64.92 ms │     no change │
│ QQuery 39 │        91.22 / 93.16 ±2.14 / 97.21 ms │        90.79 / 92.40 ±1.76 / 95.76 ms │     no change │
│ QQuery 40 │        23.54 / 24.12 ±0.45 / 24.82 ms │        23.25 / 23.70 ±0.33 / 24.15 ms │     no change │
│ QQuery 41 │        11.57 / 11.70 ±0.19 / 12.08 ms │        11.59 / 11.72 ±0.13 / 11.91 ms │     no change │
│ QQuery 42 │        24.08 / 24.53 ±0.29 / 24.98 ms │        24.02 / 24.59 ±0.34 / 24.95 ms │     no change │
│ QQuery 43 │           4.94 / 5.04 ±0.14 / 5.32 ms │           4.86 / 4.96 ±0.16 / 5.28 ms │     no change │
│ QQuery 44 │           9.25 / 9.36 ±0.06 / 9.43 ms │           8.89 / 9.21 ±0.22 / 9.54 ms │     no change │
│ QQuery 45 │        37.81 / 39.42 ±1.63 / 42.56 ms │        38.61 / 40.79 ±1.86 / 43.60 ms │     no change │
│ QQuery 46 │        12.21 / 13.01 ±0.68 / 14.24 ms │        11.58 / 12.11 ±0.46 / 12.79 ms │ +1.07x faster │
│ QQuery 47 │     233.06 / 235.34 ±1.79 / 238.34 ms │     228.05 / 233.94 ±4.67 / 241.15 ms │     no change │
│ QQuery 48 │        96.88 / 97.68 ±0.60 / 98.69 ms │        97.09 / 97.46 ±0.27 / 97.83 ms │     no change │
│ QQuery 49 │        78.71 / 81.58 ±3.14 / 87.55 ms │        76.67 / 79.00 ±1.77 / 81.74 ms │     no change │
│ QQuery 50 │        60.53 / 61.17 ±1.04 / 63.25 ms │        61.42 / 61.66 ±0.17 / 61.83 ms │     no change │
│ QQuery 51 │        91.42 / 93.53 ±1.23 / 95.07 ms │        93.32 / 93.97 ±0.42 / 94.55 ms │     no change │
│ QQuery 52 │        24.82 / 26.32 ±1.85 / 29.84 ms │        24.52 / 26.50 ±2.29 / 30.55 ms │     no change │
│ QQuery 53 │        29.98 / 30.86 ±1.12 / 33.06 ms │        30.38 / 30.59 ±0.22 / 30.87 ms │     no change │
│ QQuery 54 │        56.48 / 57.27 ±0.52 / 57.85 ms │        55.95 / 56.60 ±0.53 / 57.07 ms │     no change │
│ QQuery 55 │        24.37 / 24.61 ±0.27 / 25.05 ms │        24.26 / 24.60 ±0.46 / 25.50 ms │     no change │
│ QQuery 56 │        40.58 / 40.78 ±0.21 / 41.17 ms │        39.50 / 40.26 ±0.48 / 40.83 ms │     no change │
│ QQuery 57 │     178.27 / 180.98 ±1.96 / 183.38 ms │     179.19 / 180.67 ±1.52 / 182.89 ms │     no change │
│ QQuery 58 │     116.79 / 119.37 ±2.61 / 124.13 ms │     118.11 / 118.99 ±0.60 / 119.84 ms │     no change │
│ QQuery 59 │     118.78 / 119.04 ±0.18 / 119.23 ms │     119.03 / 119.34 ±0.30 / 119.88 ms │     no change │
│ QQuery 60 │        40.48 / 42.55 ±2.17 / 46.73 ms │        39.91 / 41.19 ±1.25 / 43.39 ms │     no change │
│ QQuery 61 │        12.29 / 12.49 ±0.16 / 12.77 ms │        11.98 / 12.67 ±1.00 / 14.63 ms │     no change │
│ QQuery 62 │        47.14 / 47.37 ±0.14 / 47.53 ms │        46.89 / 47.20 ±0.27 / 47.61 ms │     no change │
│ QQuery 63 │        29.87 / 30.33 ±0.26 / 30.59 ms │        30.29 / 30.41 ±0.07 / 30.50 ms │     no change │
│ QQuery 64 │     413.22 / 419.21 ±5.08 / 428.49 ms │     411.20 / 415.59 ±3.31 / 419.62 ms │     no change │
│ QQuery 65 │     151.42 / 157.54 ±6.69 / 170.45 ms │     151.64 / 156.45 ±4.67 / 164.79 ms │     no change │
│ QQuery 66 │        81.92 / 82.28 ±0.43 / 83.08 ms │        80.73 / 81.33 ±0.39 / 81.78 ms │     no change │
│ QQuery 67 │     243.30 / 247.95 ±4.29 / 254.03 ms │     249.31 / 253.89 ±3.79 / 260.25 ms │     no change │
│ QQuery 68 │        12.03 / 12.42 ±0.41 / 13.20 ms │        11.80 / 12.51 ±0.84 / 14.11 ms │     no change │
│ QQuery 69 │        57.95 / 58.89 ±0.53 / 59.32 ms │        57.95 / 58.90 ±0.68 / 59.71 ms │     no change │
│ QQuery 70 │     106.89 / 109.18 ±2.52 / 113.25 ms │     106.00 / 107.65 ±1.44 / 109.74 ms │     no change │
│ QQuery 71 │        35.90 / 38.03 ±1.77 / 41.30 ms │        36.55 / 40.25 ±3.45 / 45.32 ms │  1.06x slower │
│ QQuery 72 │ 2107.77 / 2207.31 ±63.27 / 2279.90 ms │ 2120.92 / 2217.59 ±63.60 / 2305.22 ms │     no change │
│ QQuery 73 │         9.72 / 10.03 ±0.23 / 10.35 ms │          9.51 / 9.77 ±0.20 / 10.12 ms │     no change │
│ QQuery 74 │     174.21 / 178.07 ±4.26 / 186.25 ms │     176.06 / 178.23 ±1.81 / 181.42 ms │     no change │
│ QQuery 75 │     153.03 / 153.72 ±0.73 / 155.02 ms │     149.61 / 150.90 ±1.21 / 153.20 ms │     no change │
│ QQuery 76 │        37.21 / 38.29 ±1.26 / 40.76 ms │        35.58 / 35.88 ±0.17 / 36.12 ms │ +1.07x faster │
│ QQuery 77 │        63.59 / 64.00 ±0.39 / 64.59 ms │        61.43 / 62.70 ±1.23 / 64.98 ms │     no change │
│ QQuery 78 │     201.51 / 205.30 ±2.12 / 207.73 ms │     199.68 / 205.79 ±5.81 / 214.98 ms │     no change │
│ QQuery 79 │        69.24 / 69.50 ±0.23 / 69.84 ms │        68.02 / 68.32 ±0.23 / 68.62 ms │     no change │
│ QQuery 80 │     102.37 / 105.08 ±2.70 / 109.03 ms │     100.10 / 104.54 ±4.46 / 112.32 ms │     no change │
│ QQuery 81 │        26.60 / 28.01 ±2.13 / 32.25 ms │        26.23 / 26.48 ±0.21 / 26.78 ms │ +1.06x faster │
│ QQuery 82 │        16.99 / 17.11 ±0.12 / 17.34 ms │        16.65 / 17.52 ±1.29 / 20.08 ms │     no change │
│ QQuery 83 │        40.63 / 41.18 ±0.42 / 41.80 ms │        40.00 / 40.48 ±0.38 / 41.14 ms │     no change │
│ QQuery 84 │        30.44 / 30.95 ±0.39 / 31.61 ms │        30.44 / 30.75 ±0.19 / 31.04 ms │     no change │
│ QQuery 85 │     110.65 / 114.06 ±2.53 / 118.14 ms │     107.81 / 111.88 ±3.02 / 115.91 ms │     no change │
│ QQuery 86 │        26.16 / 26.37 ±0.25 / 26.85 ms │        25.51 / 25.92 ±0.27 / 26.35 ms │     no change │
│ QQuery 87 │        65.60 / 66.20 ±0.66 / 67.41 ms │        63.53 / 64.29 ±0.52 / 65.12 ms │     no change │
│ QQuery 88 │        65.15 / 65.83 ±0.82 / 67.42 ms │        62.77 / 64.96 ±2.84 / 70.53 ms │     no change │
│ QQuery 89 │        37.13 / 37.67 ±0.43 / 38.40 ms │        36.49 / 37.16 ±0.58 / 37.98 ms │     no change │
│ QQuery 90 │        17.95 / 18.20 ±0.33 / 18.83 ms │        17.01 / 17.16 ±0.17 / 17.48 ms │ +1.06x faster │
│ QQuery 91 │        47.34 / 47.60 ±0.33 / 48.25 ms │        46.37 / 46.67 ±0.20 / 46.97 ms │     no change │
│ QQuery 92 │        29.79 / 30.99 ±0.82 / 32.20 ms │        30.42 / 30.74 ±0.27 / 31.17 ms │     no change │
│ QQuery 93 │        51.08 / 52.91 ±1.45 / 55.33 ms │        51.00 / 51.63 ±0.78 / 53.17 ms │     no change │
│ QQuery 94 │        39.22 / 39.64 ±0.36 / 40.16 ms │        38.95 / 39.60 ±0.40 / 40.23 ms │     no change │
│ QQuery 95 │        81.80 / 83.26 ±0.92 / 84.50 ms │        81.83 / 82.81 ±0.77 / 83.73 ms │     no change │
│ QQuery 96 │        24.78 / 25.15 ±0.25 / 25.45 ms │        24.56 / 24.76 ±0.16 / 25.02 ms │     no change │
│ QQuery 97 │        47.80 / 50.23 ±3.40 / 56.73 ms │        47.03 / 47.85 ±0.67 / 49.01 ms │     no change │
│ QQuery 98 │        43.97 / 44.43 ±0.39 / 45.00 ms │        43.38 / 43.93 ±0.43 / 44.59 ms │     no change │
│ QQuery 99 │        71.96 / 72.24 ±0.23 / 72.54 ms │        70.83 / 71.50 ±0.52 / 72.14 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 10163.87ms │
│ Total Time (use-yield)   │ 10133.52ms │
│ Average Time (HEAD)      │   102.67ms │
│ Average Time (use-yield) │   102.36ms │
│ Queries Faster           │          4 │
│ Queries Slower           │          1 │
│ Queries with No Change   │         94 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 55.0s
Peak memory 2.2 GiB
Avg memory 1.5 GiB
CPU user 228.4s
CPU sys 6.1s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 55.0s
Peak memory 2.5 GiB
Avg memory 1.6 GiB
CPU user 227.9s
CPU sys 6.1s
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)

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 use-yield
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃                             use-yield ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.28 / 4.00 ±5.35 / 14.70 ms │          1.24 / 3.94 ±5.34 / 14.63 ms │     no change │
│ QQuery 1  │        13.46 / 13.72 ±0.16 / 13.88 ms │        12.96 / 13.24 ±0.19 / 13.46 ms │     no change │
│ QQuery 2  │        37.11 / 37.30 ±0.15 / 37.56 ms │        36.40 / 36.49 ±0.08 / 36.62 ms │     no change │
│ QQuery 3  │        30.90 / 31.77 ±1.26 / 34.25 ms │        30.77 / 31.06 ±0.37 / 31.80 ms │     no change │
│ QQuery 4  │     224.66 / 227.81 ±3.16 / 232.06 ms │     220.04 / 225.25 ±4.13 / 229.88 ms │     no change │
│ QQuery 5  │     271.84 / 274.31 ±1.24 / 275.03 ms │     268.68 / 271.69 ±2.08 / 274.79 ms │     no change │
│ QQuery 6  │           1.28 / 1.42 ±0.22 / 1.85 ms │           1.26 / 1.41 ±0.22 / 1.84 ms │     no change │
│ QQuery 7  │        14.35 / 14.47 ±0.08 / 14.61 ms │        14.21 / 14.37 ±0.11 / 14.50 ms │     no change │
│ QQuery 8  │     323.42 / 328.40 ±3.11 / 331.82 ms │     322.16 / 323.93 ±1.03 / 325.15 ms │     no change │
│ QQuery 9  │     461.04 / 465.90 ±3.46 / 470.07 ms │     452.69 / 466.24 ±8.45 / 473.66 ms │     no change │
│ QQuery 10 │        70.19 / 70.84 ±0.67 / 72.06 ms │        70.50 / 71.31 ±0.58 / 71.86 ms │     no change │
│ QQuery 11 │        82.62 / 83.30 ±0.76 / 84.75 ms │        82.41 / 85.59 ±6.05 / 97.68 ms │     no change │
│ QQuery 12 │     266.33 / 270.50 ±3.47 / 275.80 ms │     262.36 / 272.48 ±6.86 / 280.54 ms │     no change │
│ QQuery 13 │    361.09 / 373.86 ±11.65 / 395.81 ms │     362.13 / 376.46 ±9.36 / 391.10 ms │     no change │
│ QQuery 14 │     285.33 / 292.29 ±5.89 / 299.28 ms │     279.61 / 285.61 ±6.93 / 299.19 ms │     no change │
│ QQuery 15 │     278.21 / 283.30 ±4.20 / 290.36 ms │     269.96 / 276.13 ±3.13 / 278.71 ms │     no change │
│ QQuery 16 │     610.87 / 621.55 ±6.97 / 630.63 ms │    609.73 / 621.93 ±10.50 / 637.68 ms │     no change │
│ QQuery 17 │     618.67 / 627.75 ±7.24 / 640.34 ms │    614.86 / 633.32 ±20.77 / 672.73 ms │     no change │
│ QQuery 18 │ 1247.33 / 1272.91 ±18.08 / 1303.84 ms │ 1253.93 / 1276.31 ±17.28 / 1292.68 ms │     no change │
│ QQuery 19 │        28.52 / 35.83 ±9.72 / 52.80 ms │       28.10 / 36.95 ±12.07 / 58.97 ms │     no change │
│ QQuery 20 │    515.59 / 531.74 ±10.71 / 545.83 ms │     512.20 / 521.04 ±6.95 / 531.38 ms │     no change │
│ QQuery 21 │     520.48 / 525.74 ±4.14 / 532.51 ms │     518.79 / 526.11 ±5.94 / 533.80 ms │     no change │
│ QQuery 22 │   991.17 / 1007.70 ±9.28 / 1015.73 ms │    987.82 / 995.94 ±7.44 / 1009.99 ms │     no change │
│ QQuery 23 │ 3062.61 / 3095.20 ±23.92 / 3133.89 ms │ 3081.04 / 3101.27 ±15.28 / 3118.67 ms │     no change │
│ QQuery 24 │        41.46 / 46.43 ±6.54 / 59.17 ms │        41.51 / 45.58 ±6.25 / 57.98 ms │     no change │
│ QQuery 25 │     112.17 / 114.02 ±2.10 / 117.94 ms │     110.87 / 112.92 ±1.45 / 114.93 ms │     no change │
│ QQuery 26 │        42.16 / 44.53 ±3.67 / 51.82 ms │       41.77 / 53.05 ±22.08 / 97.20 ms │  1.19x slower │
│ QQuery 27 │     666.55 / 671.08 ±2.47 / 673.33 ms │    672.29 / 678.94 ±10.74 / 700.29 ms │     no change │
│ QQuery 28 │ 3034.08 / 3051.52 ±14.95 / 3072.60 ms │ 3030.72 / 3056.40 ±17.60 / 3080.92 ms │     no change │
│ QQuery 29 │       41.82 / 52.21 ±19.04 / 90.26 ms │        41.34 / 41.62 ±0.19 / 41.88 ms │ +1.25x faster │
│ QQuery 30 │    299.08 / 311.41 ±10.40 / 324.35 ms │    302.73 / 312.56 ±10.45 / 331.29 ms │     no change │
│ QQuery 31 │     277.79 / 289.47 ±8.26 / 299.35 ms │     285.68 / 297.03 ±9.41 / 314.07 ms │     no change │
│ QQuery 32 │   939.01 / 990.79 ±29.74 / 1030.69 ms │    929.77 / 951.21 ±17.29 / 974.61 ms │     no change │
│ QQuery 33 │ 1454.50 / 1509.52 ±35.45 / 1552.96 ms │ 1453.19 / 1474.29 ±13.87 / 1496.42 ms │     no change │
│ QQuery 34 │ 1469.36 / 1505.76 ±25.17 / 1536.02 ms │ 1466.97 / 1499.46 ±23.51 / 1537.42 ms │     no change │
│ QQuery 35 │     283.62 / 290.80 ±6.75 / 300.63 ms │    280.20 / 327.49 ±80.96 / 489.06 ms │  1.13x slower │
│ QQuery 36 │        65.94 / 69.41 ±2.86 / 73.81 ms │      69.17 / 83.74 ±15.67 / 112.88 ms │  1.21x slower │
│ QQuery 37 │        35.91 / 39.68 ±4.32 / 47.71 ms │        35.85 / 38.55 ±3.60 / 45.62 ms │     no change │
│ QQuery 38 │        46.23 / 49.89 ±4.91 / 59.47 ms │        40.45 / 44.23 ±2.49 / 48.03 ms │ +1.13x faster │
│ QQuery 39 │     145.26 / 149.90 ±4.65 / 157.69 ms │     147.08 / 155.27 ±7.63 / 166.59 ms │     no change │
│ QQuery 40 │        14.41 / 14.67 ±0.20 / 14.94 ms │        14.47 / 14.73 ±0.28 / 15.24 ms │     no change │
│ QQuery 41 │        14.03 / 17.21 ±4.36 / 25.46 ms │        13.90 / 15.79 ±3.37 / 22.52 ms │ +1.09x faster │
│ QQuery 42 │        13.81 / 17.30 ±4.19 / 23.31 ms │        13.24 / 13.49 ±0.20 / 13.80 ms │ +1.28x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary        ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)        │ 19727.22ms │
│ Total Time (use-yield)   │ 19684.42ms │
│ Average Time (HEAD)      │   458.77ms │
│ Average Time (use-yield) │   457.78ms │
│ Queries Faster           │          4 │
│ Queries Slower           │          3 │
│ Queries with No Change   │         36 │
│ Queries with Failure     │          0 │
└──────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 100.0s
Peak memory 10.4 GiB
Avg memory 4.4 GiB
CPU user 1013.0s
CPU sys 70.8s
Peak spill 0 B

clickbench_partitioned — branch

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

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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                                    use-yield
-----                                               ----                                    ---------
merge sorted f64 100k                               1.00      3.4±0.01ms        ? ?/sec     1.05      3.5±0.02ms        ? ?/sec
merge sorted f64 1M                                 1.00     33.9±0.13ms        ? ?/sec     1.05     35.7±0.18ms        ? ?/sec
merge sorted i64 100k                               1.00      3.2±0.01ms        ? ?/sec     1.06      3.4±0.01ms        ? ?/sec
merge sorted i64 1M                                 1.00     32.7±0.13ms        ? ?/sec     1.06     34.6±0.15ms        ? ?/sec
merge sorted mixed dictionary tuple 100k            1.00      7.6±0.04ms        ? ?/sec     1.02      7.7±0.03ms        ? ?/sec
merge sorted mixed dictionary tuple 1M              1.00     75.9±0.30ms        ? ?/sec     1.02     77.7±0.29ms        ? ?/sec
merge sorted mixed tuple 100k                       1.00      7.6±0.04ms        ? ?/sec     1.04      7.8±0.03ms        ? ?/sec
merge sorted mixed tuple 1M                         1.00     76.8±0.45ms        ? ?/sec     1.03     79.3±0.40ms        ? ?/sec
merge sorted mixed tuple with utf8 view 100k        1.00      7.0±0.03ms        ? ?/sec     1.04      7.3±0.03ms        ? ?/sec
merge sorted mixed tuple with utf8 view 1M          1.00     71.8±0.32ms        ? ?/sec     1.04     74.6±0.29ms        ? ?/sec
merge sorted utf8 dictionary 100k                   1.00      3.5±0.01ms        ? ?/sec     1.05      3.7±0.02ms        ? ?/sec
merge sorted utf8 dictionary 1M                     1.00     35.3±0.24ms        ? ?/sec     1.05     37.0±0.20ms        ? ?/sec
merge sorted utf8 dictionary tuple 100k             1.00      5.2±0.02ms        ? ?/sec     1.03      5.4±0.03ms        ? ?/sec
merge sorted utf8 dictionary tuple 1M               1.00     51.7±0.26ms        ? ?/sec     1.03     53.3±0.34ms        ? ?/sec
merge sorted utf8 high cardinality 100k             1.00      5.2±0.01ms        ? ?/sec     1.01      5.2±0.01ms        ? ?/sec
merge sorted utf8 high cardinality 1M               1.04    94.2±46.91ms        ? ?/sec     1.00    90.6±48.16ms        ? ?/sec
merge sorted utf8 low cardinality 100k              1.00      3.5±0.01ms        ? ?/sec     1.02      3.6±0.01ms        ? ?/sec
merge sorted utf8 low cardinality 1M                1.00     35.7±0.18ms        ? ?/sec     1.02     36.5±0.22ms        ? ?/sec
merge sorted utf8 tuple 100k                        1.00      8.1±0.04ms        ? ?/sec     1.02      8.3±0.02ms        ? ?/sec
merge sorted utf8 tuple 1M                          1.00     81.7±0.29ms        ? ?/sec     1.03     83.9±0.22ms        ? ?/sec
merge sorted utf8 view high cardinality 100k        1.00      4.4±0.05ms        ? ?/sec     1.00      4.4±0.02ms        ? ?/sec
merge sorted utf8 view high cardinality 1M          1.03    68.0±25.77ms        ? ?/sec     1.00    66.2±25.29ms        ? ?/sec
merge sorted utf8 view low cardinality 100k         1.00      2.4±0.01ms        ? ?/sec     1.05      2.5±0.01ms        ? ?/sec
merge sorted utf8 view low cardinality 1M           1.00     24.4±0.18ms        ? ?/sec     1.04     25.4±0.23ms        ? ?/sec
merge sorted utf8 view tuple 100k                   1.00      7.5±0.03ms        ? ?/sec     1.03      7.7±0.04ms        ? ?/sec
merge sorted utf8 view tuple 1M                     1.00     78.1±0.38ms        ? ?/sec     1.02     79.9±0.27ms        ? ?/sec
sort f64 100k                                       1.00      2.7±0.01ms        ? ?/sec     1.05      2.8±0.02ms        ? ?/sec
sort f64 1M                                         1.00     23.2±0.48ms        ? ?/sec     1.08     25.0±0.57ms        ? ?/sec
sort i64 100k                                       1.00      2.4±0.02ms        ? ?/sec     1.06      2.5±0.01ms        ? ?/sec
sort i64 1M                                         1.00     22.1±0.46ms        ? ?/sec     1.07     23.7±0.40ms        ? ?/sec
sort merge f64 100k                                 1.00      3.1±0.01ms        ? ?/sec     1.05      3.3±0.01ms        ? ?/sec
sort merge f64 1M                                   1.00     31.1±0.09ms        ? ?/sec     1.06     32.8±0.10ms        ? ?/sec
sort merge i64 100k                                 1.00      3.0±0.01ms        ? ?/sec     1.06      3.2±0.01ms        ? ?/sec
sort merge i64 1M                                   1.00     30.0±0.10ms        ? ?/sec     1.06     31.6±0.10ms        ? ?/sec
sort merge mixed dictionary tuple 100k              1.00      7.1±0.02ms        ? ?/sec     1.03      7.3±0.02ms        ? ?/sec
sort merge mixed dictionary tuple 1M                1.00     73.1±0.33ms        ? ?/sec     1.03     75.2±0.39ms        ? ?/sec
sort merge mixed tuple 100k                         1.00      7.1±0.02ms        ? ?/sec     1.04      7.4±0.03ms        ? ?/sec
sort merge mixed tuple 1M                           1.00     73.4±0.20ms        ? ?/sec     1.04     76.6±0.30ms        ? ?/sec
sort merge mixed tuple with utf8 view 100k          1.00      7.0±0.02ms        ? ?/sec     1.05      7.3±0.03ms        ? ?/sec
sort merge mixed tuple with utf8 view 1M            1.00     68.0±0.20ms        ? ?/sec     1.05     71.4±0.29ms        ? ?/sec
sort merge utf8 dictionary 100k                     1.00      3.1±0.01ms        ? ?/sec     1.06      3.3±0.01ms        ? ?/sec
sort merge utf8 dictionary 1M                       1.00     30.9±0.10ms        ? ?/sec     1.06     32.9±0.11ms        ? ?/sec
sort merge utf8 dictionary tuple 100k               1.00      4.8±0.02ms        ? ?/sec     1.04      4.9±0.02ms        ? ?/sec
sort merge utf8 dictionary tuple 1M                 1.00     49.7±0.32ms        ? ?/sec     1.04     51.8±0.38ms        ? ?/sec
sort merge utf8 high cardinality 100k               1.00      5.0±0.01ms        ? ?/sec     1.00      5.0±0.01ms        ? ?/sec
sort merge utf8 high cardinality 1M                 1.00     49.5±0.10ms        ? ?/sec     1.00     49.6±0.16ms        ? ?/sec
sort merge utf8 low cardinality 100k                1.00      3.3±0.01ms        ? ?/sec     1.02      3.4±0.01ms        ? ?/sec
sort merge utf8 low cardinality 1M                  1.00     32.8±0.06ms        ? ?/sec     1.02     33.6±0.07ms        ? ?/sec
sort merge utf8 tuple 100k                          1.00      8.1±0.02ms        ? ?/sec     1.04      8.5±0.03ms        ? ?/sec
sort merge utf8 tuple 1M                            1.00     80.3±0.79ms        ? ?/sec     1.03     82.9±0.73ms        ? ?/sec
sort merge utf8 view high cardinality 100k          1.00      4.2±0.01ms        ? ?/sec     1.01      4.2±0.01ms        ? ?/sec
sort merge utf8 view high cardinality 1M            1.00     42.8±0.17ms        ? ?/sec     1.00     42.9±0.22ms        ? ?/sec
sort merge utf8 view low cardinality 100k           1.00      2.2±0.01ms        ? ?/sec     1.04      2.3±0.01ms        ? ?/sec
sort merge utf8 view low cardinality 1M             1.00     21.3±0.07ms        ? ?/sec     1.04     22.2±0.09ms        ? ?/sec
sort merge utf8 view tuple 100k                     1.00      7.5±0.02ms        ? ?/sec     1.03      7.8±0.02ms        ? ?/sec
sort merge utf8 view tuple 1M                       1.00     76.1±0.29ms        ? ?/sec     1.04     78.9±0.41ms        ? ?/sec
sort mixed dictionary tuple 100k                    1.00     10.6±0.07ms        ? ?/sec     1.01     10.7±0.05ms        ? ?/sec
sort mixed dictionary tuple 1M                      1.00    148.6±1.85ms        ? ?/sec     1.02    151.3±1.75ms        ? ?/sec
sort mixed tuple 100k                               1.00     10.0±0.05ms        ? ?/sec     1.01     10.1±0.06ms        ? ?/sec
sort mixed tuple 1M                                 1.00    118.5±1.01ms        ? ?/sec     1.01    120.0±0.99ms        ? ?/sec
sort mixed tuple with utf8 view 100k                1.00      9.4±0.04ms        ? ?/sec     1.02      9.6±0.06ms        ? ?/sec
sort mixed tuple with utf8 view 1M                  1.00    113.2±0.76ms        ? ?/sec     1.02    115.3±0.95ms        ? ?/sec
sort partitioned f64 100k                           1.00  128.3±124.25µs        ? ?/sec     1.02  130.5±120.73µs        ? ?/sec
sort partitioned f64 1M                             1.00  1682.3±71.22µs        ? ?/sec     1.09  1839.7±66.32µs        ? ?/sec
sort partitioned i64 100k                           1.00  129.1±164.02µs        ? ?/sec     1.00  129.4±170.09µs        ? ?/sec
sort partitioned i64 1M                             1.00  1645.1±69.65µs        ? ?/sec     1.10  1801.4±69.24µs        ? ?/sec
sort partitioned mixed dictionary tuple 100k        1.01  518.0±183.73µs        ? ?/sec     1.00  511.8±156.91µs        ? ?/sec
sort partitioned mixed dictionary tuple 1M          1.02     11.5±0.46ms        ? ?/sec     1.00     11.3±0.19ms        ? ?/sec
sort partitioned mixed tuple 100k                   1.00  300.7±132.07µs        ? ?/sec     1.00  301.5±133.99µs        ? ?/sec
sort partitioned mixed tuple 1M                     1.00      9.9±0.28ms        ? ?/sec     1.01     10.1±0.12ms        ? ?/sec
sort partitioned mixed tuple with utf8 view 100k    1.00   853.5±80.00µs        ? ?/sec     1.04   886.4±65.55µs        ? ?/sec
sort partitioned mixed tuple with utf8 view 1M      1.00      9.0±0.14ms        ? ?/sec     1.02      9.2±0.07ms        ? ?/sec
sort partitioned utf8 dictionary 100k               1.00  155.5±133.22µs        ? ?/sec     1.01  157.1±164.19µs        ? ?/sec
sort partitioned utf8 dictionary 1M                 1.00      2.7±0.02ms        ? ?/sec     1.07      2.9±0.02ms        ? ?/sec
sort partitioned utf8 dictionary tuple 100k         1.00   458.2±88.38µs        ? ?/sec     1.00  458.3±111.17µs        ? ?/sec
sort partitioned utf8 dictionary tuple 1M           1.02     10.5±0.41ms        ? ?/sec     1.00     10.4±0.15ms        ? ?/sec
sort partitioned utf8 high cardinality 100k         1.00  174.1±140.65µs        ? ?/sec     1.01  176.3±173.00µs        ? ?/sec
sort partitioned utf8 high cardinality 1M           1.00      3.7±0.07ms        ? ?/sec     1.02      3.8±0.05ms        ? ?/sec
sort partitioned utf8 low cardinality 100k          1.00  203.5±174.71µs        ? ?/sec     1.00  204.0±173.08µs        ? ?/sec
sort partitioned utf8 low cardinality 1M            1.00      3.1±0.03ms        ? ?/sec     1.05      3.3±0.02ms        ? ?/sec
sort partitioned utf8 tuple 100k                    1.00  1124.9±126.77µs        ? ?/sec    1.02  1150.5±115.68µs        ? ?/sec
sort partitioned utf8 tuple 1M                      1.00     12.0±0.43ms        ? ?/sec     1.00     12.0±0.25ms        ? ?/sec
sort partitioned utf8 view high cardinality 100k    1.00  357.0±213.55µs        ? ?/sec     1.09  389.3±102.65µs        ? ?/sec
sort partitioned utf8 view high cardinality 1M      1.02      4.1±0.09ms        ? ?/sec     1.00      4.0±0.09ms        ? ?/sec
sort partitioned utf8 view low cardinality 100k     1.00  141.9±107.77µs        ? ?/sec     1.01   143.0±99.31µs        ? ?/sec
sort partitioned utf8 view low cardinality 1M       1.00      2.2±0.04ms        ? ?/sec     1.04      2.3±0.02ms        ? ?/sec
sort partitioned utf8 view tuple 100k               1.00   946.0±65.16µs        ? ?/sec     1.03   976.0±62.19µs        ? ?/sec
sort partitioned utf8 view tuple 1M                 1.00     10.3±0.18ms        ? ?/sec     1.02     10.5±0.11ms        ? ?/sec
sort utf8 dictionary 100k                           1.01  1151.2±10.57µs        ? ?/sec     1.00   1142.7±9.09µs        ? ?/sec
sort utf8 dictionary 1M                             1.00     27.8±0.32ms        ? ?/sec     1.06     29.5±0.74ms        ? ?/sec
sort utf8 dictionary tuple 100k                     1.00      7.9±0.04ms        ? ?/sec     1.02      8.1±0.06ms        ? ?/sec
sort utf8 dictionary tuple 1M                       1.00    111.1±1.34ms        ? ?/sec     1.00    111.4±1.20ms        ? ?/sec
sort utf8 high cardinality 100k                     1.00      3.7±0.07ms        ? ?/sec     1.01      3.7±0.03ms        ? ?/sec
sort utf8 high cardinality 1M                       1.00    56.6±10.69ms        ? ?/sec     1.00     56.7±7.92ms        ? ?/sec
sort utf8 low cardinality 100k                      1.00      3.7±0.02ms        ? ?/sec     1.02      3.8±0.01ms        ? ?/sec
sort utf8 low cardinality 1M                        1.00     36.9±0.60ms        ? ?/sec     1.03     38.0±0.65ms        ? ?/sec
sort utf8 tuple 100k                                1.00     10.4±0.05ms        ? ?/sec     1.02     10.6±0.04ms        ? ?/sec
sort utf8 tuple 1M                                  1.00    137.1±0.89ms        ? ?/sec     1.01    138.1±1.28ms        ? ?/sec
sort utf8 view high cardinality 100k                1.03      3.8±0.06ms        ? ?/sec     1.00      3.7±0.05ms        ? ?/sec
sort utf8 view high cardinality 1M                  1.00    64.1±10.21ms        ? ?/sec     1.00    64.2±19.33ms        ? ?/sec
sort utf8 view low cardinality 100k                 1.00      2.2±0.02ms        ? ?/sec     1.05      2.3±0.02ms        ? ?/sec
sort utf8 view low cardinality 1M                   1.02     27.4±0.39ms        ? ?/sec     1.00     26.8±0.44ms        ? ?/sec
sort utf8 view tuple 100k                           1.00      9.8±0.06ms        ? ?/sec     1.02     10.0±0.08ms        ? ?/sec
sort utf8 view tuple 1M                             1.00    138.2±1.19ms        ? ?/sec     1.00    138.7±1.33ms        ? ?/sec

Resource Usage

sort — base (merge-base)

Metric Value
Wall time 3160.7s
Peak memory 792.2 MiB
Avg memory 493.9 MiB
CPU user 4855.4s
CPU sys 230.0s
Peak spill 0 B

sort — branch

Metric Value
Wall time 3370.7s
Peak memory 792.0 MiB
Avg memory 458.9 MiB
CPU user 4858.9s
CPU sys 224.6s
Peak spill 0 B

File an issue against this benchmark runner

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Jul 9, 2026
@rluvaton

rluvaton commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

--- failure auto_trait_impl_removed: auto trait no longer implemented ---

Description:
A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented.
ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/auto_trait_impl_removed.ron

Failed in:
type RecordBatchStreamAdapter is no longer UnwindSafe, in /home/runner/work/datafusion/datafusion/datafusion/physical-plan/src/stream.rs:406
type RecordBatchStreamAdapter is no longer RefUnwindSafe, in /home/runner/work/datafusion/datafusion/datafusion/physical-plan/src/stream.rs:406

 Summary semver requires new major version: 1 major and 0 minor checks failed
Finished [ 100.350s] datafusion-physical-plan

Damn I would never have caught that

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

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                                    use-yield
-----                                               ----                                    ---------
merge sorted f64 100k                               1.00      3.4±0.01ms        ? ?/sec     1.05      3.5±0.01ms        ? ?/sec
merge sorted f64 1M                                 1.00     34.2±0.19ms        ? ?/sec     1.05     35.7±0.21ms        ? ?/sec
merge sorted i64 100k                               1.00      3.2±0.01ms        ? ?/sec     1.05      3.4±0.01ms        ? ?/sec
merge sorted i64 1M                                 1.00     33.1±0.13ms        ? ?/sec     1.04     34.4±0.14ms        ? ?/sec
merge sorted mixed dictionary tuple 100k            1.00      7.7±0.05ms        ? ?/sec     1.01      7.8±0.04ms        ? ?/sec
merge sorted mixed dictionary tuple 1M              1.00     75.3±0.53ms        ? ?/sec     1.02     76.9±0.40ms        ? ?/sec
merge sorted mixed tuple 100k                       1.00      7.8±0.05ms        ? ?/sec     1.02      7.9±0.03ms        ? ?/sec
merge sorted mixed tuple 1M                         1.00     76.3±0.25ms        ? ?/sec     1.03     78.5±0.53ms        ? ?/sec
merge sorted mixed tuple with utf8 view 100k        1.00      7.3±0.07ms        ? ?/sec     1.02      7.4±0.03ms        ? ?/sec
merge sorted mixed tuple with utf8 view 1M          1.00     71.7±0.20ms        ? ?/sec     1.03     73.6±0.31ms        ? ?/sec
merge sorted utf8 dictionary 100k                   1.00      3.5±0.02ms        ? ?/sec     1.05      3.7±0.01ms        ? ?/sec
merge sorted utf8 dictionary 1M                     1.00     35.0±0.15ms        ? ?/sec     1.06     37.0±0.23ms        ? ?/sec
merge sorted utf8 dictionary tuple 100k             1.00      5.2±0.03ms        ? ?/sec     1.02      5.4±0.03ms        ? ?/sec
merge sorted utf8 dictionary tuple 1M               1.00     50.9±0.30ms        ? ?/sec     1.04     53.0±0.32ms        ? ?/sec
merge sorted utf8 high cardinality 100k             1.00      5.2±0.02ms        ? ?/sec     1.01      5.2±0.01ms        ? ?/sec
merge sorted utf8 high cardinality 1M               1.39   116.9±71.67ms        ? ?/sec     1.00    84.2±43.20ms        ? ?/sec
merge sorted utf8 low cardinality 100k              1.00      3.5±0.01ms        ? ?/sec     1.02      3.6±0.01ms        ? ?/sec
merge sorted utf8 low cardinality 1M                1.00     36.3±0.19ms        ? ?/sec     1.00     36.3±0.20ms        ? ?/sec
merge sorted utf8 tuple 100k                        1.00      8.1±0.05ms        ? ?/sec     1.03      8.4±0.03ms        ? ?/sec
merge sorted utf8 tuple 1M                          1.00     82.0±0.34ms        ? ?/sec     1.02     83.7±0.27ms        ? ?/sec
merge sorted utf8 view high cardinality 100k        1.01      4.4±0.04ms        ? ?/sec     1.00      4.4±0.03ms        ? ?/sec
merge sorted utf8 view high cardinality 1M          1.32    81.4±36.06ms        ? ?/sec     1.00    61.9±25.12ms        ? ?/sec
merge sorted utf8 view low cardinality 100k         1.00      2.4±0.01ms        ? ?/sec     1.05      2.5±0.01ms        ? ?/sec
merge sorted utf8 view low cardinality 1M           1.00     25.0±0.16ms        ? ?/sec     1.02     25.5±0.21ms        ? ?/sec
merge sorted utf8 view tuple 100k                   1.00      7.8±0.06ms        ? ?/sec     1.01      7.9±0.04ms        ? ?/sec
merge sorted utf8 view tuple 1M                     1.00     77.7±0.69ms        ? ?/sec     1.02     79.2±0.28ms        ? ?/sec
sort f64 100k                                       1.00      2.7±0.01ms        ? ?/sec     1.05      2.8±0.02ms        ? ?/sec
sort f64 1M                                         1.00     23.6±0.57ms        ? ?/sec     1.05     24.9±0.55ms        ? ?/sec
sort i64 100k                                       1.00      2.4±0.01ms        ? ?/sec     1.06      2.5±0.01ms        ? ?/sec
sort i64 1M                                         1.00     22.7±0.47ms        ? ?/sec     1.04     23.7±0.42ms        ? ?/sec
sort merge f64 100k                                 1.00      3.1±0.01ms        ? ?/sec     1.06      3.3±0.01ms        ? ?/sec
sort merge f64 1M                                   1.00     31.4±0.15ms        ? ?/sec     1.05     32.9±0.10ms        ? ?/sec
sort merge i64 100k                                 1.00      3.0±0.01ms        ? ?/sec     1.05      3.2±0.01ms        ? ?/sec
sort merge i64 1M                                   1.00     30.2±0.09ms        ? ?/sec     1.04     31.5±0.08ms        ? ?/sec
sort merge mixed dictionary tuple 100k              1.00      7.1±0.03ms        ? ?/sec     1.01      7.2±0.03ms        ? ?/sec
sort merge mixed dictionary tuple 1M                1.00     72.9±0.37ms        ? ?/sec     1.02     74.6±0.48ms        ? ?/sec
sort merge mixed tuple 100k                         1.00      7.2±0.03ms        ? ?/sec     1.02      7.3±0.02ms        ? ?/sec
sort merge mixed tuple 1M                           1.00     73.7±0.16ms        ? ?/sec     1.02     75.5±0.19ms        ? ?/sec
sort merge mixed tuple with utf8 view 100k          1.00      7.1±0.04ms        ? ?/sec     1.02      7.2±0.02ms        ? ?/sec
sort merge mixed tuple with utf8 view 1M            1.00     68.4±0.33ms        ? ?/sec     1.03     70.2±0.33ms        ? ?/sec
sort merge utf8 dictionary 100k                     1.00      3.1±0.01ms        ? ?/sec     1.06      3.3±0.01ms        ? ?/sec
sort merge utf8 dictionary 1M                       1.00     30.9±0.10ms        ? ?/sec     1.06     32.8±0.14ms        ? ?/sec
sort merge utf8 dictionary tuple 100k               1.00      4.8±0.03ms        ? ?/sec     1.03      5.0±0.03ms        ? ?/sec
sort merge utf8 dictionary tuple 1M                 1.00     49.5±0.34ms        ? ?/sec     1.03     50.9±0.34ms        ? ?/sec
sort merge utf8 high cardinality 100k               1.00      5.0±0.01ms        ? ?/sec     1.00      5.0±0.01ms        ? ?/sec
sort merge utf8 high cardinality 1M                 1.00     49.8±0.20ms        ? ?/sec     1.00     49.6±0.12ms        ? ?/sec
sort merge utf8 low cardinality 100k                1.00      3.3±0.01ms        ? ?/sec     1.02      3.4±0.01ms        ? ?/sec
sort merge utf8 low cardinality 1M                  1.00     33.1±0.13ms        ? ?/sec     1.01     33.3±0.10ms        ? ?/sec
sort merge utf8 tuple 100k                          1.00      8.2±0.04ms        ? ?/sec     1.03      8.4±0.02ms        ? ?/sec
sort merge utf8 tuple 1M                            1.00     80.5±0.62ms        ? ?/sec     1.02     81.7±0.39ms        ? ?/sec
sort merge utf8 view high cardinality 100k          1.00      4.2±0.01ms        ? ?/sec     1.01      4.2±0.04ms        ? ?/sec
sort merge utf8 view high cardinality 1M            1.05     44.9±0.30ms        ? ?/sec     1.00     42.9±0.45ms        ? ?/sec
sort merge utf8 view low cardinality 100k           1.00      2.2±0.01ms        ? ?/sec     1.05      2.3±0.01ms        ? ?/sec
sort merge utf8 view low cardinality 1M             1.00     21.7±0.12ms        ? ?/sec     1.03     22.4±0.06ms        ? ?/sec
sort merge utf8 view tuple 100k                     1.00      7.6±0.04ms        ? ?/sec     1.02      7.7±0.03ms        ? ?/sec
sort merge utf8 view tuple 1M                       1.00     75.9±0.37ms        ? ?/sec     1.02     77.7±0.34ms        ? ?/sec
sort mixed dictionary tuple 100k                    1.01     10.9±0.10ms        ? ?/sec     1.00     10.8±0.05ms        ? ?/sec
sort mixed dictionary tuple 1M                      1.00    148.8±1.25ms        ? ?/sec     1.01    150.7±2.29ms        ? ?/sec
sort mixed tuple 100k                               1.00     10.2±0.05ms        ? ?/sec     1.01     10.2±0.05ms        ? ?/sec
sort mixed tuple 1M                                 1.00    120.5±0.87ms        ? ?/sec     1.00    120.7±1.09ms        ? ?/sec
sort mixed tuple with utf8 view 100k                1.02      9.7±0.08ms        ? ?/sec     1.00      9.6±0.04ms        ? ?/sec
sort mixed tuple with utf8 view 1M                  1.00    114.1±0.85ms        ? ?/sec     1.00    114.4±1.02ms        ? ?/sec
sort partitioned f64 100k                           1.01  125.9±113.81µs        ? ?/sec     1.00  125.1±111.02µs        ? ?/sec
sort partitioned f64 1M                             1.00  1801.5±141.93µs        ? ?/sec    1.02  1831.9±52.99µs        ? ?/sec
sort partitioned i64 100k                           1.00  125.4±105.79µs        ? ?/sec     1.06  132.5±176.20µs        ? ?/sec
sort partitioned i64 1M                             1.00  1751.1±87.05µs        ? ?/sec     1.03  1809.9±47.13µs        ? ?/sec
sort partitioned mixed dictionary tuple 100k        1.01  523.5±184.03µs        ? ?/sec     1.00  517.3±183.57µs        ? ?/sec
sort partitioned mixed dictionary tuple 1M          1.00     11.4±0.37ms        ? ?/sec     1.02     11.6±0.46ms        ? ?/sec
sort partitioned mixed tuple 100k                   1.01  309.6±154.22µs        ? ?/sec     1.00  305.3±158.10µs        ? ?/sec
sort partitioned mixed tuple 1M                     1.00     10.1±0.34ms        ? ?/sec     1.01     10.1±0.22ms        ? ?/sec
sort partitioned mixed tuple with utf8 view 100k    1.00   870.5±93.93µs        ? ?/sec     1.01   875.7±60.40µs        ? ?/sec
sort partitioned mixed tuple with utf8 view 1M      1.00      9.1±0.16ms        ? ?/sec     1.02      9.3±0.22ms        ? ?/sec
sort partitioned utf8 dictionary 100k               1.01  162.2±188.09µs        ? ?/sec     1.00  161.1±159.50µs        ? ?/sec
sort partitioned utf8 dictionary 1M                 1.00      2.7±0.02ms        ? ?/sec     1.08      2.9±0.05ms        ? ?/sec
sort partitioned utf8 dictionary tuple 100k         1.00  461.6±110.83µs        ? ?/sec     1.00   460.2±95.53µs        ? ?/sec
sort partitioned utf8 dictionary tuple 1M           1.00     10.5±0.44ms        ? ?/sec     1.02     10.7±0.51ms        ? ?/sec
sort partitioned utf8 high cardinality 100k         1.00  174.6±150.27µs        ? ?/sec     1.00  174.5±140.81µs        ? ?/sec
sort partitioned utf8 high cardinality 1M           1.02      3.9±0.07ms        ? ?/sec     1.00      3.8±0.08ms        ? ?/sec
sort partitioned utf8 low cardinality 100k          1.02  208.4±213.21µs        ? ?/sec     1.00  203.5±173.32µs        ? ?/sec
sort partitioned utf8 low cardinality 1M            1.00      3.2±0.05ms        ? ?/sec     1.02      3.2±0.03ms        ? ?/sec
sort partitioned utf8 tuple 100k                    1.00  1144.4±174.50µs        ? ?/sec    1.01  1150.8±124.16µs        ? ?/sec
sort partitioned utf8 tuple 1M                      1.00     12.1±0.44ms        ? ?/sec     1.01     12.2±0.44ms        ? ?/sec
sort partitioned utf8 view high cardinality 100k    1.00  359.8±225.86µs        ? ?/sec     1.04  374.9±163.92µs        ? ?/sec
sort partitioned utf8 view high cardinality 1M      1.07      4.3±0.11ms        ? ?/sec     1.00      4.1±0.09ms        ? ?/sec
sort partitioned utf8 view low cardinality 100k     1.00  142.1±106.10µs        ? ?/sec     1.00  141.8±117.37µs        ? ?/sec
sort partitioned utf8 view low cardinality 1M       1.02      2.4±0.05ms        ? ?/sec     1.00      2.4±0.02ms        ? ?/sec
sort partitioned utf8 view tuple 100k               1.00   952.6±73.98µs        ? ?/sec     1.02   971.0±70.60µs        ? ?/sec
sort partitioned utf8 view tuple 1M                 1.00     10.3±0.15ms        ? ?/sec     1.03     10.5±0.21ms        ? ?/sec
sort utf8 dictionary 100k                           1.01  1155.2±17.76µs        ? ?/sec     1.00  1149.3±17.00µs        ? ?/sec
sort utf8 dictionary 1M                             1.00     27.6±0.32ms        ? ?/sec     1.06     29.2±0.35ms        ? ?/sec
sort utf8 dictionary tuple 100k                     1.00      8.1±0.06ms        ? ?/sec     1.00      8.1±0.04ms        ? ?/sec
sort utf8 dictionary tuple 1M                       1.00    111.5±1.99ms        ? ?/sec     1.02    113.6±1.79ms        ? ?/sec
sort utf8 high cardinality 100k                     1.00      3.7±0.06ms        ? ?/sec     1.01      3.7±0.05ms        ? ?/sec
sort utf8 high cardinality 1M                       1.05    59.1±18.31ms        ? ?/sec     1.00     56.4±7.47ms        ? ?/sec
sort utf8 low cardinality 100k                      1.00      3.7±0.01ms        ? ?/sec     1.02      3.8±0.02ms        ? ?/sec
sort utf8 low cardinality 1M                        1.00     37.5±0.65ms        ? ?/sec     1.00     37.3±0.56ms        ? ?/sec
sort utf8 tuple 100k                                1.00     10.6±0.12ms        ? ?/sec     1.01     10.7±0.04ms        ? ?/sec
sort utf8 tuple 1M                                  1.00    141.7±3.62ms        ? ?/sec     1.00    141.6±1.49ms        ? ?/sec
sort utf8 view high cardinality 100k                1.03      3.8±0.06ms        ? ?/sec     1.00      3.7±0.05ms        ? ?/sec
sort utf8 view high cardinality 1M                  1.13    68.8±22.81ms        ? ?/sec     1.00    60.7±12.55ms        ? ?/sec
sort utf8 view low cardinality 100k                 1.00      2.2±0.02ms        ? ?/sec     1.03      2.3±0.02ms        ? ?/sec
sort utf8 view low cardinality 1M                   1.03     27.9±0.39ms        ? ?/sec     1.00     27.2±0.42ms        ? ?/sec
sort utf8 view tuple 100k                           1.00     10.0±0.10ms        ? ?/sec     1.01     10.1±0.05ms        ? ?/sec
sort utf8 view tuple 1M                             1.00    138.1±1.35ms        ? ?/sec     1.00    138.7±1.11ms        ? ?/sec

Resource Usage

sort — base (merge-base)

Metric Value
Wall time 3260.7s
Peak memory 788.8 MiB
Avg memory 500.5 MiB
CPU user 4975.6s
CPU sys 233.6s
Peak spill 0 B

sort — branch

Metric Value
Wall time 3380.7s
Peak memory 793.0 MiB
Avg memory 465.3 MiB
CPU user 4886.1s
CPU sys 221.7s
Peak spill 0 B

File an issue against this benchmark runner

@github-actions github-actions Bot removed the auto detected api change Auto detected API change label Jul 9, 2026
Comment on lines +310 to 361
fn initialize_all_partitions(
&mut self,
uninitiated_partitions: &mut Vec<usize>,
cx: &mut Context,
) -> Poll<Result<()>> {
// Once all partitions have set their corresponding cursors for the loser tree,
// we skip the following block. Until then, this function may be called multiple
// times and can return Poll::Pending if any partition returns Poll::Pending.

assert_eq!(
self.loser_tree.len(),
0,
"loser tree must be empty when initializing"
);

// Manual indexing since we're iterating over the vector and shrinking it in the loop
let mut idx = 0;
while idx < uninitiated_partitions.len() {
let partition_idx = uninitiated_partitions[idx];
match self.maybe_poll_stream(cx, partition_idx) {
Poll::Ready(Err(e)) => {
return Poll::Ready(Err(e));
}
Poll::Pending => {
// The polled stream is pending which means we're already set up to
// be woken when necessary
// Try the next stream
idx += 1;
}
_ => {
// The polled stream is ready
// Remove it from uninitiated_partitions
// Don't bump idx here, since a new element will have taken its
// place which we'll try in the next loop iteration
// swap_remove will change the partition poll order, but that shouldn't
// make a difference since we're waiting for all streams to be ready.
uninitiated_partitions.swap_remove(idx);
}
}
}

return Poll::Ready(self.emit_in_progress_batch().transpose());
if uninitiated_partitions.is_empty() {
Poll::Ready(Ok(()))
} else {
// There are still uninitiated partitions so return pending.
// We only get here if we've polled all uninitiated streams and at least one of them
// returned pending itself. That means we will be woken as soon as one of the
// streams would like to be polled again.
// There is no need to reschedule ourselves eagerly.
Poll::Pending
}
}

@rluvaton rluvaton Jul 9, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Extracted this to a separate pr so the diff will be smaller:

@rluvaton rluvaton changed the title WIP - prototyping how the code will look like if we used yield like machinery chore: Simplifying SortPreservingMergeStream to use generators instead of state machine Jul 9, 2026
rluvaton added 2 commits July 9, 2026 19:33
# Conflicts:
#	datafusion/physical-plan/src/sorts/merge.rs
@rluvaton rluvaton marked this pull request as ready for review July 9, 2026 16:34
let streams =
FieldCursorStream::<$t>::new($sort, $streams, $reservation.new_empty());
return Ok(Box::pin(SortPreservingMergeStream::new(
return Ok(SortPreservingMergeStream::new(

@pepijnve pepijnve Jul 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since SortPreservingMergeStream no longer has a Stream implementation and you need to turn it into a stream, we might want to give it a different name.

Would it be possible to return the impl Stream directly from new to avoid the somewhat odd construct?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since SortPreservingMergeStream is no longer has a Stream implementation and you need to turn it into a stream, we might want to give it a different name.

Would it be possible to return the impl Stream directly from new to avoid the somewhat odd construct?

I wanted to reduce the amount of changes in this PR as possible so it will be easier to review and see the actual difference between generators and current implementation.

this can be a followup PR

Comment thread Cargo.toml
datafusion-spark = { path = "datafusion/spark", version = "54.0.0" }
datafusion-sql = { path = "datafusion/sql", version = "54.0.0" }
datafusion-substrait = { path = "datafusion/substrait", version = "54.0.0" }
genawaiter = { version = "0.99.1", default-features = false }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've noticed some reluctance in other PRs to pull in additional dependencies since the dependency graph is quite large already. Not sure what the policy is to accept or reject new ones.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The good thing is that this does not have any dependencies at all

  • no runtime dependencies
    • no compile-time dependencies either, with default-features = false

From genawaiter README

https://github.com/whatisaphone/genawaiter/blob/45c10c223b92da215e182bc3eff0d5e09bf813f4/Cargo.toml#L17-L21

The only dependencies that we are using with the enabled futures feature already exists

let cloned_metrics = self.metrics.clone();

let mut this = self;
let stream = Gen::new(|co| async move {

@pepijnve pepijnve Jul 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried out the try_stream! variant of this code locally to get an idea of what it would look like. The points made in the PR description are certainly valid. I did find the try_stream! variant a bit more intuitive to read though since the error handling is a lot more natural. The construct here seems a bit clunky where the Co essentially always receives an Ok in run and the Err case gets handled here.

@pepijnve pepijnve Jul 9, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the implementation of async-stream and comparing to sync::Gen, the async-stream implementation uses a thread local Cell while sync::Gen uses a mutex. It's only one mutex acquire per batch of course, but this does incur some cost compared to the code it's replacing. Is this a concern if the intention would be to apply this pattern more generally?

@rluvaton rluvaton Jul 9, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

async-stream have that because it is a macro you cant move the yield sender between functions.

the async-fn-stream crate that aim to have the same behavior and logic as async-stream but in fact store SmallVec for multiple emits per poll so this is not an option.

the Mutex in async-stream is just to make it safe in rust

there shouldn't be any contention as the mutex is just for step lock (it does still can add an overhead of course).

there is an added cost which is why I run the benchmark and it did not show any regressions.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of the downsides of async-stream that you list in the Description are accurate, but I would still recommend it, both for the error handling differences, as well as because it does not introduce the requirement that the stream be Send.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A possible alternative to both could be a DIY solution for DataFusion. I tried to sketch out an alternative loosely based on the various existing implementations https://github.com/pepijnve/datafusion/blob/4b4954cd50a26101d4e40d25c13d9068b00b8d2c/datafusion/execution/src/async_stream.rs There's probably still room for improvement here, the main thing I wanted to get across is that this looks much nicer imo at the call site in SortPreservingMergeStream (see https://github.com/pepijnve/datafusion/blob/4b4954cd50a26101d4e40d25c13d9068b00b8d2c/datafusion/physical-plan/src/sorts/merge.rs#L214)

The main downside I see is that without a proc macro it's really hard to make this entirely abuse proof. I started with the thread local approach used by the async-stream macro, but that's unsound when the emitter is exposed. I went for the Arc<Mutex> then rather than the SmallVec that async-fn-stream uses.

Doesn't have to be this implementation, but perhaps something like this could be a "have your cake and eat it" solution?

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

Labels

physical-plan Changes to the physical-plan crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants