Skip to content

feat(perf): compute routing and lookup hashes once - #26249

Merged
adriangb merged 20 commits into
apache:mainfrom
devanbenz:partition_lookup_experiment
Nov 2, 2026
Merged

adriangb merged 20 commits into
apache:mainfrom
devanbenz:partition_lookup_experiment

Conversation

@devanbenz

@devanbenz devanbenz commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Which issue does this PR close?

Performance

This PR improves TPC-H queries across the board with pushdown filters enabled

pushdown_filters total, PR / main
true 0.77x (q17 0.49x, q22 0.52x, q04/q05 0.63x)
false 1.00–1.03x geomean over two rounds (main vs main: 1.01x)

without pushdown filters there does not appear to be a regression and differences are due to benchmark noise most likely.

Per-query SF10 results

TPC-H SF10 parquet, i7-12700K, 20 partitions, bench.sh run tpch10. main (49c67c296) and this PR (5c72efaf2) were run alternately, so background load affects both equally.

pushdown_filters = true

query main (s) PR (s) PR / main
q01 0.383 0.376 0.98x
q02 0.122 0.097 0.80x
q03 0.365 0.248 0.68x
q04 0.351 0.223 0.63x
q05 0.498 0.314 0.63x
q06 0.270 0.276 1.02x
q07 0.508 0.343 0.68x
q08 0.395 0.357 0.90x
q09 0.844 0.775 0.92x
q10 0.435 0.348 0.80x
q11 0.079 0.080 1.01x
q12 0.346 0.270 0.78x
q13 0.398 0.320 0.80x
q14 0.209 0.190 0.91x
q15 0.491 0.493 1.00x
q16 0.117 0.092 0.79x
q17 0.583 0.284 0.49x
q18 2.186 1.649 0.75x
q19 0.287 0.275 0.96x
q20 0.324 0.256 0.79x
q21 1.507 1.034 0.69x
q22 0.154 0.081 0.52x
total 10.85 8.38 0.77x

pushdown_filters = false

query main (s) PR / main, round 1 PR / main, round 2 main round 2 / round 1
q01 0.503 1.04x 1.01x 1.03x
q02 0.107 1.03x 1.03x 1.02x
q03 0.282 1.05x 0.99x 1.06x
q04 0.134 0.99x 1.04x 0.95x
q05 0.502 0.95x 1.05x 0.92x
q06 0.131 1.01x 1.05x 0.97x
q07 0.636 1.04x 1.01x 1.02x
q08 0.370 1.05x 1.03x 1.02x
q09 0.662 0.99x 1.01x 0.98x
q10 0.404 1.02x 1.02x 1.01x
q11 0.072 1.03x 0.98x 1.02x
q12 0.139 1.06x 1.05x 1.00x
q13 0.275 1.04x 1.05x 0.99x
q14 0.204 1.04x 1.00x 1.00x
q15 0.372 1.08x 1.01x 1.02x
q16 0.080 1.06x 1.05x 1.01x
q17 0.818 0.95x 0.98x 0.94x
q18 1.379 1.03x 0.99x 1.05x
q19 0.279 1.03x 0.80x 1.22x
q20 0.349 1.02x 1.00x 0.98x
q21 0.797 1.05x 1.02x 0.98x
q22 0.062 1.05x 0.96x 1.05x
geomean 1.027x 1.004x 1.008x

Rationale for this change

For Partitioned hash joins, the probe-side dynamic filter is a CASE hash_repartition % N WHEN i THEN bounds_i AND hash_lookup_i ..., whose per-row cost grows with N. It was the main cost of TPC-H Q17 with pushdown_filters on.

What changes are included in this PR?

When every non-empty partition has an IN list or a hash table and none was canceled, the CASE is replaced by one merged filter:

  • One HashTableLookupExpr that routes each probe row (hash % N, or RangeExpr) to its partition's existing hash table. No merged table is built.
  • Or one IN list, if all partitions are IN lists that together fit the IN-list limits.
  • Merged [min, max] bounds, plus a merged KeyRangeBitmap (KeyRangeBitmap::union), so row-group and page pruning match main.

CASE is kept when a partition was canceled or uses an ArrayMap. HashTableLookupExpr::new (#[doc(hidden)]) is now the single constructor, taking Option<PartitionRouter> and per-partition maps.

What is the testing strategy for this PR?

  • routed_lookup_fuzz: routed lookup vs. a single-table lookup over all keys.
  • union_fuzz: KeyRangeBitmap::union vs. KeyRangeBitmap::try_new over all keys.
  • Unit tests in shared_bounds.rs and pruning_predicate.rs, and range_partitioning.slt.
  • The CI spill-pool-fuzz step is now fuzz and runs both fuzzers with 10k seeds.

Are there any user-facing changes?

No change to query results. EXPLAIN shows k >= min AND k <= max AND hash_lookup instead of the CASE.

@github-actions github-actions Bot added the physical-plan Changes to the physical-plan crate label Oct 12, 2026
@codecov-commenter

codecov-commenter commented Oct 12, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 85.15284% with 34 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.92%. Comparing base (13a65f0) to head (810516f).
⚠️ Report is 1 commits behind head on main.

Files with missing lines Patch % Lines
...physical-plan/src/joins/hash_join/shared_bounds.rs 81.90% 17 Missing and 2 partials ⚠️
...atafusion/physical-plan/src/joins/join_hash_map.rs 83.33% 8 Missing ⚠️
...fusion/physical-plan/src/joins/key_range_bitmap.rs 94.52% 0 Missing and 4 partials ⚠️
...usion/physical-plan/src/joins/stream_join_utils.rs 0.00% 3 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##             main   #26249    +/-   ##
========================================
  Coverage   82.92%   82.92%            
========================================
  Files        1154     1154            
  Lines      457790   458001   +211     
  Branches   457790   458001   +211     
========================================
+ Hits       379637   379815   +178     
- Misses      55135    55162    +27     
- Partials    23018    23024     +6     

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

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

@devanbenz devanbenz changed the title feat(perf): compute routing and lookup hashes for case once feat(perf): compute routing and lookup hashes once Oct 12, 2026

@tschwarzinger tschwarzinger left a comment •

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.

From what I can gather, I like the approach of a specialized partitioning expression and after looking at the code for some time it makes sense. I also can't think of an easy way from the top of my head to improve the CASE evaluation in such a way that this specialized expression isn't necessary.

I've left a few notes that you can think of integrating. As I am not too familiar with the joining ecosystem I can't really approve it but to me the approach makes sense.

I think the only thing where this could be counter-productive is, if the data source can apply pruning with the CASE expression but not with the new special-purpose expression. I am not sure whether this happening or is even worth doing. Probably an optimization that transforms small multi-partition build sides into an IN LIST expression is the best way for this scenario.

@devanbenz

Copy link
Copy Markdown
Contributor Author

@tschwarzinger I'm actually thinking more about this and how I can get away from specialization that requires adding a whole new Expr. I was thinking about maybe folding this functionality in to https://docs.rs/datafusion/latest/datafusion/physical_plan/joins/struct.HashTableLookupExpr.html and just slightly modifying the existing operator 🤔

I'll get back to this PR later today or tomorrow, but, that's where my head is at right now.

@adriangb

Copy link
Copy Markdown
Contributor

I am not sure whether this happening or is even worth doing. Probably an optimization that transforms small multi-partition build sides into an IN LIST expression is the best way for this scenario.

We already emit in list expressions for small builds sides, is there something I'm missing?

@devanbenz

devanbenz commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor Author

@tschwarzinger @adriangb

I think the only thing where this could be counter-productive is, if the data source can apply pruning with the CASE expression but not with the new special-purpose expression. I am not sure whether this happening or is even worth doing.

I was able to reproduce this and generate a table + query (with the help of my buddy claude) to get pruning in the CASE expr working, but, not working in my specialization:

Parquet file information:


 Probe: /tmp/df-prune/probe.parquet (2.7 MB)

 - Schema: k Int64 NOT NULL, v Int64 NOT NULL (v = k % 7)
 - Rows: 1,000,000, with k = 0…999999, sorted
 - Row groups: 100, each holding 10,000 rows with no overlap

 ┌───────────┬───────┬────────┬────────┐
 │ row group │ rows  │ k min  │ k max  │
 ├───────────┼───────┼────────┼────────┤
 │ 0         │ 10000 │ 0      │ 9999   │
 ├───────────┼───────┼────────┼────────┤
 │ 1         │ 10000 │ 10000  │ 19999  │
 ├───────────┼───────┼────────┼────────┤
 │ …         │ …     │ …      │ …      │
 ├───────────┼───────┼────────┼────────┤
 │ 98        │ 10000 │ 980000 │ 989999 │
 ├───────────┼───────┼────────┼────────┤
 │ 99        │ 10000 │ 990000 │ 999999 │

Results of pruning:

┌────────────────────────┬───────────────────────────────────────────────────────────┬─────────────────┐
 │ build                  │ probe scan filter                                         │ row groups read │
 ├────────────────────────┼───────────────────────────────────────────────────────────┼─────────────────┤
 │ base (9551051f1, main) │ CASE hash_repartition % 4 WHEN 0 THEN … AND hash_lookup … │ 2 of 100        │
 ├────────────────────────┼───────────────────────────────────────────────────────────┼─────────────────┤
 │ PR (4c7c51a5c)         │ k >= 0 AND k <= 999999 AND partitioned_hash_lookup(4)     │ 100 of 100      │
 └────────────────────────┴───────────────────────────────────────────────────────────┴─────────────────┘

Where the query is like so (including building parquet files):

-- Does the probe-side scan prune row groups using the hash join dynamic filter?
-- Base: CASE hash % N WHEN i THEN hash_lookup_i ... -> pruning sees per-partition KEY_RANGE_BITMAPs.
-- PR:   partitioned_hash_lookup(...) -> pruning only sees the merged [min, max] bounds.

-- probe: k = 0..999_999 sorted, 100 row groups of 10_000 rows
COPY (SELECT value AS k, value % 7 AS v FROM generate_series(0, 999999) ORDER BY k)
TO '/tmp/df-prune/probe.parquet' STORED AS PARQUET
OPTIONS ('format.max_row_group_size' '10000');

-- build: 2000 distinct keys (~500 per partition > 150 -> hash-table strategy, not IN LIST),
-- clustered at both ends so the [min, max] bounds cover the whole probe range
COPY (
  SELECT value AS k FROM generate_series(0, 999)
  UNION ALL
  SELECT value AS k FROM generate_series(999000, 999999)
) TO '/tmp/df-prune/build.parquet' STORED AS PARQUET;

CREATE EXTERNAL TABLE probe STORED AS PARQUET LOCATION '/tmp/df-prune/probe.parquet';
CREATE EXTERNAL TABLE build STORED AS PARQUET LOCATION '/tmp/df-prune/build.parquet';

-- force a Partitioned (multi-partition build) hash join with `build` on the build side
SET datafusion.execution.target_partitions = 4;
SET datafusion.optimizer.repartition_joins = true;
SET datafusion.optimizer.hash_join_single_partition_threshold = 0;
SET datafusion.optimizer.hash_join_single_partition_threshold_rows = 0;
SET datafusion.optimizer.join_reordering = false;

EXPLAIN ANALYZE
SELECT count(*), sum(p.v)
FROM build b JOIN probe p ON b.k = p.k;

SELECT count(*), sum(p.v) FROM build b JOIN probe p ON b.k = p.k;

Going to continue playing with this and getting it to a much better state.

@tschwarzinger

Copy link
Copy Markdown
Contributor

We already emit in list expressions for small builds sides, is there something I'm missing?

What I meant was over multiple partitions. I am not sure whether we have anything there.

For example:

CASE hash(key) % 2
   WHEN 0 THEN IN LIST (1)
   WHEN 1 THEN IN LIST (2)
END

becomes

key IN LIST (1,2)

@adriangb

Copy link
Copy Markdown
Contributor

Exploration also needs to consider number of partitions involved (i've looked at implementations before that are faster at 1->64 partitions but get slower after that), selectivity of the join, size of each side, pruning potential, size/length of the values being hashed, etc. There are many factors 😓

@tschwarzinger

Copy link
Copy Markdown
Contributor

Thank you for investigating that!

From what I can tell, the pruning for hash lookups is done via KeyRangeBitmapPruningExpr. Maybe if we can extend the existing hash lookup expression and we can support HashTableLookupExpr::pruning_bitmap for multiple partitions, the existing pruning implementation "comes for free".

@adriangb adriangb left a comment

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.

Thank you for this PR, @devanbenz.

I ran some benchmarks, results look good. TPC-H SF100, CPU time vs main, lower is better. N is the number of partitions:

Query N=16 N=128
Q3 0.74 0.52
Q5 0.72 0.46
Q9 0.64 0.38
Q21 0.67 0.41

This PR also looses pushdown:

-- Data: probe sorted by k, small row groups and pages; build has 5,000 sparse keys.
COPY (SELECT value AS k, value * 2 AS v FROM generate_series(0, 1999999) ORDER BY k)
  TO '/tmp/mre/probe.parquet' OPTIONS (max_row_group_size 20000, data_page_row_count_limit 2000);
COPY (SELECT value AS k FROM generate_series(0, 1999999) WHERE value % 200000 < 500)
  TO '/tmp/mre/build.parquet';

CREATE EXTERNAL TABLE probe STORED AS PARQUET LOCATION '/tmp/mre/probe.parquet';
CREATE EXTERNAL TABLE build STORED AS PARQUET LOCATION '/tmp/mre/build.parquet';
SET datafusion.execution.target_partitions = 16;
SET datafusion.execution.parquet.pushdown_filters = false;
SET datafusion.optimizer.hash_join_single_partition_threshold = 0;
SET datafusion.optimizer.hash_join_single_partition_threshold_rows = 0;
EXPLAIN ANALYZE SELECT count(*) FROM build b JOIN probe p ON b.k = p.k;

Probe DataSourceExec metrics:

main this PR
predicate CASE hash_repartition % 16 WHEN 0 THEN ... AND hash_lookup ... k@0 >= 0 AND k@0 <= 1800499 AND partitioned_hash_lookup(16)
pruning_predicate min/max AND KEY_RANGE_BITMAP(...) per partition min/max only
row_groups_pruned_statistics 100 total → 14 matched 100 total → 91 matched
page_index_rows_pruned 280.0 K total → 26.05 K matched 1.82 M total → 1.80 M matched
output_rows 26.05 K 1.80 M

Some more issues we should resolve before moving forward with this in review comments.

lookups.push(PartitionLookup::Map(Arc::clone(map)));
Some(lookups)
}
_ => None,

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.

This PR falls back to CASE at high target_partitions. That is where the CASE path costs the most: its cost grows about linearly with N (microbenchmark: about 6 / 50 / 150 ns/row at N=1 / 16 / 128).

Since this arm returns None as soon as one partition is not a hash map, and at high N each partition gets few keys, so some partitions pick InList (the per-partition 150-distinct threshold). Then the whole filter falls back to CASE hash_repartition % N.

MRE (uses probe.parquet from the other comment):

SET datafusion.execution.target_partitions = 128;
SET datafusion.optimizer.hash_join_single_partition_threshold = 0;
SET datafusion.optimizer.hash_join_single_partition_threshold_rows = 0;
EXPLAIN ANALYZE SELECT count(*)
FROM (SELECT value AS k FROM generate_series(1, 19200)) b
JOIN probe p ON b.k * 97 = p.k;

HASH_JOIN_SEED,
lookups,
)) as Arc<dyn PhysicalExpr>;
let bounds = merged_bounds

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.

The merged bounds ignore canceled partitions; is that intended? It looks safe because a canceled partition’s rows have no consumer.

A CanceledUnknown partition pushes PartitionLookup::Const(true) but adds nothing to the bounds. The bounds predicate is then ANDed for every probe row. So a row routed to the canceled partition is removed if its key is outside the other partitions' range. That row can have a match in the canceled partition.

The CASE path keeps these rows, because each partition has its own bounds and a canceled partition gives true.

Possible fix (needs checking): do not use the merged bounds when a partition is canceled.

Suggested change
let bounds = merged_bounds
let bounds = merged_bounds.filter(|_| !has_canceled_unknown)

on_columns: Vec<PhysicalExprRef>,
routing_state: SeededRandomState,
lookup_state: SeededRandomState,
partitions: Vec<PartitionLookup>,

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.

Related to the pruning regression (see the comment on shared_bounds.rs): this expression has no equivalent of HashTableLookupExpr::pruning_bitmap(), so PruningPredicate cannot use it.

Suggestion:

  • Store one combined Option<Arc<KeyRangeBitmap>> here. It is the union of the per-partition bitmaps. If any partition has no bitmap (or is Const(true)), use None.
  • Expose it with pruning_bitmap(), and let pruning_predicate.rs handle PartitionedLookupExpr the same way as HashTableLookupExpr.
pub(crate) struct PartitionedLookupExpr {
    on_columns: Vec<PhysicalExprRef>,
    routing_state: SeededRandomState,
    lookup_state: SeededRandomState,
    partitions: Vec<PartitionLookup>,
    /// Union of the per-partition key-range bitmaps, for row group and page pruning.
    pruning_bitmap: Option<Arc<KeyRangeBitmap>>,
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@adriangb I'm actually thinking about utilizing HashTableLookupExpr instead of creating a new specialized operator--while keeping it's API surface the same/internals the same if possible so I can utilize PruningPredicate and all the other niceties of HashTableLookupExpr.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Also see: #26249 (comment) where my operator failed to prune while CASE did it as expected.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

New changes allow pruning, I went ahead and utilized HashTableLookupExpr. Using

-- Data: probe sorted by k, small row groups and pages; build has 5,000 sparse keys.
COPY (SELECT value AS k, value * 2 AS v FROM generate_series(0, 1999999) ORDER BY k)
  TO '/tmp/mre/probe.parquet' OPTIONS (max_row_group_size 20000, data_page_row_count_limit 2000);
COPY (SELECT value AS k FROM generate_series(0, 1999999) WHERE value % 200000 < 500)
  TO '/tmp/mre/build.parquet';

CREATE EXTERNAL TABLE probe STORED AS PARQUET LOCATION '/tmp/mre/probe.parquet';
CREATE EXTERNAL TABLE build STORED AS PARQUET LOCATION '/tmp/mre/build.parquet';
SET datafusion.execution.target_partitions = 16;
SET datafusion.execution.parquet.pushdown_filters = false;
SET datafusion.optimizer.hash_join_single_partition_threshold = 0;
SET datafusion.optimizer.hash_join_single_partition_threshold_rows = 0;
EXPLAIN ANALYZE SELECT count(*) FROM build b JOIN probe p ON b.k = p.k;

Here is the DataSourceExec

|                   |             DataSourceExec: file_groups={16 groups: [[tmp/mre/probe.parquet:0..657492], [tmp/mre/probe.parquet:657492..1314984], [tmp/mre/probe.parquet:1314984..1972476], [tmp/mre/probe.parquet:1972476..2629968], [tmp/mre/probe.parquet:2629968..3287460], ...]}, projection=[k], output_ordering=[k@0 ASC NULLS LAST], file_type=parquet, predicate=DynamicFilter [ k@0 >= 0 AND k@0 <= 1800499 AND hash_lookup ], dynamic_rg_pruning=eligible, pruning_predicate=k_null_count@1 != row_count@2 AND k_max@0 >= 0 AND k_null_count@1 != row_count@2 AND k_min@3 <= 1800499 AND k_null_count@1 != row_count@2 AND KEY_RANGE_BITMAP(k_min@3, k_max@0, 2508/1048576 buckets), required_guarantees=[], metrics=[output_rows=26.05 K, elapsed_compute=18.74ms, output_bytes=896.0 KB, output_batches=14, files_ranges_pruned_statistics=16 total → 16 matched, row_groups_pruned_statistics=100 total → 14 matched, page_index_pages_pruned=140 total → 14 matched, page_index_rows_pruned=280.0 K total → 26.05 K matched, limit_pruned_row_groups=0 total → 0 matched, batches_split=0, bytes_processed=10.0 MB, bytes_scanned=328.0 KB, file_open_errors=0, file_scan_errors=0, files_opened=16, files_processed=16, num_predicate_creation_errors=0, page_index_load_skipped=5, predicate_evaluation_errors=0, pushdown_rows_matched=0, pushdown_rows_pruned=0, row_groups_pruned_dynamic_filter=0, predicate_cache_inner_records=0, predicate_cache_records=0, bloom_filter_eval_time=82.82µs, metadata_load_time=2.66ms, page_index_eval_time=2.14ms, row_pushdown_eval_time=43ns, statistics_eval_time=5.01ms, time_elapsed_opening=54.47ms, time_elapsed_processing=78.27ms, time_elapsed_scanning_total=42.34ms, time_elapsed_scanning_until_data=32.50ms, output_rows_skew=37.62%, scan_efficiency_ratio=3.19% (335.9 K/10.52 M)] |
|                   |

More specifically the pruning metrics:

metrics=[output_rows=26.05 K, elapsed_compute=18.74ms, output_bytes=896.0 KB, output_batches=14, files_ranges_pruned_statistics=16 total → 16 matched, row_groups_pruned_statistics=100 total → 14 matched, page_index_pages_pruned=140 total → 14 matched, page_index_rows_pruned=280.0 K total → 26.05 K matched,

@github-actions github-actions Bot added the auto detected api change Auto detected API change label Oct 19, 2026
@github-actions github-actions Bot removed the auto detected api change Auto detected API change label Oct 19, 2026
@github-actions github-actions Bot added core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) labels Oct 20, 2026
Building one hash table over every build partition's keys ran on a single
thread at the dynamic filter barrier, so every probe stream waited on it
(about 0.7s for a 15M key build at TPC-H SF10).

HashTableLookupExpr now has a routed mode: each probe row is looked up in
the table of the build partition its key was repartitioned to (hash or
range routing), sharing the partitions' tables as they are. It stays a
HashTableLookupExpr, so pruning keeps using its merged pruning bitmap.

Removes union_hash_maps and JoinHashMapType::hash_values.
@devanbenz

devanbenz commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor Author

@adriangb When you get a moment could you please run your same benchmarks against this branch again. I pushed up some changes that I was cooking on over the past couple days to improve performance.

  • Removed the new specialized Expr and am using HashTableLookupExpr, so pruning is now working
  • Removed the union so we just collect pointers to existing hash tables to merge them, this was taking up most of the compute time in my previous impl.

Locally I'm seeing:

Config #26442 (geomean) #26442 (worst query) #26249 (geomean) #26249 (worst query) A/A control (main vs main)
pushdown on, 16 partitions 0.76 [0.68, 0.83] 1.02 (Q1) 0.76 [0.69, 0.83] 1.01 (Q1) 0.99
pushdown on, 128 partitions 0.47 [0.38, 0.57] 1.01 (Q6) 0.48 [0.40, 0.59] 1.01 (Q6) 1.00
pushdown off, 16 partitions 1.02 [1.01, 1.04] 1.17 (Q9) 1.01 [1.00, 1.03] 1.23 (Q18)* 1.00
pushdown off, 128 partitions 0.98 [0.90, 1.04] 1.42 (Q9) 0.95 [0.87, 1.00] 1.07 (Q7) 1.00

* Caused by one outlier round (241.8s vs ~125s in the other two rounds).
(171.8s vs ~127s).

Using the following machine

i7-12700K (20 threads, x86), 32 GB RAM


With pushdown filters off - all tpch:

TPC-H SF10, wall time in seconds (median of 5 hot runs, lower is better). PR #26249 at `1e3caf793`, PR #26442 at `4b3684cae`.
Default settings (`pushdown_filters = false`, 20 partitions), each query in its own process.
query PR #26442 PR #26249 #26249 / #26442
q01 0.439 0.447 1.02x
q02 0.109 0.100 0.91x
q03 0.303 0.290 0.96x
q04 0.134 0.133 0.99x
q05 0.502 0.474 0.94x
q06 0.123 0.127 1.04x
q07 0.792 0.647 0.82x
q08 0.417 0.364 0.87x
q09 0.882 0.629 0.71x
q10 0.409 0.402 0.98x
q11 0.072 0.068 0.95x
q12 0.138 0.134 0.97x
q13 0.301 0.300 1.00x
q14 0.190 0.189 0.99x
q15 0.363 0.358 0.98x
q16 0.086 0.088 1.01x
q17 0.744 0.751 1.01x
q18 0.704 0.638 0.91x
q19 0.240 0.242 1.01x
q20 0.320 0.333 1.04x
q21 1.047 0.995 0.95x
q22 0.063 0.063 1.01x
total 8.38 7.77 0.93x

With pushdown filters on - all tpch

query PR #26442 PR #26249 #26249 / #26442
q01 0.370 0.381 1.03x
q02 0.094 0.093 0.99x
q03 0.255 0.256 1.00x
q04 0.192 0.215 1.12x
q05 0.262 0.282 1.08x
q06 0.268 0.274 1.02x
q07 0.335 0.344 1.03x
q08 0.367 0.341 0.93x
q09 0.981 0.823 0.84x
q10 0.335 0.357 1.07x
q11 0.077 0.071 0.92x
q12 0.265 0.282 1.06x
q13 0.303 0.327 1.08x
q14 0.169 0.170 1.00x
q15 0.460 0.466 1.01x
q16 0.089 0.090 1.01x
q17 0.254 0.248 0.98x
q18 0.441 0.432 0.98x
q19 0.254 0.254 1.00x
q20 0.238 0.225 0.95x
q21 1.215 1.120 0.92x
q22 0.072 0.075 1.04x
total 7.30 7.13 0.98x

@adriangb adriangb left a comment

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.

Overall this looks good to me. If you're able to rebase, fix review comments and mark as ready we can move forward with this. Even if we end up adding a bloom filter option (because it's faster or maybe just because it can be serialized across the wire), and even if this doesn't really fully resolve the issues with hash join dynamic filter overhead, it's certainly better than the status quo.

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
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 partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ partition_lookup_experiment ┃       Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.24 ms │                     1.25 ms │    no change │
│ QQuery 1  │   11.73 ms │                    11.75 ms │    no change │
│ QQuery 2  │   35.91 ms │                    35.96 ms │    no change │
│ QQuery 3  │   32.47 ms │                    32.05 ms │    no change │
│ QQuery 4  │  243.11 ms │                   247.72 ms │    no change │
│ QQuery 5  │  276.41 ms │                   281.75 ms │    no change │
│ QQuery 6  │    1.24 ms │                     1.25 ms │    no change │
│ QQuery 7  │   12.96 ms │                    13.20 ms │    no change │
│ QQuery 8  │  336.50 ms │                   345.47 ms │    no change │
│ QQuery 9  │  478.83 ms │                   482.85 ms │    no change │
│ QQuery 10 │   66.54 ms │                    66.56 ms │    no change │
│ QQuery 11 │   75.55 ms │                    75.94 ms │    no change │
│ QQuery 12 │  267.07 ms │                   280.88 ms │ 1.05x slower │
│ QQuery 13 │  376.98 ms │                   377.74 ms │    no change │
│ QQuery 14 │  290.69 ms │                   293.34 ms │    no change │
│ QQuery 15 │  288.09 ms │                   296.53 ms │    no change │
│ QQuery 16 │  629.36 ms │                   639.93 ms │    no change │
│ QQuery 17 │  647.60 ms │                   650.38 ms │    no change │
│ QQuery 18 │ 1310.83 ms │                  1334.44 ms │    no change │
│ QQuery 19 │   28.55 ms │                    28.51 ms │    no change │
│ QQuery 20 │  529.26 ms │                   530.05 ms │    no change │
│ QQuery 21 │  519.70 ms │                   514.95 ms │    no change │
│ QQuery 22 │  996.72 ms │                   988.62 ms │    no change │
│ QQuery 23 │ 3118.09 ms │                  3142.88 ms │    no change │
│ QQuery 24 │   41.65 ms │                    40.32 ms │    no change │
│ QQuery 25 │  106.19 ms │                   108.16 ms │    no change │
│ QQuery 26 │   40.70 ms │                    40.84 ms │    no change │
│ QQuery 27 │  520.46 ms │                   514.53 ms │    no change │
│ QQuery 28 │ 2915.99 ms │                  2973.29 ms │    no change │
│ QQuery 29 │   38.88 ms │                    38.87 ms │    no change │
│ QQuery 30 │  321.82 ms │                   308.85 ms │    no change │
│ QQuery 31 │  289.34 ms │                   281.58 ms │    no change │
│ QQuery 32 │  967.05 ms │                   996.76 ms │    no change │
│ QQuery 33 │ 1496.57 ms │                  1488.57 ms │    no change │
│ QQuery 34 │ 1530.44 ms │                  1497.39 ms │    no change │
│ QQuery 35 │  296.48 ms │                   330.52 ms │ 1.11x slower │
│ QQuery 36 │   67.39 ms │                    68.27 ms │    no change │
│ QQuery 37 │   34.83 ms │                    34.54 ms │    no change │
│ QQuery 38 │   41.63 ms │                    40.09 ms │    no change │
│ QQuery 39 │  139.09 ms │                   155.91 ms │ 1.12x slower │
│ QQuery 40 │   14.87 ms │                    14.62 ms │    no change │
│ QQuery 41 │   14.27 ms │                    14.93 ms │    no change │
│ QQuery 42 │   13.88 ms │                    14.14 ms │    no change │
└───────────┴────────────┴─────────────────────────────┴──────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 19466.96ms │
│ Total Time (partition_lookup_experiment)   │ 19636.18ms │
│ Average Time (HEAD)                        │   452.72ms │
│ Average Time (partition_lookup_experiment) │   456.66ms │
│ Queries Faster                             │          0 │
│ Queries Slower                             │          3 │
│ Queries with No Change                     │         40 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.24 / 4.32 ±6.00 / 16.32 ms │          1.25 / 4.43 ±6.15 / 16.72 ms │     no change │
│ QQuery 1  │        11.73 / 11.90 ±0.15 / 12.17 ms │        11.75 / 11.92 ±0.22 / 12.33 ms │     no change │
│ QQuery 2  │        35.91 / 36.15 ±0.16 / 36.39 ms │        35.96 / 36.33 ±0.23 / 36.66 ms │     no change │
│ QQuery 3  │        32.47 / 33.49 ±1.52 / 36.52 ms │        32.05 / 32.55 ±0.45 / 33.27 ms │     no change │
│ QQuery 4  │     243.11 / 248.98 ±4.79 / 256.83 ms │     247.72 / 255.31 ±6.24 / 262.30 ms │     no change │
│ QQuery 5  │     276.41 / 287.66 ±7.19 / 296.96 ms │     281.75 / 286.38 ±2.89 / 290.71 ms │     no change │
│ QQuery 6  │           1.24 / 1.40 ±0.25 / 1.88 ms │           1.25 / 1.44 ±0.25 / 1.92 ms │     no change │
│ QQuery 7  │        12.96 / 14.62 ±2.83 / 20.27 ms │        13.20 / 13.54 ±0.18 / 13.72 ms │ +1.08x faster │
│ QQuery 8  │     336.50 / 345.52 ±6.92 / 353.58 ms │     345.47 / 354.27 ±8.50 / 368.86 ms │     no change │
│ QQuery 9  │    478.83 / 495.45 ±11.76 / 513.35 ms │    482.85 / 495.94 ±10.45 / 508.57 ms │     no change │
│ QQuery 10 │        66.54 / 70.03 ±3.65 / 76.90 ms │        66.56 / 69.22 ±3.58 / 75.75 ms │     no change │
│ QQuery 11 │        75.55 / 76.50 ±0.66 / 77.39 ms │        75.94 / 77.93 ±1.18 / 79.51 ms │     no change │
│ QQuery 12 │     267.07 / 274.73 ±5.67 / 283.77 ms │    280.88 / 294.51 ±15.76 / 324.83 ms │  1.07x slower │
│ QQuery 13 │     376.98 / 385.27 ±6.10 / 394.21 ms │     377.74 / 387.28 ±7.52 / 394.50 ms │     no change │
│ QQuery 14 │     290.69 / 299.42 ±9.10 / 313.93 ms │    293.34 / 302.87 ±10.17 / 320.11 ms │     no change │
│ QQuery 15 │     288.09 / 301.24 ±8.05 / 310.97 ms │    296.53 / 310.71 ±13.14 / 334.44 ms │     no change │
│ QQuery 16 │    629.36 / 647.74 ±14.93 / 667.20 ms │    639.93 / 658.39 ±21.39 / 694.79 ms │     no change │
│ QQuery 17 │    647.60 / 668.05 ±11.24 / 678.66 ms │    650.38 / 669.49 ±16.20 / 697.74 ms │     no change │
│ QQuery 18 │ 1310.83 / 1336.09 ±27.86 / 1387.88 ms │ 1334.44 / 1374.36 ±35.99 / 1430.21 ms │     no change │
│ QQuery 19 │        28.55 / 31.91 ±5.89 / 43.64 ms │        28.51 / 30.28 ±1.00 / 31.41 ms │ +1.05x faster │
│ QQuery 20 │     529.26 / 534.99 ±5.42 / 545.32 ms │    530.05 / 541.57 ±19.99 / 581.48 ms │     no change │
│ QQuery 21 │     519.70 / 526.85 ±5.62 / 535.01 ms │     514.95 / 523.44 ±7.66 / 535.61 ms │     no change │
│ QQuery 22 │  996.72 / 1034.16 ±23.75 / 1069.94 ms │  988.62 / 1007.27 ±16.95 / 1034.70 ms │     no change │
│ QQuery 23 │ 3118.09 / 3184.23 ±51.60 / 3253.28 ms │ 3142.88 / 3169.66 ±20.72 / 3191.75 ms │     no change │
│ QQuery 24 │        41.65 / 48.83 ±6.39 / 57.55 ms │        40.32 / 40.89 ±0.36 / 41.45 ms │ +1.19x faster │
│ QQuery 25 │     106.19 / 113.59 ±8.28 / 125.03 ms │    108.16 / 121.78 ±13.25 / 138.08 ms │  1.07x slower │
│ QQuery 26 │        40.70 / 42.41 ±2.07 / 46.38 ms │        40.84 / 41.51 ±0.50 / 42.17 ms │     no change │
│ QQuery 27 │     520.46 / 531.79 ±7.32 / 538.08 ms │     514.53 / 519.39 ±5.85 / 528.68 ms │     no change │
│ QQuery 28 │ 2915.99 / 2943.02 ±16.99 / 2967.54 ms │ 2973.29 / 2986.73 ±12.93 / 3007.84 ms │     no change │
│ QQuery 29 │        38.88 / 40.24 ±2.18 / 44.58 ms │       38.87 / 53.07 ±13.24 / 74.82 ms │  1.32x slower │
│ QQuery 30 │    321.82 / 331.67 ±10.41 / 349.94 ms │     308.85 / 319.90 ±8.81 / 330.92 ms │     no change │
│ QQuery 31 │     289.34 / 301.14 ±7.94 / 310.41 ms │     281.58 / 290.94 ±8.56 / 304.55 ms │     no change │
│ QQuery 32 │  967.05 / 1023.48 ±37.73 / 1073.52 ms │  996.76 / 1022.84 ±18.78 / 1051.28 ms │     no change │
│ QQuery 33 │ 1496.57 / 1552.06 ±31.16 / 1585.76 ms │ 1488.57 / 1559.47 ±62.55 / 1674.36 ms │     no change │
│ QQuery 34 │ 1530.44 / 1573.28 ±37.27 / 1635.39 ms │ 1497.39 / 1554.83 ±37.23 / 1601.27 ms │     no change │
│ QQuery 35 │    296.48 / 362.95 ±80.93 / 511.23 ms │    330.52 / 391.14 ±88.83 / 564.08 ms │  1.08x slower │
│ QQuery 36 │        67.39 / 71.02 ±4.48 / 79.34 ms │        68.27 / 74.88 ±6.24 / 86.57 ms │  1.05x slower │
│ QQuery 37 │        34.83 / 36.52 ±2.63 / 41.71 ms │        34.54 / 35.96 ±1.03 / 37.40 ms │     no change │
│ QQuery 38 │        41.63 / 48.40 ±7.24 / 61.63 ms │       40.09 / 48.52 ±11.90 / 71.96 ms │     no change │
│ QQuery 39 │    139.09 / 162.85 ±19.89 / 198.95 ms │     155.91 / 164.19 ±5.19 / 171.26 ms │     no change │
│ QQuery 40 │        14.87 / 18.04 ±3.18 / 23.11 ms │        14.62 / 16.23 ±1.84 / 19.75 ms │ +1.11x faster │
│ QQuery 41 │        14.27 / 15.69 ±2.61 / 20.91 ms │       14.93 / 25.73 ±11.67 / 44.78 ms │  1.64x slower │
│ QQuery 42 │        13.88 / 15.89 ±3.55 / 22.99 ms │        14.14 / 14.35 ±0.20 / 14.72 ms │ +1.11x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 20083.52ms │
│ Total Time (partition_lookup_experiment)   │ 20191.46ms │
│ Average Time (HEAD)                        │   467.06ms │
│ Average Time (partition_lookup_experiment) │   469.57ms │
│ Queries Faster                             │          5 │
│ Queries Slower                             │          6 │
│ Queries with No Change                     │         32 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 105.0s
Peak memory 11.9 GiB
Avg memory 4.5 GiB
CPU user 1024.0s
CPU sys 73.2s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 105.0s
Peak memory 11.1 GiB
Avg memory 4.4 GiB
CPU user 1027.6s
CPU sys 74.6s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

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

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark hash_join_semi_anti

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark prepared_hash_join
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                                   partition_lookup_experiment
-----                                                 ----                                   ---------------------------
prepared_hash_join/cold/int64/64/1_consumers          1.01     65.6±0.77µs        ? ?/sec    1.00     64.7±1.34µs        ? ?/sec
prepared_hash_join/cold/int64/64/4_consumers          1.01    133.4±0.63µs        ? ?/sec    1.00    132.3±0.37µs        ? ?/sec
prepared_hash_join/cold/int64/65536/1_consumers       1.00    659.2±1.32µs        ? ?/sec    1.00    658.5±1.58µs        ? ?/sec
prepared_hash_join/cold/int64/65536/4_consumers       1.00    747.2±3.02µs        ? ?/sec    1.01    755.6±5.91µs        ? ?/sec
prepared_hash_join/cold/utf8/64/1_consumers           1.01     85.8±0.53µs        ? ?/sec    1.00     84.5±0.72µs        ? ?/sec
prepared_hash_join/cold/utf8/64/4_consumers           1.02    175.2±1.46µs        ? ?/sec    1.00    171.0±0.73µs        ? ?/sec
prepared_hash_join/cold/utf8/65536/1_consumers        1.02    674.7±1.20µs        ? ?/sec    1.00    663.2±1.49µs        ? ?/sec
prepared_hash_join/cold/utf8/65536/4_consumers        1.01    775.9±1.33µs        ? ?/sec    1.00    770.9±7.40µs        ? ?/sec
prepared_hash_join/rebuild/int64/64/1_consumers       1.03     59.1±0.78µs        ? ?/sec    1.00     57.3±0.51µs        ? ?/sec
prepared_hash_join/rebuild/int64/64/4_consumers       1.00    121.6±1.64µs        ? ?/sec    1.03    125.5±1.18µs        ? ?/sec
prepared_hash_join/rebuild/int64/65536/1_consumers    1.00    567.8±1.43µs        ? ?/sec    1.03   583.0±33.26µs        ? ?/sec
prepared_hash_join/rebuild/int64/65536/4_consumers    1.01  1150.1±14.92µs        ? ?/sec    1.00  1143.6±35.30µs        ? ?/sec
prepared_hash_join/rebuild/utf8/64/1_consumers        1.03     77.9±0.96µs        ? ?/sec    1.00     75.5±0.37µs        ? ?/sec
prepared_hash_join/rebuild/utf8/64/4_consumers        1.01    159.6±1.02µs        ? ?/sec    1.00    158.4±1.14µs        ? ?/sec
prepared_hash_join/rebuild/utf8/65536/1_consumers     1.03    659.2±1.10µs        ? ?/sec    1.00    641.9±1.71µs        ? ?/sec
prepared_hash_join/rebuild/utf8/65536/4_consumers     1.00   1301.3±9.88µs        ? ?/sec    1.00   1301.0±6.99µs        ? ?/sec
prepared_hash_join/warm/int64/64/1_consumers          1.05     58.0±0.71µs        ? ?/sec    1.00     55.5±0.47µs        ? ?/sec
prepared_hash_join/warm/int64/64/4_consumers          1.03    125.0±1.25µs        ? ?/sec    1.00    121.4±0.34µs        ? ?/sec
prepared_hash_join/warm/int64/65536/1_consumers       1.06     61.3±1.43µs        ? ?/sec    1.00     57.6±0.49µs        ? ?/sec
prepared_hash_join/warm/int64/65536/4_consumers       1.03    132.4±0.85µs        ? ?/sec    1.00    128.2±0.65µs        ? ?/sec
prepared_hash_join/warm/utf8/64/1_consumers           1.01     77.3±0.44µs        ? ?/sec    1.00     76.8±0.54µs        ? ?/sec
prepared_hash_join/warm/utf8/64/4_consumers           1.02    166.0±1.52µs        ? ?/sec    1.00    162.6±0.80µs        ? ?/sec
prepared_hash_join/warm/utf8/65536/1_consumers        1.05     83.1±1.14µs        ? ?/sec    1.00     79.2±0.81µs        ? ?/sec
prepared_hash_join/warm/utf8/65536/4_consumers        1.03    175.7±2.84µs        ? ?/sec    1.00    170.4±0.78µs        ? ?/sec

Resource Usage

prepared_hash_join — base (merge-base)

Metric Value
Wall time 355.1s
Peak memory 57.2 MiB
Avg memory 9.3 MiB
CPU user 141.6s
CPU sys 8.8s
Peak spill 0 B

prepared_hash_join — branch

Metric Value
Wall time 350.1s
Peak memory 60.1 MiB
Avg memory 9.5 MiB
CPU user 140.8s
CPU sys 8.6s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │  41.85 ms │                    41.44 ms │     no change │
│ QQuery 2  │  18.96 ms │                    18.98 ms │     no change │
│ QQuery 3  │  31.16 ms │                    31.56 ms │     no change │
│ QQuery 4  │  25.16 ms │                    25.50 ms │     no change │
│ QQuery 5  │  42.97 ms │                    43.63 ms │     no change │
│ QQuery 6  │  22.41 ms │                    22.62 ms │     no change │
│ QQuery 7  │  44.61 ms │                    44.04 ms │     no change │
│ QQuery 8  │  46.54 ms │                    46.47 ms │     no change │
│ QQuery 9  │  63.54 ms │                    62.33 ms │     no change │
│ QQuery 10 │  46.78 ms │                    46.20 ms │     no change │
│ QQuery 11 │  14.87 ms │                    15.18 ms │     no change │
│ QQuery 12 │  40.35 ms │                    34.35 ms │ +1.17x faster │
│ QQuery 13 │  39.81 ms │                    40.57 ms │     no change │
│ QQuery 14 │  26.56 ms │                    26.69 ms │     no change │
│ QQuery 15 │  40.69 ms │                    40.02 ms │     no change │
│ QQuery 16 │  15.53 ms │                    15.70 ms │     no change │
│ QQuery 17 │  71.86 ms │                    44.79 ms │ +1.60x faster │
│ QQuery 18 │ 141.28 ms │                   111.12 ms │ +1.27x faster │
│ QQuery 19 │  32.62 ms │                    32.05 ms │     no change │
│ QQuery 20 │  30.41 ms │                    29.97 ms │     no change │
│ QQuery 21 │  65.96 ms │                    65.76 ms │     no change │
│ QQuery 22 │  15.81 ms │                    16.23 ms │     no change │
└───────────┴───────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 919.74ms │
│ Total Time (partition_lookup_experiment)   │ 855.19ms │
│ Average Time (HEAD)                        │  41.81ms │
│ Average Time (partition_lookup_experiment) │  38.87ms │
│ Queries Faster                             │        3 │
│ Queries Slower                             │        0 │
│ Queries with No Change                     │       19 │
│ Queries with Failure                       │        0 │
└────────────────────────────────────────────┴──────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                              HEAD ┃       partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    41.85 / 42.88 ±1.15 / 45.03 ms │    41.44 / 42.19 ±1.23 / 44.64 ms │     no change │
│ QQuery 2  │    18.96 / 19.52 ±0.53 / 20.32 ms │    18.98 / 19.33 ±0.33 / 19.85 ms │     no change │
│ QQuery 3  │    31.16 / 31.92 ±0.77 / 33.09 ms │    31.56 / 31.81 ±0.24 / 32.16 ms │     no change │
│ QQuery 4  │    25.16 / 25.78 ±0.86 / 27.48 ms │    25.50 / 25.77 ±0.32 / 26.29 ms │     no change │
│ QQuery 5  │    42.97 / 43.08 ±0.13 / 43.28 ms │    43.63 / 44.42 ±0.99 / 46.35 ms │     no change │
│ QQuery 6  │    22.41 / 23.18 ±0.73 / 24.53 ms │    22.62 / 23.35 ±0.46 / 24.01 ms │     no change │
│ QQuery 7  │    44.61 / 45.15 ±0.39 / 45.77 ms │    44.04 / 44.26 ±0.19 / 44.59 ms │     no change │
│ QQuery 8  │    46.54 / 47.27 ±1.08 / 49.39 ms │    46.47 / 46.89 ±0.49 / 47.60 ms │     no change │
│ QQuery 9  │    63.54 / 65.74 ±1.32 / 67.31 ms │    62.33 / 63.11 ±0.64 / 64.19 ms │     no change │
│ QQuery 10 │    46.78 / 47.36 ±0.37 / 47.73 ms │    46.20 / 46.88 ±0.56 / 47.76 ms │     no change │
│ QQuery 11 │    14.87 / 15.28 ±0.40 / 16.06 ms │    15.18 / 16.45 ±1.76 / 19.90 ms │  1.08x slower │
│ QQuery 12 │    40.35 / 40.62 ±0.19 / 40.90 ms │    34.35 / 35.95 ±1.17 / 37.16 ms │ +1.13x faster │
│ QQuery 13 │    39.81 / 40.65 ±0.64 / 41.73 ms │    40.57 / 41.07 ±0.40 / 41.67 ms │     no change │
│ QQuery 14 │    26.56 / 27.31 ±0.68 / 28.50 ms │    26.69 / 27.03 ±0.25 / 27.42 ms │     no change │
│ QQuery 15 │    40.69 / 42.71 ±1.50 / 44.31 ms │    40.02 / 40.52 ±0.40 / 41.23 ms │ +1.05x faster │
│ QQuery 16 │    15.53 / 15.83 ±0.18 / 16.07 ms │    15.70 / 15.89 ±0.11 / 16.05 ms │     no change │
│ QQuery 17 │    71.86 / 73.31 ±1.27 / 75.50 ms │    44.79 / 46.14 ±1.28 / 48.09 ms │ +1.59x faster │
│ QQuery 18 │ 141.28 / 149.51 ±4.45 / 153.99 ms │ 111.12 / 115.66 ±5.86 / 127.10 ms │ +1.29x faster │
│ QQuery 19 │    32.62 / 34.09 ±2.15 / 38.34 ms │    32.05 / 32.56 ±0.37 / 32.99 ms │     no change │
│ QQuery 20 │    30.41 / 30.70 ±0.25 / 31.15 ms │    29.97 / 30.37 ±0.28 / 30.69 ms │     no change │
│ QQuery 21 │    65.96 / 66.85 ±0.81 / 68.12 ms │    65.76 / 67.87 ±1.82 / 70.26 ms │     no change │
│ QQuery 22 │    15.81 / 16.07 ±0.15 / 16.23 ms │    16.23 / 16.75 ±0.73 / 18.21 ms │     no change │
└───────────┴───────────────────────────────────┴───────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 944.82ms │
│ Total Time (partition_lookup_experiment)   │ 874.27ms │
│ Average Time (HEAD)                        │  42.95ms │
│ Average Time (partition_lookup_experiment) │  39.74ms │
│ Queries Faster                             │        4 │
│ Queries Slower                             │        1 │
│ Queries with No Change                     │       17 │
│ Queries with Failure                       │        0 │
└────────────────────────────────────────────┴──────────┘

Resource Usage

tpch — base (merge-base)

Metric Value
Wall time 5.0s
Peak memory 2.2 GiB
Avg memory 921.2 MiB
CPU user 24.7s
CPU sys 1.5s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 2.2 GiB
Avg memory 860.0 MiB
CPU user 23.3s
CPU sys 1.9s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │   5.01 ms │                     4.70 ms │ +1.07x faster │
│ QQuery 2  │  45.17 ms │                    43.50 ms │     no change │
│ QQuery 3  │  26.42 ms │                    26.66 ms │     no change │
│ QQuery 4  │ 471.40 ms │                   476.01 ms │     no change │
│ QQuery 5  │  45.70 ms │                    46.31 ms │     no change │
│ QQuery 6  │  36.54 ms │                    36.50 ms │     no change │
│ QQuery 7  │  82.61 ms │                    82.90 ms │     no change │
│ QQuery 8  │  14.86 ms │                    14.73 ms │     no change │
│ QQuery 9  │ 113.03 ms │                   111.94 ms │     no change │
│ QQuery 10 │  72.51 ms │                    71.88 ms │     no change │
│ QQuery 11 │ 255.72 ms │                   257.06 ms │     no change │
│ QQuery 12 │  27.70 ms │                    27.85 ms │     no change │
│ QQuery 13 │ 109.22 ms │                   108.75 ms │     no change │
│ QQuery 14 │ 421.63 ms │                   404.18 ms │     no change │
│ QQuery 15 │  23.68 ms │                    23.38 ms │     no change │
│ QQuery 16 │   5.69 ms │                     5.58 ms │     no change │
│ QQuery 17 │ 113.74 ms │                    53.22 ms │ +2.14x faster │
│ QQuery 18 │ 162.36 ms │                   113.75 ms │ +1.43x faster │
│ QQuery 19 │  38.78 ms │                    39.16 ms │     no change │
│ QQuery 20 │  31.09 ms │                    32.63 ms │     no change │
│ QQuery 21 │  19.03 ms │                    19.03 ms │     no change │
│ QQuery 22 │  62.31 ms │                    60.93 ms │     no change │
│ QQuery 23 │ 370.04 ms │                   370.59 ms │     no change │
│ QQuery 24 │ 162.57 ms │                   163.40 ms │     no change │
│ QQuery 25 │ 115.29 ms │                    52.39 ms │ +2.20x faster │
│ QQuery 26 │  64.09 ms │                    63.42 ms │     no change │
│ QQuery 27 │   5.57 ms │                     5.77 ms │     no change │
│ QQuery 28 │  73.85 ms │                    73.84 ms │     no change │
│ QQuery 29 │ 144.57 ms │                    77.58 ms │ +1.86x faster │
│ QQuery 30 │  31.95 ms │                    31.89 ms │     no change │
│ QQuery 31 │ 124.11 ms │                   117.87 ms │ +1.05x faster │
│ QQuery 32 │  21.22 ms │                    21.43 ms │     no change │
│ QQuery 33 │  37.56 ms │                    37.53 ms │     no change │
│ QQuery 34 │  10.21 ms │                    10.60 ms │     no change │
│ QQuery 35 │  82.29 ms │                    83.59 ms │     no change │
│ QQuery 36 │   5.26 ms │                     5.29 ms │     no change │
│ QQuery 37 │   6.75 ms │                     6.86 ms │     no change │
│ QQuery 38 │  75.67 ms │                    76.33 ms │     no change │
│ QQuery 39 │  70.39 ms │                    70.08 ms │     no change │
│ QQuery 40 │  19.56 ms │                    20.14 ms │     no change │
│ QQuery 41 │  12.75 ms │                    12.98 ms │     no change │
│ QQuery 42 │  23.36 ms │                    24.01 ms │     no change │
│ QQuery 43 │   4.21 ms │                     4.12 ms │     no change │
│ QQuery 44 │   8.09 ms │                     8.08 ms │     no change │
│ QQuery 45 │  26.15 ms │                    26.34 ms │     no change │
│ QQuery 46 │  11.80 ms │                    11.98 ms │     no change │
│ QQuery 47 │ 220.51 ms │                   219.57 ms │     no change │
│ QQuery 48 │ 119.41 ms │                   115.59 ms │     no change │
│ QQuery 49 │  85.33 ms │                    85.56 ms │     no change │
│ QQuery 50 │ 122.63 ms │                    60.56 ms │ +2.02x faster │
│ QQuery 51 │ 102.57 ms │                   101.73 ms │     no change │
│ QQuery 52 │  24.20 ms │                    24.09 ms │     no change │
│ QQuery 53 │  29.96 ms │                    30.06 ms │     no change │
│ QQuery 54 │  29.02 ms │                    29.29 ms │     no change │
│ QQuery 55 │  23.24 ms │                    23.42 ms │     no change │
│ QQuery 56 │  34.54 ms │                    35.13 ms │     no change │
│ QQuery 57 │ 133.93 ms │                   134.49 ms │     no change │
│ QQuery 58 │  72.25 ms │                    71.01 ms │     no change │
│ QQuery 59 │  78.76 ms │                    77.92 ms │     no change │
│ QQuery 60 │  39.27 ms │                    39.09 ms │     no change │
│ QQuery 61 │   8.39 ms │                     8.42 ms │     no change │
│ QQuery 62 │  41.75 ms │                    42.41 ms │     no change │
│ QQuery 63 │  30.06 ms │                    30.40 ms │     no change │
│ QQuery 64 │ 507.26 ms │                   325.47 ms │ +1.56x faster │
│ QQuery 65 │ 160.99 ms │                    95.07 ms │ +1.69x faster │
│ QQuery 66 │  60.61 ms │                    60.09 ms │     no change │
│ QQuery 67 │ 257.75 ms │                   262.01 ms │     no change │
│ QQuery 68 │  11.75 ms │                    11.96 ms │     no change │
│ QQuery 69 │  70.30 ms │                    69.55 ms │     no change │
│ QQuery 70 │ 117.69 ms │                   118.34 ms │     no change │
│ QQuery 71 │  32.64 ms │                    32.41 ms │     no change │
│ QQuery 72 │ 170.26 ms │                   133.81 ms │ +1.27x faster │
│ QQuery 73 │  10.05 ms │                    10.31 ms │     no change │
│ QQuery 74 │ 172.24 ms │                   174.52 ms │     no change │
│ QQuery 75 │ 177.52 ms │                   151.69 ms │ +1.17x faster │
│ QQuery 76 │  39.93 ms │                    39.83 ms │     no change │
│ QQuery 77 │  61.02 ms │                    60.88 ms │     no change │
│ QQuery 78 │ 114.97 ms │                   114.95 ms │     no change │
│ QQuery 79 │  67.25 ms │                    66.84 ms │     no change │
│ QQuery 80 │  74.30 ms │                    74.20 ms │     no change │
│ QQuery 81 │  26.65 ms │                    26.43 ms │     no change │
│ QQuery 82 │  30.94 ms │                    30.90 ms │     no change │
│ QQuery 83 │  27.91 ms │                    28.56 ms │     no change │
│ QQuery 84 │  29.98 ms │                    30.19 ms │     no change │
│ QQuery 85 │ 159.72 ms │                   114.10 ms │ +1.40x faster │
│ QQuery 86 │  29.72 ms │                    29.82 ms │     no change │
│ QQuery 87 │  77.25 ms │                    77.22 ms │     no change │
│ QQuery 88 │  64.65 ms │                    62.10 ms │     no change │
│ QQuery 89 │  42.58 ms │                    42.11 ms │     no change │
│ QQuery 90 │  17.55 ms │                    17.96 ms │     no change │
│ QQuery 91 │  43.00 ms │                    43.54 ms │     no change │
│ QQuery 92 │  29.66 ms │                    30.35 ms │     no change │
│ QQuery 93 │  48.93 ms │                    48.87 ms │     no change │
│ QQuery 94 │  36.62 ms │                    35.77 ms │     no change │
│ QQuery 95 │  93.30 ms │                    70.24 ms │ +1.33x faster │
│ QQuery 96 │  25.96 ms │                    25.98 ms │     no change │
│ QQuery 97 │  52.31 ms │                    53.11 ms │     no change │
│ QQuery 98 │  38.22 ms │                    38.27 ms │     no change │
│ QQuery 99 │  58.68 ms │                    58.97 ms │     no change │
└───────────┴───────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 7927.52ms │
│ Total Time (partition_lookup_experiment)   │ 7231.94ms │
│ Average Time (HEAD)                        │   80.08ms │
│ Average Time (partition_lookup_experiment) │   73.05ms │
│ Queries Faster                             │        13 │
│ Queries Slower                             │         0 │
│ Queries with No Change                     │        86 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                               HEAD ┃        partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │        5.01 / 5.60 ±1.09 / 7.78 ms │        4.70 / 5.36 ±1.13 / 7.60 ms │     no change │
│ QQuery 2  │     45.17 / 45.65 ±0.60 / 46.79 ms │     43.50 / 44.14 ±0.39 / 44.63 ms │     no change │
│ QQuery 3  │     26.42 / 26.68 ±0.23 / 27.07 ms │     26.66 / 26.80 ±0.14 / 27.07 ms │     no change │
│ QQuery 4  │  471.40 / 474.03 ±2.41 / 477.94 ms │  476.01 / 480.52 ±2.96 / 484.21 ms │     no change │
│ QQuery 5  │     45.70 / 46.13 ±0.37 / 46.72 ms │     46.31 / 47.31 ±1.70 / 50.70 ms │     no change │
│ QQuery 6  │     36.54 / 38.78 ±3.16 / 45.03 ms │     36.50 / 36.80 ±0.30 / 37.34 ms │ +1.05x faster │
│ QQuery 7  │     82.61 / 83.97 ±1.52 / 86.89 ms │     82.90 / 83.62 ±0.82 / 84.81 ms │     no change │
│ QQuery 8  │     14.86 / 15.09 ±0.19 / 15.32 ms │     14.73 / 14.88 ±0.10 / 15.01 ms │     no change │
│ QQuery 9  │  113.03 / 117.64 ±2.75 / 121.57 ms │  111.94 / 115.71 ±2.77 / 118.52 ms │     no change │
│ QQuery 10 │     72.51 / 72.95 ±0.25 / 73.24 ms │     71.88 / 72.74 ±0.66 / 73.87 ms │     no change │
│ QQuery 11 │  255.72 / 257.55 ±1.25 / 259.27 ms │  257.06 / 259.68 ±1.81 / 261.73 ms │     no change │
│ QQuery 12 │     27.70 / 28.87 ±1.59 / 31.95 ms │     27.85 / 30.52 ±3.29 / 36.98 ms │  1.06x slower │
│ QQuery 13 │  109.22 / 111.10 ±2.11 / 115.16 ms │  108.75 / 110.49 ±2.83 / 116.13 ms │     no change │
│ QQuery 14 │  421.63 / 423.13 ±1.35 / 425.60 ms │  404.18 / 409.66 ±4.87 / 415.37 ms │     no change │
│ QQuery 15 │     23.68 / 26.16 ±4.44 / 35.03 ms │     23.38 / 23.74 ±0.27 / 24.18 ms │ +1.10x faster │
│ QQuery 16 │        5.69 / 5.88 ±0.33 / 6.53 ms │        5.58 / 5.74 ±0.26 / 6.27 ms │     no change │
│ QQuery 17 │  113.74 / 115.29 ±1.18 / 116.80 ms │     53.22 / 56.68 ±3.29 / 62.49 ms │ +2.03x faster │
│ QQuery 18 │  162.36 / 168.05 ±4.21 / 175.11 ms │  113.75 / 115.36 ±1.41 / 117.91 ms │ +1.46x faster │
│ QQuery 19 │     38.78 / 39.53 ±0.78 / 41.02 ms │     39.16 / 39.42 ±0.35 / 40.09 ms │     no change │
│ QQuery 20 │     31.09 / 31.45 ±0.60 / 32.65 ms │     32.63 / 36.39 ±3.25 / 40.88 ms │  1.16x slower │
│ QQuery 21 │     19.03 / 19.15 ±0.11 / 19.32 ms │     19.03 / 19.44 ±0.44 / 20.28 ms │     no change │
│ QQuery 22 │     62.31 / 63.51 ±0.96 / 65.02 ms │     60.93 / 62.32 ±1.49 / 65.13 ms │     no change │
│ QQuery 23 │  370.04 / 374.82 ±3.09 / 379.50 ms │  370.59 / 375.37 ±3.91 / 380.35 ms │     no change │
│ QQuery 24 │  162.57 / 164.95 ±1.81 / 167.28 ms │  163.40 / 168.92 ±6.22 / 180.65 ms │     no change │
│ QQuery 25 │  115.29 / 117.68 ±3.79 / 125.23 ms │     52.39 / 52.57 ±0.14 / 52.78 ms │ +2.24x faster │
│ QQuery 26 │     64.09 / 64.64 ±0.77 / 66.14 ms │     63.42 / 64.44 ±1.15 / 66.59 ms │     no change │
│ QQuery 27 │        5.57 / 6.43 ±1.07 / 8.53 ms │        5.77 / 5.96 ±0.09 / 6.03 ms │ +1.08x faster │
│ QQuery 28 │     73.85 / 76.70 ±2.84 / 81.38 ms │     73.84 / 74.85 ±0.59 / 75.53 ms │     no change │
│ QQuery 29 │  144.57 / 145.13 ±0.32 / 145.50 ms │     77.58 / 78.22 ±0.41 / 78.72 ms │ +1.86x faster │
│ QQuery 30 │     31.95 / 32.98 ±1.57 / 36.11 ms │     31.89 / 32.21 ±0.30 / 32.73 ms │     no change │
│ QQuery 31 │  124.11 / 125.53 ±2.05 / 129.58 ms │  117.87 / 122.44 ±4.02 / 127.96 ms │     no change │
│ QQuery 32 │     21.22 / 21.76 ±0.35 / 22.31 ms │     21.43 / 22.06 ±0.55 / 22.94 ms │     no change │
│ QQuery 33 │     37.56 / 38.99 ±1.76 / 42.38 ms │     37.53 / 37.69 ±0.14 / 37.89 ms │     no change │
│ QQuery 34 │     10.21 / 10.60 ±0.47 / 11.46 ms │     10.60 / 10.74 ±0.13 / 10.90 ms │     no change │
│ QQuery 35 │     82.29 / 83.52 ±1.35 / 85.82 ms │     83.59 / 85.16 ±1.71 / 87.72 ms │     no change │
│ QQuery 36 │        5.26 / 5.43 ±0.25 / 5.92 ms │        5.29 / 5.44 ±0.25 / 5.95 ms │     no change │
│ QQuery 37 │        6.75 / 6.85 ±0.06 / 6.92 ms │        6.86 / 6.98 ±0.10 / 7.15 ms │     no change │
│ QQuery 38 │     75.67 / 77.98 ±3.13 / 84.13 ms │     76.33 / 77.25 ±0.74 / 78.34 ms │     no change │
│ QQuery 39 │     70.39 / 71.14 ±0.49 / 71.68 ms │     70.08 / 70.56 ±0.45 / 71.39 ms │     no change │
│ QQuery 40 │     19.56 / 19.91 ±0.23 / 20.27 ms │     20.14 / 23.37 ±3.50 / 29.68 ms │  1.17x slower │
│ QQuery 41 │     12.75 / 12.95 ±0.16 / 13.23 ms │     12.98 / 13.25 ±0.26 / 13.73 ms │     no change │
│ QQuery 42 │     23.36 / 23.93 ±0.37 / 24.35 ms │     24.01 / 24.85 ±1.05 / 26.87 ms │     no change │
│ QQuery 43 │        4.21 / 4.35 ±0.22 / 4.78 ms │        4.12 / 4.26 ±0.26 / 4.78 ms │     no change │
│ QQuery 44 │        8.09 / 8.31 ±0.17 / 8.59 ms │        8.08 / 8.20 ±0.15 / 8.48 ms │     no change │
│ QQuery 45 │     26.15 / 26.32 ±0.10 / 26.44 ms │     26.34 / 26.83 ±0.32 / 27.35 ms │     no change │
│ QQuery 46 │     11.80 / 12.02 ±0.13 / 12.15 ms │     11.98 / 12.16 ±0.13 / 12.36 ms │     no change │
│ QQuery 47 │  220.51 / 225.84 ±3.37 / 229.55 ms │  219.57 / 227.82 ±6.98 / 238.28 ms │     no change │
│ QQuery 48 │  119.41 / 123.03 ±2.36 / 125.54 ms │  115.59 / 119.86 ±3.98 / 126.61 ms │     no change │
│ QQuery 49 │    85.33 / 91.22 ±9.85 / 110.87 ms │     85.56 / 86.19 ±0.67 / 87.46 ms │ +1.06x faster │
│ QQuery 50 │  122.63 / 123.27 ±0.36 / 123.60 ms │     60.56 / 60.98 ±0.32 / 61.44 ms │ +2.02x faster │
│ QQuery 51 │  102.57 / 106.96 ±4.24 / 113.96 ms │ 101.73 / 109.73 ±11.16 / 131.67 ms │     no change │
│ QQuery 52 │     24.20 / 24.31 ±0.14 / 24.59 ms │     24.09 / 24.55 ±0.55 / 25.50 ms │     no change │
│ QQuery 53 │     29.96 / 30.31 ±0.23 / 30.63 ms │     30.06 / 30.33 ±0.21 / 30.69 ms │     no change │
│ QQuery 54 │     29.02 / 29.23 ±0.26 / 29.73 ms │     29.29 / 29.94 ±0.45 / 30.38 ms │     no change │
│ QQuery 55 │     23.24 / 23.42 ±0.13 / 23.63 ms │     23.42 / 25.61 ±3.54 / 32.59 ms │  1.09x slower │
│ QQuery 56 │     34.54 / 34.83 ±0.16 / 35.02 ms │     35.13 / 35.48 ±0.26 / 35.83 ms │     no change │
│ QQuery 57 │  133.93 / 136.04 ±2.60 / 141.10 ms │  134.49 / 135.50 ±0.91 / 137.08 ms │     no change │
│ QQuery 58 │     72.25 / 72.92 ±0.53 / 73.67 ms │     71.01 / 74.15 ±4.20 / 82.47 ms │     no change │
│ QQuery 59 │     78.76 / 82.11 ±3.58 / 86.82 ms │     77.92 / 78.78 ±0.64 / 79.82 ms │     no change │
│ QQuery 60 │     39.27 / 39.92 ±0.59 / 40.87 ms │     39.09 / 39.43 ±0.24 / 39.85 ms │     no change │
│ QQuery 61 │        8.39 / 8.57 ±0.21 / 8.98 ms │        8.42 / 8.60 ±0.22 / 9.03 ms │     no change │
│ QQuery 62 │     41.75 / 42.00 ±0.23 / 42.30 ms │     42.41 / 45.64 ±3.72 / 52.42 ms │  1.09x slower │
│ QQuery 63 │     30.06 / 30.33 ±0.35 / 30.98 ms │     30.40 / 30.99 ±0.48 / 31.76 ms │     no change │
│ QQuery 64 │ 507.26 / 521.35 ±10.09 / 531.02 ms │  325.47 / 328.05 ±3.21 / 333.86 ms │ +1.59x faster │
│ QQuery 65 │  160.99 / 164.56 ±2.81 / 169.21 ms │    95.07 / 99.05 ±5.06 / 108.72 ms │ +1.66x faster │
│ QQuery 66 │     60.61 / 60.85 ±0.20 / 61.12 ms │     60.09 / 60.26 ±0.11 / 60.42 ms │     no change │
│ QQuery 67 │  257.75 / 262.12 ±3.52 / 266.08 ms │ 262.01 / 277.41 ±14.76 / 305.56 ms │  1.06x slower │
│ QQuery 68 │     11.75 / 11.96 ±0.18 / 12.30 ms │     11.96 / 12.08 ±0.13 / 12.30 ms │     no change │
│ QQuery 69 │     70.30 / 74.46 ±5.85 / 85.86 ms │     69.55 / 70.27 ±0.98 / 72.21 ms │ +1.06x faster │
│ QQuery 70 │  117.69 / 118.68 ±0.80 / 119.87 ms │ 118.34 / 125.38 ±11.16 / 147.49 ms │  1.06x slower │
│ QQuery 71 │     32.64 / 38.21 ±8.39 / 54.64 ms │     32.41 / 32.85 ±0.41 / 33.50 ms │ +1.16x faster │
│ QQuery 72 │  170.26 / 173.37 ±4.17 / 181.49 ms │  133.81 / 135.78 ±2.39 / 140.19 ms │ +1.28x faster │
│ QQuery 73 │     10.05 / 14.95 ±8.95 / 32.82 ms │     10.31 / 16.80 ±9.76 / 35.76 ms │  1.12x slower │
│ QQuery 74 │  172.24 / 177.88 ±6.97 / 191.59 ms │  174.52 / 179.01 ±4.98 / 188.21 ms │     no change │
│ QQuery 75 │  177.52 / 183.23 ±8.74 / 200.50 ms │  151.69 / 155.00 ±5.48 / 165.91 ms │ +1.18x faster │
│ QQuery 76 │     39.93 / 42.80 ±5.02 / 52.83 ms │     39.83 / 40.39 ±0.34 / 40.81 ms │ +1.06x faster │
│ QQuery 77 │     61.02 / 62.13 ±0.85 / 62.94 ms │     60.88 / 65.22 ±6.10 / 77.18 ms │     no change │
│ QQuery 78 │  114.97 / 117.05 ±2.30 / 121.52 ms │  114.95 / 117.66 ±4.18 / 125.85 ms │     no change │
│ QQuery 79 │     67.25 / 70.70 ±2.85 / 75.59 ms │     66.84 / 70.52 ±4.91 / 80.17 ms │     no change │
│ QQuery 80 │     74.30 / 75.20 ±1.29 / 77.73 ms │     74.20 / 75.16 ±0.76 / 76.17 ms │     no change │
│ QQuery 81 │     26.65 / 26.78 ±0.10 / 26.92 ms │     26.43 / 26.60 ±0.14 / 26.82 ms │     no change │
│ QQuery 82 │     30.94 / 31.15 ±0.13 / 31.31 ms │     30.90 / 31.25 ±0.28 / 31.66 ms │     no change │
│ QQuery 83 │     27.91 / 33.03 ±6.67 / 45.67 ms │     28.56 / 29.51 ±0.65 / 30.22 ms │ +1.12x faster │
│ QQuery 84 │     29.98 / 31.15 ±0.86 / 32.45 ms │     30.19 / 33.59 ±6.48 / 46.56 ms │  1.08x slower │
│ QQuery 85 │  159.72 / 163.76 ±3.40 / 167.79 ms │  114.10 / 116.77 ±3.92 / 124.49 ms │ +1.40x faster │
│ QQuery 86 │     29.72 / 30.92 ±0.68 / 31.81 ms │     29.82 / 30.20 ±0.25 / 30.61 ms │     no change │
│ QQuery 87 │     77.25 / 78.35 ±1.29 / 80.71 ms │     77.22 / 82.52 ±5.95 / 93.79 ms │  1.05x slower │
│ QQuery 88 │     64.65 / 68.11 ±3.40 / 72.30 ms │     62.10 / 68.11 ±4.12 / 72.25 ms │     no change │
│ QQuery 89 │     42.58 / 46.92 ±4.93 / 54.33 ms │     42.11 / 42.39 ±0.18 / 42.60 ms │ +1.11x faster │
│ QQuery 90 │     17.55 / 18.03 ±0.39 / 18.66 ms │     17.96 / 18.01 ±0.07 / 18.14 ms │     no change │
│ QQuery 91 │     43.00 / 43.55 ±0.49 / 44.31 ms │     43.54 / 46.75 ±3.02 / 51.65 ms │  1.07x slower │
│ QQuery 92 │     29.66 / 30.01 ±0.39 / 30.67 ms │     30.35 / 30.97 ±0.38 / 31.45 ms │     no change │
│ QQuery 93 │     48.93 / 49.27 ±0.22 / 49.55 ms │     48.87 / 49.00 ±0.15 / 49.26 ms │     no change │
│ QQuery 94 │     36.62 / 40.46 ±4.55 / 47.39 ms │     35.77 / 36.60 ±0.65 / 37.78 ms │ +1.11x faster │
│ QQuery 95 │     93.30 / 94.87 ±1.17 / 96.82 ms │     70.24 / 73.72 ±3.81 / 80.79 ms │ +1.29x faster │
│ QQuery 96 │     25.96 / 26.38 ±0.43 / 27.19 ms │     25.98 / 26.30 ±0.27 / 26.79 ms │     no change │
│ QQuery 97 │     52.31 / 53.81 ±1.04 / 54.69 ms │     53.11 / 54.52 ±1.19 / 56.52 ms │     no change │
│ QQuery 98 │     38.22 / 42.85 ±3.45 / 46.67 ms │     38.27 / 39.67 ±1.47 / 42.45 ms │ +1.08x faster │
│ QQuery 99 │     58.68 / 59.18 ±0.44 / 59.90 ms │     58.97 / 60.18 ±2.00 / 64.18 ms │     no change │
└───────────┴────────────────────────────────────┴────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8111.52ms │
│ Total Time (partition_lookup_experiment)   │ 7422.25ms │
│ Average Time (HEAD)                        │   81.93ms │
│ Average Time (partition_lookup_experiment) │   74.97ms │
│ Queries Faster                             │        22 │
│ Queries Slower                             │        11 │
│ Queries with No Change                     │        66 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 45.0s
Peak memory 1.9 GiB
Avg memory 1.3 GiB
CPU user 114.6s
CPU sys 5.7s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 40.0s
Peak memory 1.8 GiB
Avg memory 1.3 GiB
CPU user 104.5s
CPU sys 5.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

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

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

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

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpch10
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "true"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpch10
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"
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 partition_lookup_experiment
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃      HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 335.48 ms │                   331.40 ms │     no change │
│ QQuery 2  │  93.09 ms │                    91.30 ms │     no change │
│ QQuery 3  │ 218.40 ms │                   226.56 ms │     no change │
│ QQuery 4  │ 118.89 ms │                   113.18 ms │     no change │
│ QQuery 5  │ 360.71 ms │                   346.71 ms │     no change │
│ QQuery 6  │ 102.24 ms │                   100.82 ms │     no change │
│ QQuery 7  │ 475.82 ms │                   442.98 ms │ +1.07x faster │
│ QQuery 8  │ 364.34 ms │                   360.73 ms │     no change │
│ QQuery 9  │ 545.32 ms │                   523.25 ms │     no change │
│ QQuery 10 │ 297.59 ms │                   287.73 ms │     no change │
│ QQuery 11 │  60.55 ms │                    60.53 ms │     no change │
│ QQuery 12 │ 120.46 ms │                   119.86 ms │     no change │
│ QQuery 13 │ 298.19 ms │                   311.87 ms │     no change │
│ QQuery 14 │ 172.09 ms │                   171.77 ms │     no change │
│ QQuery 15 │ 302.07 ms │                   304.39 ms │     no change │
│ QQuery 16 │  64.10 ms │                    62.46 ms │     no change │
│ QQuery 17 │ 581.84 ms │                   595.15 ms │     no change │
│ QQuery 18 │ 943.55 ms │                   928.09 ms │     no change │
│ QQuery 19 │ 242.76 ms │                   238.76 ms │     no change │
│ QQuery 20 │ 262.27 ms │                   263.94 ms │     no change │
│ QQuery 21 │ 663.42 ms │                   664.89 ms │     no change │
│ QQuery 22 │  59.70 ms │                    64.77 ms │  1.08x slower │
└───────────┴───────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 6682.87ms │
│ Total Time (partition_lookup_experiment)   │ 6611.14ms │
│ Average Time (HEAD)                        │  303.77ms │
│ Average Time (partition_lookup_experiment) │  300.51ms │
│ Queries Faster                             │         1 │
│ Queries Slower                             │         1 │
│ Queries with No Change                     │        20 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                HEAD ┃         partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │   335.48 / 341.77 ±4.08 / 348.03 ms │   331.40 / 332.63 ±1.02 / 334.17 ms │     no change │
│ QQuery 2  │      93.09 / 94.90 ±1.22 / 96.26 ms │      91.30 / 92.64 ±1.03 / 94.04 ms │     no change │
│ QQuery 3  │   218.40 / 224.90 ±3.30 / 227.30 ms │   226.56 / 230.43 ±3.22 / 234.28 ms │     no change │
│ QQuery 4  │   118.89 / 122.37 ±2.53 / 125.29 ms │   113.18 / 117.33 ±3.52 / 123.17 ms │     no change │
│ QQuery 5  │   360.71 / 369.97 ±9.31 / 386.81 ms │   346.71 / 356.03 ±6.04 / 365.73 ms │     no change │
│ QQuery 6  │   102.24 / 103.60 ±1.38 / 105.64 ms │   100.82 / 105.35 ±2.78 / 108.84 ms │     no change │
│ QQuery 7  │   475.82 / 489.62 ±8.05 / 496.65 ms │  442.98 / 462.65 ±15.43 / 488.33 ms │ +1.06x faster │
│ QQuery 8  │  364.34 / 375.89 ±10.82 / 396.29 ms │   360.73 / 367.10 ±6.93 / 380.16 ms │     no change │
│ QQuery 9  │  545.32 / 570.79 ±19.11 / 590.28 ms │   523.25 / 534.52 ±8.65 / 545.57 ms │ +1.07x faster │
│ QQuery 10 │  297.59 / 322.21 ±15.23 / 343.74 ms │  287.73 / 301.87 ±11.69 / 315.78 ms │ +1.07x faster │
│ QQuery 11 │      60.55 / 61.99 ±1.00 / 63.68 ms │      60.53 / 61.73 ±1.05 / 63.36 ms │     no change │
│ QQuery 12 │   120.46 / 125.68 ±4.79 / 134.71 ms │   119.86 / 130.77 ±9.64 / 144.00 ms │     no change │
│ QQuery 13 │  298.19 / 315.66 ±12.94 / 337.60 ms │   311.87 / 319.59 ±6.41 / 330.81 ms │     no change │
│ QQuery 14 │   172.09 / 175.82 ±2.69 / 179.33 ms │   171.77 / 177.26 ±5.78 / 188.20 ms │     no change │
│ QQuery 15 │   302.07 / 307.11 ±4.45 / 313.02 ms │   304.39 / 308.73 ±5.18 / 318.34 ms │     no change │
│ QQuery 16 │      64.10 / 65.15 ±0.93 / 66.60 ms │      62.46 / 64.83 ±2.29 / 68.70 ms │     no change │
│ QQuery 17 │  581.84 / 604.46 ±19.17 / 630.90 ms │  595.15 / 615.30 ±19.13 / 646.49 ms │     no change │
│ QQuery 18 │ 943.55 / 994.04 ±48.76 / 1077.71 ms │ 928.09 / 970.14 ±34.42 / 1014.01 ms │     no change │
│ QQuery 19 │  242.76 / 258.65 ±15.17 / 286.99 ms │  238.76 / 249.85 ±12.83 / 267.70 ms │     no change │
│ QQuery 20 │   262.27 / 275.86 ±9.08 / 290.78 ms │  263.94 / 294.02 ±18.20 / 311.07 ms │  1.07x slower │
│ QQuery 21 │  663.42 / 674.89 ±10.90 / 693.87 ms │  664.89 / 686.50 ±21.92 / 727.08 ms │     no change │
│ QQuery 22 │      59.70 / 61.08 ±1.35 / 63.22 ms │      64.77 / 66.85 ±1.87 / 69.44 ms │  1.09x slower │
└───────────┴─────────────────────────────────────┴─────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 6936.41ms │
│ Total Time (partition_lookup_experiment)   │ 6846.13ms │
│ Average Time (HEAD)                        │  315.29ms │
│ Average Time (partition_lookup_experiment) │  311.19ms │
│ Queries Faster                             │         3 │
│ Queries Slower                             │         2 │
│ Queries with No Change                     │        17 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

Resource Usage

tpch10 — base (merge-base)

Metric Value
Wall time 35.0s
Peak memory 15.2 GiB
Avg memory 3.2 GiB
CPU user 344.0s
CPU sys 21.4s
Peak spill 0 B

tpch10 — branch

Metric Value
Wall time 35.0s
Peak memory 14.4 GiB
Avg memory 2.9 GiB
CPU user 343.9s
CPU sys 21.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

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

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

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

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"

Results will be posted here when complete


File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.22 ms │                     1.24 ms │     no change │
│ QQuery 1  │   11.69 ms │                    11.78 ms │     no change │
│ QQuery 2  │   35.68 ms │                    35.59 ms │     no change │
│ QQuery 3  │   31.39 ms │                    31.09 ms │     no change │
│ QQuery 4  │  236.61 ms │                   234.05 ms │     no change │
│ QQuery 5  │  271.93 ms │                   272.02 ms │     no change │
│ QQuery 6  │    1.26 ms │                     1.29 ms │     no change │
│ QQuery 7  │   15.78 ms │                    15.54 ms │     no change │
│ QQuery 8  │  322.93 ms │                   319.41 ms │     no change │
│ QQuery 9  │  455.58 ms │                   458.25 ms │     no change │
│ QQuery 10 │   88.49 ms │                    88.85 ms │     no change │
│ QQuery 11 │   99.71 ms │                    98.67 ms │     no change │
│ QQuery 12 │  289.84 ms │                   292.24 ms │     no change │
│ QQuery 13 │  396.37 ms │                   391.89 ms │     no change │
│ QQuery 14 │  306.69 ms │                   305.51 ms │     no change │
│ QQuery 15 │  285.20 ms │                   279.46 ms │     no change │
│ QQuery 16 │  620.59 ms │                   615.33 ms │     no change │
│ QQuery 17 │  618.87 ms │                   621.01 ms │     no change │
│ QQuery 18 │ 1253.38 ms │                  1243.00 ms │     no change │
│ QQuery 19 │   28.94 ms │                    29.06 ms │     no change │
│ QQuery 20 │  515.94 ms │                   518.68 ms │     no change │
│ QQuery 21 │  555.08 ms │                   553.03 ms │     no change │
│ QQuery 22 │  790.36 ms │                   790.76 ms │     no change │
│ QQuery 23 │  129.25 ms │                   132.62 ms │     no change │
│ QQuery 24 │   43.76 ms │                    44.03 ms │     no change │
│ QQuery 25 │  134.77 ms │                   134.49 ms │     no change │
│ QQuery 26 │   47.07 ms │                    47.75 ms │     no change │
│ QQuery 27 │  546.39 ms │                   544.44 ms │     no change │
│ QQuery 28 │ 2912.45 ms │                  2919.40 ms │     no change │
│ QQuery 29 │   38.13 ms │                    37.86 ms │     no change │
│ QQuery 30 │  311.47 ms │                   309.23 ms │     no change │
│ QQuery 31 │  278.23 ms │                   286.76 ms │     no change │
│ QQuery 32 │  939.17 ms │                   945.95 ms │     no change │
│ QQuery 33 │ 1453.15 ms │                  1475.67 ms │     no change │
│ QQuery 34 │ 1453.55 ms │                  1463.25 ms │     no change │
│ QQuery 35 │  291.89 ms │                   299.67 ms │     no change │
│ QQuery 36 │   64.70 ms │                    64.47 ms │     no change │
│ QQuery 37 │   35.47 ms │                    39.34 ms │  1.11x slower │
│ QQuery 38 │   34.97 ms │                    34.73 ms │     no change │
│ QQuery 39 │  140.22 ms │                   128.35 ms │ +1.09x faster │
│ QQuery 40 │   17.34 ms │                    18.55 ms │  1.07x slower │
│ QQuery 41 │   15.79 ms │                    16.57 ms │     no change │
│ QQuery 42 │   13.68 ms │                    14.43 ms │  1.05x slower │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 16134.99ms │
│ Total Time (partition_lookup_experiment)   │ 16165.31ms │
│ Average Time (HEAD)                        │   375.23ms │
│ Average Time (partition_lookup_experiment) │   375.94ms │
│ Queries Faster                             │          1 │
│ Queries Slower                             │          3 │
│ Queries with No Change                     │         39 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.22 / 4.21 ±5.90 / 16.01 ms │          1.24 / 4.23 ±5.91 / 16.05 ms │     no change │
│ QQuery 1  │        11.69 / 11.96 ±0.20 / 12.13 ms │        11.78 / 11.86 ±0.05 / 11.94 ms │     no change │
│ QQuery 2  │        35.68 / 35.92 ±0.25 / 36.36 ms │        35.59 / 35.68 ±0.06 / 35.76 ms │     no change │
│ QQuery 3  │        31.39 / 31.78 ±0.63 / 33.03 ms │        31.09 / 31.50 ±0.36 / 32.01 ms │     no change │
│ QQuery 4  │     236.61 / 238.32 ±1.85 / 241.68 ms │     234.05 / 237.19 ±2.68 / 241.19 ms │     no change │
│ QQuery 5  │     271.93 / 274.04 ±1.93 / 276.74 ms │     272.02 / 275.07 ±3.49 / 281.77 ms │     no change │
│ QQuery 6  │           1.26 / 1.42 ±0.25 / 1.91 ms │           1.29 / 1.44 ±0.24 / 1.91 ms │     no change │
│ QQuery 7  │        15.78 / 15.90 ±0.10 / 16.05 ms │        15.54 / 15.70 ±0.13 / 15.86 ms │     no change │
│ QQuery 8  │     322.93 / 326.20 ±2.28 / 329.89 ms │     319.41 / 328.19 ±5.94 / 335.11 ms │     no change │
│ QQuery 9  │    455.58 / 469.37 ±13.31 / 494.39 ms │     458.25 / 467.53 ±6.65 / 475.94 ms │     no change │
│ QQuery 10 │        88.49 / 89.60 ±0.91 / 91.25 ms │        88.85 / 89.90 ±0.91 / 91.24 ms │     no change │
│ QQuery 11 │      99.71 / 100.69 ±0.93 / 102.14 ms │       98.67 / 99.78 ±0.89 / 100.85 ms │     no change │
│ QQuery 12 │     289.84 / 302.21 ±7.51 / 312.54 ms │     292.24 / 298.10 ±7.57 / 312.66 ms │     no change │
│ QQuery 13 │    396.37 / 406.29 ±14.06 / 433.89 ms │     391.89 / 401.71 ±9.59 / 414.67 ms │     no change │
│ QQuery 14 │     306.69 / 312.96 ±3.90 / 316.63 ms │     305.51 / 313.62 ±7.56 / 327.79 ms │     no change │
│ QQuery 15 │     285.20 / 289.92 ±4.53 / 298.54 ms │     279.46 / 288.06 ±6.77 / 297.37 ms │     no change │
│ QQuery 16 │    620.59 / 631.95 ±15.10 / 660.96 ms │     615.33 / 622.52 ±6.76 / 634.60 ms │     no change │
│ QQuery 17 │     618.87 / 629.21 ±8.31 / 640.08 ms │     621.01 / 631.35 ±9.68 / 648.96 ms │     no change │
│ QQuery 18 │ 1253.38 / 1284.15 ±30.42 / 1340.57 ms │ 1243.00 / 1286.57 ±27.82 / 1310.43 ms │     no change │
│ QQuery 19 │        28.94 / 29.53 ±0.72 / 30.90 ms │        29.06 / 29.77 ±1.01 / 31.77 ms │     no change │
│ QQuery 20 │     515.94 / 526.07 ±9.41 / 542.96 ms │     518.68 / 525.71 ±4.71 / 530.99 ms │     no change │
│ QQuery 21 │    555.08 / 570.21 ±14.17 / 597.05 ms │     553.03 / 568.16 ±8.80 / 579.76 ms │     no change │
│ QQuery 22 │    790.36 / 799.95 ±10.82 / 820.27 ms │    790.76 / 801.35 ±10.75 / 819.89 ms │     no change │
│ QQuery 23 │     129.25 / 141.05 ±9.50 / 155.85 ms │     132.62 / 140.41 ±8.88 / 157.71 ms │     no change │
│ QQuery 24 │        43.76 / 44.42 ±0.57 / 45.41 ms │        44.03 / 48.49 ±3.63 / 53.87 ms │  1.09x slower │
│ QQuery 25 │     134.77 / 136.95 ±1.75 / 140.03 ms │     134.49 / 137.06 ±1.87 / 139.93 ms │     no change │
│ QQuery 26 │        47.07 / 47.85 ±0.64 / 48.69 ms │        47.75 / 51.35 ±6.16 / 63.66 ms │  1.07x slower │
│ QQuery 27 │    546.39 / 568.74 ±17.94 / 599.17 ms │    544.44 / 560.60 ±12.00 / 578.08 ms │     no change │
│ QQuery 28 │ 2912.45 / 2962.66 ±35.98 / 3002.61 ms │ 2919.40 / 2941.16 ±23.33 / 2985.92 ms │     no change │
│ QQuery 29 │       38.13 / 51.34 ±19.42 / 88.21 ms │        37.86 / 42.79 ±9.44 / 61.67 ms │ +1.20x faster │
│ QQuery 30 │     311.47 / 319.60 ±6.75 / 331.11 ms │     309.23 / 317.31 ±4.62 / 321.97 ms │     no change │
│ QQuery 31 │     278.23 / 288.43 ±6.38 / 297.40 ms │    286.76 / 297.02 ±11.21 / 310.86 ms │     no change │
│ QQuery 32 │    939.17 / 950.65 ±16.45 / 983.04 ms │    945.95 / 966.74 ±14.44 / 987.66 ms │     no change │
│ QQuery 33 │ 1453.15 / 1485.32 ±37.61 / 1558.10 ms │ 1475.67 / 1527.12 ±39.26 / 1591.89 ms │     no change │
│ QQuery 34 │ 1453.55 / 1475.96 ±18.63 / 1509.13 ms │ 1463.25 / 1522.98 ±37.31 / 1567.21 ms │     no change │
│ QQuery 35 │    291.89 / 322.34 ±25.36 / 353.24 ms │    299.67 / 328.20 ±39.80 / 406.78 ms │     no change │
│ QQuery 36 │        64.70 / 73.16 ±6.27 / 82.68 ms │        64.47 / 72.23 ±8.69 / 88.18 ms │     no change │
│ QQuery 37 │        35.47 / 38.45 ±3.67 / 45.67 ms │        39.34 / 46.01 ±4.92 / 52.93 ms │  1.20x slower │
│ QQuery 38 │        34.97 / 37.99 ±2.04 / 41.30 ms │        34.73 / 38.02 ±2.49 / 41.35 ms │     no change │
│ QQuery 39 │     140.22 / 146.78 ±4.02 / 150.51 ms │    128.35 / 146.67 ±11.93 / 160.24 ms │     no change │
│ QQuery 40 │        17.34 / 17.81 ±0.34 / 18.31 ms │        18.55 / 19.69 ±1.96 / 23.59 ms │  1.11x slower │
│ QQuery 41 │        15.79 / 17.33 ±2.45 / 22.22 ms │        16.57 / 22.19 ±5.95 / 30.95 ms │  1.28x slower │
│ QQuery 42 │        13.68 / 13.87 ±0.15 / 14.11 ms │        14.43 / 14.69 ±0.19 / 15.01 ms │  1.06x slower │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 16522.53ms │
│ Total Time (partition_lookup_experiment)   │ 16605.74ms │
│ Average Time (HEAD)                        │   384.24ms │
│ Average Time (partition_lookup_experiment) │   386.18ms │
│ Queries Faster                             │          1 │
│ Queries Slower                             │          6 │
│ Queries with No Change                     │         36 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 85.0s
Peak memory 11.6 GiB
Avg memory 4.6 GiB
CPU user 837.1s
CPU sys 59.0s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 85.0s
Peak memory 11.0 GiB
Avg memory 4.7 GiB
CPU user 843.5s
CPU sys 59.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpch
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"
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 partition_lookup_experiment
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃     HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 41.01 ms │                    40.70 ms │     no change │
│ QQuery 2  │ 18.10 ms │                    18.20 ms │     no change │
│ QQuery 3  │ 28.63 ms │                    28.42 ms │     no change │
│ QQuery 4  │ 17.23 ms │                    17.50 ms │     no change │
│ QQuery 5  │ 35.28 ms │                    34.88 ms │     no change │
│ QQuery 6  │ 13.71 ms │                    13.74 ms │     no change │
│ QQuery 7  │ 41.02 ms │                    41.41 ms │     no change │
│ QQuery 8  │ 40.65 ms │                    40.57 ms │     no change │
│ QQuery 9  │ 50.73 ms │                    48.91 ms │     no change │
│ QQuery 10 │ 40.16 ms │                    40.24 ms │     no change │
│ QQuery 11 │ 13.16 ms │                    13.63 ms │     no change │
│ QQuery 12 │ 18.25 ms │                    18.13 ms │     no change │
│ QQuery 13 │ 39.43 ms │                    39.46 ms │     no change │
│ QQuery 14 │ 24.24 ms │                    23.96 ms │     no change │
│ QQuery 15 │ 30.97 ms │                    30.74 ms │     no change │
│ QQuery 16 │ 13.36 ms │                    13.14 ms │     no change │
│ QQuery 17 │ 74.62 ms │                    69.69 ms │ +1.07x faster │
│ QQuery 18 │ 76.43 ms │                    74.10 ms │     no change │
│ QQuery 19 │ 32.02 ms │                    31.80 ms │     no change │
│ QQuery 20 │ 31.25 ms │                    31.29 ms │     no change │
│ QQuery 21 │ 55.35 ms │                    55.48 ms │     no change │
│ QQuery 22 │ 13.47 ms │                    13.49 ms │     no change │
└───────────┴──────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 749.09ms │
│ Total Time (partition_lookup_experiment)   │ 739.46ms │
│ Average Time (HEAD)                        │  34.05ms │
│ Average Time (partition_lookup_experiment) │  33.61ms │
│ Queries Faster                             │        1 │
│ Queries Slower                             │        0 │
│ Queries with No Change                     │       21 │
│ Queries with Failure                       │        0 │
└────────────────────────────────────────────┴──────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                           HEAD ┃    partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │ 41.01 / 42.75 ±1.23 / 44.56 ms │ 40.70 / 41.88 ±1.35 / 44.11 ms │     no change │
│ QQuery 2  │ 18.10 / 18.38 ±0.27 / 18.89 ms │ 18.20 / 18.81 ±0.58 / 19.85 ms │     no change │
│ QQuery 3  │ 28.63 / 29.57 ±0.89 / 31.13 ms │ 28.42 / 29.09 ±1.00 / 31.07 ms │     no change │
│ QQuery 4  │ 17.23 / 17.67 ±0.58 / 18.80 ms │ 17.50 / 18.50 ±0.77 / 19.38 ms │     no change │
│ QQuery 5  │ 35.28 / 35.57 ±0.34 / 36.22 ms │ 34.88 / 36.33 ±1.31 / 38.41 ms │     no change │
│ QQuery 6  │ 13.71 / 14.28 ±0.60 / 15.24 ms │ 13.74 / 13.99 ±0.42 / 14.83 ms │     no change │
│ QQuery 7  │ 41.02 / 42.83 ±1.12 / 44.51 ms │ 41.41 / 43.03 ±1.07 / 44.35 ms │     no change │
│ QQuery 8  │ 40.65 / 41.52 ±1.05 / 43.57 ms │ 40.57 / 40.74 ±0.13 / 40.94 ms │     no change │
│ QQuery 9  │ 50.73 / 51.97 ±1.03 / 53.84 ms │ 48.91 / 50.44 ±1.16 / 52.16 ms │     no change │
│ QQuery 10 │ 40.16 / 40.32 ±0.10 / 40.44 ms │ 40.24 / 40.75 ±0.57 / 41.72 ms │     no change │
│ QQuery 11 │ 13.16 / 13.59 ±0.43 / 14.32 ms │ 13.63 / 13.76 ±0.14 / 13.99 ms │     no change │
│ QQuery 12 │ 18.25 / 18.35 ±0.12 / 18.58 ms │ 18.13 / 18.26 ±0.16 / 18.56 ms │     no change │
│ QQuery 13 │ 39.43 / 41.73 ±2.55 / 46.35 ms │ 39.46 / 39.94 ±0.28 / 40.27 ms │     no change │
│ QQuery 14 │ 24.24 / 24.45 ±0.16 / 24.71 ms │ 23.96 / 24.35 ±0.52 / 25.38 ms │     no change │
│ QQuery 15 │ 30.97 / 31.78 ±0.68 / 32.84 ms │ 30.74 / 31.45 ±0.81 / 33.03 ms │     no change │
│ QQuery 16 │ 13.36 / 13.45 ±0.06 / 13.53 ms │ 13.14 / 13.63 ±0.57 / 14.74 ms │     no change │
│ QQuery 17 │ 74.62 / 76.80 ±1.79 / 78.67 ms │ 69.69 / 71.83 ±1.46 / 73.89 ms │ +1.07x faster │
│ QQuery 18 │ 76.43 / 78.33 ±1.51 / 80.99 ms │ 74.10 / 75.69 ±2.14 / 79.85 ms │     no change │
│ QQuery 19 │ 32.02 / 32.78 ±1.15 / 35.08 ms │ 31.80 / 32.64 ±0.97 / 34.18 ms │     no change │
│ QQuery 20 │ 31.25 / 31.80 ±0.27 / 31.97 ms │ 31.29 / 31.59 ±0.24 / 31.91 ms │     no change │
│ QQuery 21 │ 55.35 / 57.64 ±3.20 / 63.99 ms │ 55.48 / 56.52 ±1.01 / 57.74 ms │     no change │
│ QQuery 22 │ 13.47 / 13.67 ±0.19 / 14.01 ms │ 13.49 / 13.75 ±0.23 / 14.03 ms │     no change │
└───────────┴────────────────────────────────┴────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┓
┃ Benchmark Summary                          ┃          ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 769.22ms │
│ Total Time (partition_lookup_experiment)   │ 756.98ms │
│ Average Time (HEAD)                        │  34.96ms │
│ Average Time (partition_lookup_experiment) │  34.41ms │
│ 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 2.4 GiB
Avg memory 687.6 MiB
CPU user 21.8s
CPU sys 1.8s
Peak spill 0 B

tpch — branch

Metric Value
Wall time 5.0s
Peak memory 2.3 GiB
Avg memory 684.4 MiB
CPU user 21.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)

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark hash_join_semi_anti
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                                   partition_lookup_experiment
-----                                                  ----                                   ---------------------------
hash_join_semi_anti/left_anti_build1m_h10/100000       1.00      8.3±0.11ms        ? ?/sec    1.02      8.5±0.15ms        ? ?/sec
hash_join_semi_anti/left_build1m_h10/100000            1.00     11.1±0.08ms        ? ?/sec    1.03     11.4±0.10ms        ? ?/sec
hash_join_semi_anti/left_semi_build1m_h10/100000       1.00      3.8±0.04ms        ? ?/sec    1.05      3.9±0.08ms        ? ?/sec
hash_join_semi_anti/right_anti_d100_h10/1000000        1.00      5.9±0.10ms        ? ?/sec    1.04      6.1±0.11ms        ? ?/sec
hash_join_semi_anti/right_anti_d100_h100/1000000       1.00      3.7±0.02ms        ? ?/sec    1.01      3.8±0.06ms        ? ?/sec
hash_join_semi_anti/right_anti_d10_h10/1000000         1.00     16.1±0.15ms        ? ?/sec    1.03     16.7±0.21ms        ? ?/sec
hash_join_semi_anti/right_anti_d10_h100/1000000        1.00     13.6±0.10ms        ? ?/sec    1.01     13.8±0.11ms        ? ?/sec
hash_join_semi_anti/right_anti_d50_h10/1000000         1.00      5.9±0.09ms        ? ?/sec    1.03      6.1±0.13ms        ? ?/sec
hash_join_semi_anti/right_anti_d50_h100/1000000        1.01      3.7±0.02ms        ? ?/sec    1.00      3.7±0.03ms        ? ?/sec
hash_join_semi_anti/right_semi_d100_h10/1000000        1.00  1943.0±14.81µs        ? ?/sec    1.00  1936.5±14.75µs        ? ?/sec
hash_join_semi_anti/right_semi_d100_h100/1000000       1.02      9.1±0.19ms        ? ?/sec    1.00      9.0±0.18ms        ? ?/sec
hash_join_semi_anti/right_semi_d10_h10/1000000         1.00     11.6±0.04ms        ? ?/sec    1.03     11.9±0.10ms        ? ?/sec
hash_join_semi_anti/right_semi_d10_h100/1000000        1.01     19.8±0.19ms        ? ?/sec    1.00     19.7±0.26ms        ? ?/sec
hash_join_semi_anti/right_semi_d50_h10/1000000         1.00  1943.1±13.38µs        ? ?/sec    1.01  1962.9±26.58µs        ? ?/sec
hash_join_semi_anti/right_semi_d50_h100/1000000        1.02      9.1±0.18ms        ? ?/sec    1.00      8.9±0.14ms        ? ?/sec
hash_join_semi_anti/right_semi_fanout100_h1/1000000    1.00      5.6±0.08ms        ? ?/sec    1.01      5.6±0.13ms        ? ?/sec

Resource Usage

hash_join_semi_anti — base (merge-base)

Metric Value
Wall time 245.1s
Peak memory 132.2 MiB
Avg memory 87.5 MiB
CPU user 207.0s
CPU sys 0.2s
Peak spill 0 B

hash_join_semi_anti — branch

Metric Value
Wall time 235.1s
Peak memory 132.6 MiB
Avg memory 88.9 MiB
CPU user 201.3s
CPU sys 0.2s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │  345.01 ms │                   339.78 ms │     no change │
│ QQuery 2  │  107.46 ms │                    92.52 ms │ +1.16x faster │
│ QQuery 3  │  308.31 ms │                   242.11 ms │ +1.27x faster │
│ QQuery 4  │  297.67 ms │                   206.97 ms │ +1.44x faster │
│ QQuery 5  │  439.05 ms │                   312.88 ms │ +1.40x faster │
│ QQuery 6  │  180.45 ms │                   180.75 ms │     no change │
│ QQuery 7  │  442.02 ms │                   345.36 ms │ +1.28x faster │
│ QQuery 8  │  408.34 ms │                   383.18 ms │ +1.07x faster │
│ QQuery 9  │  635.96 ms │                   605.18 ms │     no change │
│ QQuery 10 │  374.52 ms │                   320.44 ms │ +1.17x faster │
│ QQuery 11 │   65.32 ms │                    65.22 ms │     no change │
│ QQuery 12 │  303.00 ms │                   251.53 ms │ +1.20x faster │
│ QQuery 13 │  401.97 ms │                   340.31 ms │ +1.18x faster │
│ QQuery 14 │  192.55 ms │                   186.50 ms │     no change │
│ QQuery 15 │  386.25 ms │                   379.55 ms │     no change │
│ QQuery 16 │   88.62 ms │                    73.69 ms │ +1.20x faster │
│ QQuery 17 │  491.60 ms │                   296.74 ms │ +1.66x faster │
│ QQuery 18 │ 1629.72 ms │                  1330.86 ms │ +1.22x faster │
│ QQuery 19 │  252.52 ms │                   233.68 ms │ +1.08x faster │
│ QQuery 20 │  279.70 ms │                   231.31 ms │ +1.21x faster │
│ QQuery 21 │ 1234.26 ms │                   941.86 ms │ +1.31x faster │
│ QQuery 22 │  134.42 ms │                    78.97 ms │ +1.70x faster │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8998.71ms │
│ Total Time (partition_lookup_experiment)   │ 7439.38ms │
│ Average Time (HEAD)                        │  409.03ms │
│ Average Time (partition_lookup_experiment) │  338.15ms │
│ Queries Faster                             │        16 │
│ Queries Slower                             │         0 │
│ Queries with No Change                     │         6 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpch_sf10.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │     345.01 / 345.89 ±0.69 / 346.87 ms │     339.78 / 342.61 ±2.72 / 346.63 ms │     no change │
│ QQuery 2  │     107.46 / 109.62 ±1.47 / 111.70 ms │        92.52 / 94.37 ±1.70 / 97.11 ms │ +1.16x faster │
│ QQuery 3  │     308.31 / 311.89 ±3.32 / 317.37 ms │     242.11 / 244.92 ±2.20 / 247.87 ms │ +1.27x faster │
│ QQuery 4  │     297.67 / 301.02 ±3.43 / 306.99 ms │     206.97 / 209.41 ±1.33 / 210.82 ms │ +1.44x faster │
│ QQuery 5  │     439.05 / 442.88 ±4.92 / 452.31 ms │     312.88 / 315.28 ±1.77 / 317.95 ms │ +1.40x faster │
│ QQuery 6  │     180.45 / 182.70 ±1.87 / 185.66 ms │     180.75 / 182.72 ±1.85 / 186.09 ms │     no change │
│ QQuery 7  │     442.02 / 447.91 ±3.29 / 451.47 ms │     345.36 / 350.36 ±4.61 / 357.05 ms │ +1.28x faster │
│ QQuery 8  │     408.34 / 411.23 ±2.93 / 416.29 ms │     383.18 / 385.08 ±1.99 / 388.84 ms │ +1.07x faster │
│ QQuery 9  │     635.96 / 647.36 ±8.94 / 659.39 ms │    605.18 / 621.02 ±11.16 / 633.65 ms │     no change │
│ QQuery 10 │     374.52 / 380.20 ±3.75 / 384.52 ms │     320.44 / 330.62 ±7.37 / 339.95 ms │ +1.15x faster │
│ QQuery 11 │        65.32 / 68.39 ±3.59 / 74.08 ms │        65.22 / 67.78 ±3.44 / 74.60 ms │     no change │
│ QQuery 12 │     303.00 / 306.01 ±3.03 / 311.75 ms │     251.53 / 253.36 ±2.02 / 257.26 ms │ +1.21x faster │
│ QQuery 13 │    401.97 / 421.41 ±11.42 / 434.75 ms │    340.31 / 356.00 ±13.32 / 378.05 ms │ +1.18x faster │
│ QQuery 14 │     192.55 / 196.81 ±3.00 / 200.73 ms │     186.50 / 190.98 ±6.29 / 203.12 ms │     no change │
│ QQuery 15 │     386.25 / 391.85 ±4.60 / 399.66 ms │     379.55 / 383.02 ±3.45 / 388.48 ms │     no change │
│ QQuery 16 │        88.62 / 91.39 ±2.33 / 94.31 ms │        73.69 / 76.05 ±1.96 / 78.88 ms │ +1.20x faster │
│ QQuery 17 │     491.60 / 496.57 ±5.88 / 508.03 ms │     296.74 / 303.81 ±4.96 / 308.74 ms │ +1.63x faster │
│ QQuery 18 │ 1629.72 / 1681.50 ±28.91 / 1715.65 ms │ 1330.86 / 1365.93 ±36.33 / 1418.75 ms │ +1.23x faster │
│ QQuery 19 │    252.52 / 263.36 ±12.47 / 286.02 ms │    233.68 / 255.40 ±20.76 / 293.62 ms │     no change │
│ QQuery 20 │     279.70 / 283.30 ±3.03 / 288.67 ms │     231.31 / 232.60 ±1.12 / 234.40 ms │ +1.22x faster │
│ QQuery 21 │ 1234.26 / 1252.88 ±12.25 / 1271.70 ms │     941.86 / 951.65 ±8.67 / 964.96 ms │ +1.32x faster │
│ QQuery 22 │     134.42 / 148.13 ±9.34 / 159.07 ms │        78.97 / 85.85 ±6.57 / 97.08 ms │ +1.73x faster │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 9182.29ms │
│ Total Time (partition_lookup_experiment)   │ 7598.84ms │
│ Average Time (HEAD)                        │  417.38ms │
│ Average Time (partition_lookup_experiment) │  345.40ms │
│ Queries Faster                             │        15 │
│ Queries Slower                             │         0 │
│ Queries with No Change                     │         7 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

Resource Usage

tpch10 — base (merge-base)

Metric Value
Wall time 50.0s
Peak memory 13.5 GiB
Avg memory 2.6 GiB
CPU user 486.8s
CPU sys 22.6s
Peak spill 0 B

tpch10 — branch

Metric Value
Wall time 40.0s
Peak memory 13.6 GiB
Avg memory 3.0 GiB
CPU user 397.2s
CPU sys 20.7s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark tpcds
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"
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 partition_lookup_experiment
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │    5.02 ms │                     5.02 ms │     no change │
│ QQuery 2  │   77.74 ms │                    78.83 ms │     no change │
│ QQuery 3  │   27.47 ms │                    27.90 ms │     no change │
│ QQuery 4  │  566.71 ms │                   585.54 ms │     no change │
│ QQuery 5  │   48.17 ms │                    48.22 ms │     no change │
│ QQuery 6  │   33.22 ms │                    33.48 ms │     no change │
│ QQuery 7  │   70.46 ms │                    70.44 ms │     no change │
│ QQuery 8  │   34.59 ms │                    34.81 ms │     no change │
│ QQuery 9  │   50.45 ms │                    49.62 ms │     no change │
│ QQuery 10 │   59.22 ms │                    58.89 ms │     no change │
│ QQuery 11 │  289.83 ms │                   308.47 ms │  1.06x slower │
│ QQuery 12 │   27.40 ms │                    27.42 ms │     no change │
│ QQuery 13 │  109.00 ms │                   109.18 ms │     no change │
│ QQuery 14 │  372.62 ms │                   370.80 ms │     no change │
│ QQuery 15 │   51.32 ms │                    51.25 ms │     no change │
│ QQuery 16 │    5.90 ms │                     5.79 ms │     no change │
│ QQuery 17 │   75.53 ms │                    73.54 ms │     no change │
│ QQuery 18 │  100.78 ms │                   101.77 ms │     no change │
│ QQuery 19 │   39.70 ms │                    39.59 ms │     no change │
│ QQuery 20 │   34.41 ms │                    34.19 ms │     no change │
│ QQuery 21 │   16.04 ms │                    16.17 ms │     no change │
│ QQuery 22 │   61.12 ms │                    61.25 ms │     no change │
│ QQuery 23 │  293.66 ms │                   296.64 ms │     no change │
│ QQuery 24 │  181.10 ms │                   183.71 ms │     no change │
│ QQuery 25 │  104.25 ms │                   101.81 ms │     no change │
│ QQuery 26 │   44.38 ms │                    45.17 ms │     no change │
│ QQuery 27 │    5.49 ms │                     5.39 ms │     no change │
│ QQuery 28 │   59.30 ms │                    59.45 ms │     no change │
│ QQuery 29 │   91.55 ms │                    88.64 ms │     no change │
│ QQuery 30 │   30.86 ms │                    31.13 ms │     no change │
│ QQuery 31 │  104.92 ms │                   103.53 ms │     no change │
│ QQuery 32 │   18.98 ms │                    19.06 ms │     no change │
│ QQuery 33 │   35.97 ms │                    36.11 ms │     no change │
│ QQuery 34 │    9.35 ms │                     9.25 ms │     no change │
│ QQuery 35 │   69.15 ms │                    69.42 ms │     no change │
│ QQuery 36 │    5.50 ms │                     5.24 ms │     no change │
│ QQuery 37 │    6.41 ms │                     6.32 ms │     no change │
│ QQuery 38 │   58.23 ms │                    57.95 ms │     no change │
│ QQuery 39 │   69.41 ms │                    69.16 ms │     no change │
│ QQuery 40 │   21.64 ms │                    21.99 ms │     no change │
│ QQuery 41 │   11.65 ms │                    11.57 ms │     no change │
│ QQuery 42 │   22.55 ms │                    22.35 ms │     no change │
│ QQuery 43 │    4.39 ms │                     4.29 ms │     no change │
│ QQuery 44 │    8.23 ms │                     8.02 ms │     no change │
│ QQuery 45 │   34.04 ms │                    34.26 ms │     no change │
│ QQuery 46 │   10.99 ms │                    10.84 ms │     no change │
│ QQuery 47 │  208.13 ms │                   209.83 ms │     no change │
│ QQuery 48 │   88.27 ms │                    88.08 ms │     no change │
│ QQuery 49 │   67.53 ms │                    67.34 ms │     no change │
│ QQuery 50 │   55.68 ms │                    54.72 ms │     no change │
│ QQuery 51 │   91.90 ms │                    91.19 ms │     no change │
│ QQuery 52 │   22.77 ms │                    23.08 ms │     no change │
│ QQuery 53 │   28.11 ms │                    28.08 ms │     no change │
│ QQuery 54 │   51.14 ms │                    51.27 ms │     no change │
│ QQuery 55 │   22.32 ms │                    22.34 ms │     no change │
│ QQuery 56 │   36.83 ms │                    36.50 ms │     no change │
│ QQuery 57 │  160.82 ms │                   163.25 ms │     no change │
│ QQuery 58 │  101.99 ms │                   104.60 ms │     no change │
│ QQuery 59 │  110.91 ms │                   112.45 ms │     no change │
│ QQuery 60 │   37.53 ms │                    37.31 ms │     no change │
│ QQuery 61 │    9.09 ms │                     8.94 ms │     no change │
│ QQuery 62 │   41.43 ms │                    42.86 ms │     no change │
│ QQuery 63 │   27.96 ms │                    28.63 ms │     no change │
│ QQuery 64 │  343.21 ms │                   341.99 ms │     no change │
│ QQuery 65 │  129.23 ms │                    70.82 ms │ +1.82x faster │
│ QQuery 66 │   70.42 ms │                    70.64 ms │     no change │
│ QQuery 67 │  235.55 ms │                   236.28 ms │     no change │
│ QQuery 68 │   11.13 ms │                    11.28 ms │     no change │
│ QQuery 69 │   54.71 ms │                    54.68 ms │     no change │
│ QQuery 70 │  100.28 ms │                   100.97 ms │     no change │
│ QQuery 71 │   34.24 ms │                    33.13 ms │     no change │
│ QQuery 72 │ 1634.59 ms │                  1501.25 ms │ +1.09x faster │
│ QQuery 73 │    9.51 ms │                     9.39 ms │     no change │
│ QQuery 74 │  178.96 ms │                   177.64 ms │     no change │
│ QQuery 75 │  134.98 ms │                   133.79 ms │     no change │
│ QQuery 76 │   32.86 ms │                    32.39 ms │     no change │
│ QQuery 77 │   57.35 ms │                    57.28 ms │     no change │
│ QQuery 78 │  155.44 ms │                   155.08 ms │     no change │
│ QQuery 79 │   64.49 ms │                    64.90 ms │     no change │
│ QQuery 80 │   92.50 ms │                    90.35 ms │     no change │
│ QQuery 81 │   24.87 ms │                    24.38 ms │     no change │
│ QQuery 82 │   15.59 ms │                    15.38 ms │     no change │
│ QQuery 83 │   30.69 ms │                    31.11 ms │     no change │
│ QQuery 84 │   28.12 ms │                    28.58 ms │     no change │
│ QQuery 85 │   97.34 ms │                    94.24 ms │     no change │
│ QQuery 86 │   23.89 ms │                    23.88 ms │     no change │
│ QQuery 87 │   58.83 ms │                    58.18 ms │     no change │
│ QQuery 88 │   58.13 ms │                    56.59 ms │     no change │
│ QQuery 89 │   34.52 ms │                    33.43 ms │     no change │
│ QQuery 90 │   15.42 ms │                    15.40 ms │     no change │
│ QQuery 91 │   39.23 ms │                    38.16 ms │     no change │
│ QQuery 92 │   27.57 ms │                    27.33 ms │     no change │
│ QQuery 93 │   47.85 ms │                    47.25 ms │     no change │
│ QQuery 94 │   37.86 ms │                    36.06 ms │     no change │
│ QQuery 95 │   77.36 ms │                    76.89 ms │     no change │
│ QQuery 96 │   23.14 ms │                    22.66 ms │     no change │
│ QQuery 97 │   49.20 ms │                    49.06 ms │     no change │
│ QQuery 98 │   41.58 ms │                    40.89 ms │     no change │
│ QQuery 99 │   62.61 ms │                    63.43 ms │     no change │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8754.37ms │
│ Total Time (partition_lookup_experiment)   │ 8588.74ms │
│ Average Time (HEAD)                        │   88.43ms │
│ Average Time (partition_lookup_experiment) │   86.75ms │
│ Queries Faster                             │         2 │
│ Queries Slower                             │         1 │
│ Queries with No Change                     │        96 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark tpcds_sf1.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 1  │           5.02 / 5.60 ±1.12 / 7.83 ms │           5.02 / 5.57 ±1.04 / 7.66 ms │     no change │
│ QQuery 2  │        77.74 / 78.04 ±0.30 / 78.53 ms │        78.83 / 78.93 ±0.12 / 79.17 ms │     no change │
│ QQuery 3  │        27.47 / 27.91 ±0.36 / 28.40 ms │        27.90 / 28.16 ±0.25 / 28.49 ms │     no change │
│ QQuery 4  │     566.71 / 569.98 ±3.69 / 576.89 ms │     585.54 / 596.25 ±5.65 / 601.73 ms │     no change │
│ QQuery 5  │        48.17 / 48.52 ±0.41 / 49.30 ms │        48.22 / 48.50 ±0.23 / 48.88 ms │     no change │
│ QQuery 6  │        33.22 / 33.44 ±0.21 / 33.80 ms │        33.48 / 33.85 ±0.22 / 34.12 ms │     no change │
│ QQuery 7  │        70.46 / 72.42 ±2.33 / 76.64 ms │        70.44 / 71.48 ±1.09 / 73.48 ms │     no change │
│ QQuery 8  │        34.59 / 34.83 ±0.24 / 35.15 ms │        34.81 / 35.18 ±0.31 / 35.59 ms │     no change │
│ QQuery 9  │        50.45 / 51.67 ±1.15 / 53.86 ms │        49.62 / 52.38 ±1.59 / 54.20 ms │     no change │
│ QQuery 10 │        59.22 / 59.76 ±0.40 / 60.45 ms │        58.89 / 59.87 ±1.57 / 62.99 ms │     no change │
│ QQuery 11 │     289.83 / 296.79 ±5.35 / 304.33 ms │     308.47 / 312.40 ±3.13 / 317.88 ms │  1.05x slower │
│ QQuery 12 │        27.40 / 27.73 ±0.35 / 28.17 ms │        27.42 / 27.68 ±0.32 / 28.29 ms │     no change │
│ QQuery 13 │     109.00 / 110.48 ±2.20 / 114.85 ms │     109.18 / 110.15 ±1.17 / 112.34 ms │     no change │
│ QQuery 14 │     372.62 / 376.91 ±4.67 / 385.80 ms │     370.80 / 375.54 ±3.94 / 380.02 ms │     no change │
│ QQuery 15 │        51.32 / 53.38 ±2.27 / 56.63 ms │        51.25 / 51.74 ±0.48 / 52.64 ms │     no change │
│ QQuery 16 │           5.90 / 6.02 ±0.14 / 6.29 ms │           5.79 / 5.97 ±0.21 / 6.37 ms │     no change │
│ QQuery 17 │        75.53 / 77.08 ±1.44 / 79.75 ms │        73.54 / 73.95 ±0.29 / 74.42 ms │     no change │
│ QQuery 18 │     100.78 / 102.15 ±1.55 / 104.63 ms │     101.77 / 103.06 ±1.23 / 104.83 ms │     no change │
│ QQuery 19 │        39.70 / 40.03 ±0.24 / 40.27 ms │        39.59 / 39.80 ±0.31 / 40.40 ms │     no change │
│ QQuery 20 │        34.41 / 35.03 ±0.41 / 35.46 ms │        34.19 / 34.86 ±0.56 / 35.48 ms │     no change │
│ QQuery 21 │        16.04 / 16.19 ±0.15 / 16.42 ms │        16.17 / 16.66 ±0.65 / 17.93 ms │     no change │
│ QQuery 22 │        61.12 / 62.43 ±1.40 / 65.12 ms │        61.25 / 62.78 ±1.98 / 66.62 ms │     no change │
│ QQuery 23 │     293.66 / 297.74 ±4.06 / 303.54 ms │     296.64 / 299.33 ±3.47 / 306.13 ms │     no change │
│ QQuery 24 │     181.10 / 184.69 ±4.97 / 194.39 ms │     183.71 / 186.59 ±3.54 / 193.55 ms │     no change │
│ QQuery 25 │     104.25 / 104.97 ±0.78 / 106.15 ms │     101.81 / 102.59 ±1.05 / 104.63 ms │     no change │
│ QQuery 26 │        44.38 / 46.59 ±3.53 / 53.57 ms │        45.17 / 46.36 ±1.77 / 49.85 ms │     no change │
│ QQuery 27 │           5.49 / 5.64 ±0.16 / 5.94 ms │           5.39 / 5.61 ±0.21 / 6.00 ms │     no change │
│ QQuery 28 │        59.30 / 60.04 ±0.57 / 60.79 ms │        59.45 / 60.01 ±0.57 / 60.93 ms │     no change │
│ QQuery 29 │        91.55 / 92.56 ±1.39 / 95.13 ms │        88.64 / 89.84 ±1.00 / 91.14 ms │     no change │
│ QQuery 30 │        30.86 / 31.07 ±0.24 / 31.55 ms │        31.13 / 32.93 ±2.29 / 37.29 ms │  1.06x slower │
│ QQuery 31 │     104.92 / 107.88 ±3.76 / 115.14 ms │     103.53 / 104.61 ±1.07 / 106.65 ms │     no change │
│ QQuery 32 │        18.98 / 19.19 ±0.36 / 19.91 ms │        19.06 / 19.32 ±0.27 / 19.83 ms │     no change │
│ QQuery 33 │        35.97 / 36.60 ±0.54 / 37.59 ms │        36.11 / 36.36 ±0.19 / 36.69 ms │     no change │
│ QQuery 34 │          9.35 / 9.72 ±0.31 / 10.13 ms │          9.25 / 9.69 ±0.35 / 10.18 ms │     no change │
│ QQuery 35 │        69.15 / 72.18 ±4.99 / 82.13 ms │        69.42 / 70.96 ±2.33 / 75.55 ms │     no change │
│ QQuery 36 │           5.50 / 5.63 ±0.19 / 6.01 ms │           5.24 / 5.37 ±0.25 / 5.88 ms │     no change │
│ QQuery 37 │           6.41 / 6.50 ±0.09 / 6.64 ms │           6.32 / 6.49 ±0.09 / 6.55 ms │     no change │
│ QQuery 38 │        58.23 / 59.13 ±0.55 / 59.92 ms │        57.95 / 58.90 ±0.84 / 60.29 ms │     no change │
│ QQuery 39 │        69.41 / 69.82 ±0.30 / 70.20 ms │        69.16 / 70.02 ±0.66 / 70.99 ms │     no change │
│ QQuery 40 │        21.64 / 23.65 ±3.35 / 30.32 ms │        21.99 / 23.06 ±1.35 / 25.71 ms │     no change │
│ QQuery 41 │        11.65 / 11.76 ±0.11 / 11.98 ms │        11.57 / 11.72 ±0.18 / 12.05 ms │     no change │
│ QQuery 42 │        22.55 / 23.18 ±0.49 / 24.04 ms │        22.35 / 22.79 ±0.27 / 23.09 ms │     no change │
│ QQuery 43 │           4.39 / 4.54 ±0.19 / 4.90 ms │           4.29 / 4.42 ±0.20 / 4.82 ms │     no change │
│ QQuery 44 │           8.23 / 8.32 ±0.12 / 8.55 ms │           8.02 / 8.10 ±0.10 / 8.28 ms │     no change │
│ QQuery 45 │        34.04 / 34.87 ±0.72 / 35.85 ms │        34.26 / 35.37 ±0.62 / 35.93 ms │     no change │
│ QQuery 46 │        10.99 / 11.35 ±0.54 / 12.42 ms │        10.84 / 11.15 ±0.36 / 11.81 ms │     no change │
│ QQuery 47 │     208.13 / 212.71 ±4.74 / 221.24 ms │     209.83 / 212.94 ±4.12 / 220.96 ms │     no change │
│ QQuery 48 │        88.27 / 88.84 ±0.52 / 89.58 ms │        88.08 / 90.41 ±2.57 / 95.38 ms │     no change │
│ QQuery 49 │        67.53 / 69.77 ±3.39 / 76.50 ms │        67.34 / 67.90 ±0.61 / 69.03 ms │     no change │
│ QQuery 50 │        55.68 / 56.21 ±0.45 / 56.73 ms │        54.72 / 55.09 ±0.25 / 55.40 ms │     no change │
│ QQuery 51 │       91.90 / 93.95 ±3.38 / 100.69 ms │        91.19 / 92.12 ±1.45 / 94.99 ms │     no change │
│ QQuery 52 │        22.77 / 23.06 ±0.28 / 23.59 ms │        23.08 / 23.19 ±0.16 / 23.49 ms │     no change │
│ QQuery 53 │        28.11 / 28.50 ±0.41 / 29.27 ms │        28.08 / 28.20 ±0.09 / 28.35 ms │     no change │
│ QQuery 54 │        51.14 / 51.46 ±0.19 / 51.65 ms │        51.27 / 51.47 ±0.14 / 51.65 ms │     no change │
│ QQuery 55 │        22.32 / 22.51 ±0.20 / 22.88 ms │        22.34 / 22.56 ±0.14 / 22.71 ms │     no change │
│ QQuery 56 │        36.83 / 37.13 ±0.30 / 37.64 ms │        36.50 / 37.10 ±0.35 / 37.52 ms │     no change │
│ QQuery 57 │     160.82 / 163.89 ±3.22 / 169.53 ms │     163.25 / 165.49 ±2.12 / 168.98 ms │     no change │
│ QQuery 58 │     101.99 / 103.71 ±1.22 / 105.64 ms │     104.60 / 105.72 ±1.62 / 108.90 ms │     no change │
│ QQuery 59 │     110.91 / 111.41 ±0.36 / 111.99 ms │     112.45 / 112.89 ±0.59 / 114.06 ms │     no change │
│ QQuery 60 │        37.53 / 37.93 ±0.22 / 38.15 ms │        37.31 / 38.74 ±1.47 / 41.55 ms │     no change │
│ QQuery 61 │         9.09 / 10.73 ±2.38 / 15.26 ms │           8.94 / 9.09 ±0.19 / 9.47 ms │ +1.18x faster │
│ QQuery 62 │        41.43 / 42.33 ±0.66 / 43.29 ms │        42.86 / 43.24 ±0.31 / 43.79 ms │     no change │
│ QQuery 63 │        27.96 / 28.23 ±0.26 / 28.68 ms │        28.63 / 28.86 ±0.21 / 29.12 ms │     no change │
│ QQuery 64 │     343.21 / 349.75 ±4.22 / 355.00 ms │     341.99 / 348.23 ±4.07 / 353.02 ms │     no change │
│ QQuery 65 │     129.23 / 131.03 ±1.13 / 132.36 ms │        70.82 / 71.30 ±0.38 / 71.82 ms │ +1.84x faster │
│ QQuery 66 │        70.42 / 74.09 ±4.71 / 82.95 ms │        70.64 / 72.23 ±2.21 / 76.58 ms │     no change │
│ QQuery 67 │     235.55 / 242.41 ±7.29 / 255.94 ms │     236.28 / 247.51 ±6.68 / 256.54 ms │     no change │
│ QQuery 68 │        11.13 / 11.36 ±0.27 / 11.83 ms │        11.28 / 11.49 ±0.20 / 11.79 ms │     no change │
│ QQuery 69 │        54.71 / 55.09 ±0.21 / 55.34 ms │        54.68 / 55.15 ±0.50 / 56.02 ms │     no change │
│ QQuery 70 │     100.28 / 105.16 ±5.66 / 116.11 ms │     100.97 / 104.63 ±4.76 / 113.54 ms │     no change │
│ QQuery 71 │        34.24 / 34.48 ±0.25 / 34.96 ms │        33.13 / 34.05 ±0.83 / 35.27 ms │     no change │
│ QQuery 72 │ 1634.59 / 1672.68 ±38.66 / 1741.48 ms │ 1501.25 / 1579.25 ±42.76 / 1617.39 ms │ +1.06x faster │
│ QQuery 73 │         9.51 / 10.21 ±0.65 / 11.45 ms │          9.39 / 9.85 ±0.34 / 10.17 ms │     no change │
│ QQuery 74 │     178.96 / 181.37 ±2.21 / 184.33 ms │     177.64 / 178.20 ±0.54 / 179.15 ms │     no change │
│ QQuery 75 │     134.98 / 136.42 ±0.98 / 138.05 ms │     133.79 / 134.12 ±0.34 / 134.68 ms │     no change │
│ QQuery 76 │        32.86 / 33.46 ±0.54 / 34.47 ms │        32.39 / 32.64 ±0.22 / 33.01 ms │     no change │
│ QQuery 77 │        57.35 / 57.73 ±0.40 / 58.35 ms │        57.28 / 60.84 ±4.01 / 66.43 ms │  1.05x slower │
│ QQuery 78 │     155.44 / 162.43 ±7.33 / 175.08 ms │     155.08 / 161.78 ±5.42 / 169.20 ms │     no change │
│ QQuery 79 │        64.49 / 64.69 ±0.24 / 65.13 ms │        64.90 / 65.79 ±1.05 / 67.81 ms │     no change │
│ QQuery 80 │       92.50 / 95.10 ±3.72 / 102.44 ms │        90.35 / 91.76 ±1.29 / 93.96 ms │     no change │
│ QQuery 81 │        24.87 / 25.08 ±0.12 / 25.22 ms │        24.38 / 24.54 ±0.09 / 24.65 ms │     no change │
│ QQuery 82 │        15.59 / 15.71 ±0.09 / 15.86 ms │        15.38 / 17.89 ±4.77 / 27.42 ms │  1.14x slower │
│ QQuery 83 │        30.69 / 30.85 ±0.15 / 31.13 ms │        31.11 / 32.65 ±1.57 / 35.46 ms │  1.06x slower │
│ QQuery 84 │        28.12 / 28.80 ±0.48 / 29.48 ms │        28.58 / 29.06 ±0.48 / 29.92 ms │     no change │
│ QQuery 85 │      97.34 / 100.86 ±5.50 / 111.83 ms │        94.24 / 95.02 ±0.68 / 96.18 ms │ +1.06x faster │
│ QQuery 86 │        23.89 / 24.22 ±0.31 / 24.73 ms │        23.88 / 24.24 ±0.31 / 24.79 ms │     no change │
│ QQuery 87 │        58.83 / 59.66 ±0.97 / 61.56 ms │        58.18 / 59.87 ±2.08 / 63.91 ms │     no change │
│ QQuery 88 │        58.13 / 62.47 ±5.19 / 72.67 ms │        56.59 / 57.35 ±0.51 / 58.15 ms │ +1.09x faster │
│ QQuery 89 │        34.52 / 34.83 ±0.21 / 35.13 ms │        33.43 / 33.88 ±0.51 / 34.81 ms │     no change │
│ QQuery 90 │        15.42 / 15.67 ±0.19 / 15.99 ms │        15.40 / 15.53 ±0.16 / 15.84 ms │     no change │
│ QQuery 91 │        39.23 / 39.55 ±0.27 / 39.90 ms │        38.16 / 38.28 ±0.06 / 38.34 ms │     no change │
│ QQuery 92 │        27.57 / 28.29 ±0.55 / 29.10 ms │        27.33 / 29.03 ±2.81 / 34.62 ms │     no change │
│ QQuery 93 │        47.85 / 48.27 ±0.33 / 48.74 ms │        47.25 / 48.01 ±1.00 / 49.96 ms │     no change │
│ QQuery 94 │        37.86 / 39.04 ±1.65 / 42.30 ms │        36.06 / 36.62 ±0.39 / 37.25 ms │ +1.07x faster │
│ QQuery 95 │        77.36 / 78.68 ±0.99 / 80.25 ms │        76.89 / 77.42 ±0.41 / 78.08 ms │     no change │
│ QQuery 96 │        23.14 / 23.54 ±0.34 / 24.14 ms │        22.66 / 22.91 ±0.26 / 23.40 ms │     no change │
│ QQuery 97 │        49.20 / 50.90 ±0.98 / 51.88 ms │        49.06 / 51.09 ±2.11 / 54.67 ms │     no change │
│ QQuery 98 │        41.58 / 42.31 ±0.58 / 43.13 ms │        40.89 / 41.60 ±0.57 / 42.58 ms │     no change │
│ QQuery 99 │        62.61 / 63.06 ±0.34 / 63.46 ms │        63.43 / 63.78 ±0.36 / 64.41 ms │     no change │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃           ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 8925.63ms │
│ Total Time (partition_lookup_experiment)   │ 8788.99ms │
│ Average Time (HEAD)                        │   90.16ms │
│ Average Time (partition_lookup_experiment) │   88.78ms │
│ Queries Faster                             │         6 │
│ Queries Slower                             │         5 │
│ Queries with No Change                     │        88 │
│ Queries with Failure                       │         0 │
└────────────────────────────────────────────┴───────────┘

Resource Usage

tpcds — base (merge-base)

Metric Value
Wall time 45.0s
Peak memory 2.0 GiB
Avg memory 1.4 GiB
CPU user 187.7s
CPU sys 4.9s
Peak spill 0 B

tpcds — branch

Metric Value
Wall time 45.0s
Peak memory 2.4 GiB
Avg memory 1.7 GiB
CPU user 181.0s
CPU sys 4.8s
Peak spill 0 B

File an issue against this benchmark runner

@adriangbot

Copy link
Copy Markdown

🤖 Benchmark completed (GKE) | trigger

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

Comparing partition_lookup_experiment (7c6a3f5) to 611311c (merge-base) diff

Run configuration
run benchmark clickbench_partitioned
env:
  DATAFUSION_EXECUTION_PARQUET_PUSHDOWN_FILTERS: "false"
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 partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃       HEAD ┃ partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │    1.20 ms │                     1.21 ms │     no change │
│ QQuery 1  │   11.56 ms │                    11.55 ms │     no change │
│ QQuery 2  │   35.82 ms │                    35.29 ms │     no change │
│ QQuery 3  │   31.85 ms │                    31.23 ms │     no change │
│ QQuery 4  │  251.02 ms │                   233.80 ms │ +1.07x faster │
│ QQuery 5  │  287.91 ms │                   273.69 ms │     no change │
│ QQuery 6  │    1.25 ms │                     1.23 ms │     no change │
│ QQuery 7  │   12.74 ms │                    12.46 ms │     no change │
│ QQuery 8  │  346.13 ms │                   328.32 ms │ +1.05x faster │
│ QQuery 9  │  494.85 ms │                   467.65 ms │ +1.06x faster │
│ QQuery 10 │   66.41 ms │                    63.28 ms │     no change │
│ QQuery 11 │   77.41 ms │                    75.25 ms │     no change │
│ QQuery 12 │  275.17 ms │                   268.42 ms │     no change │
│ QQuery 13 │  383.94 ms │                   362.63 ms │ +1.06x faster │
│ QQuery 14 │  289.76 ms │                   282.81 ms │     no change │
│ QQuery 15 │  293.17 ms │                   279.41 ms │     no change │
│ QQuery 16 │  638.89 ms │                   639.54 ms │     no change │
│ QQuery 17 │  644.39 ms │                   630.93 ms │     no change │
│ QQuery 18 │ 1319.63 ms │                  1319.41 ms │     no change │
│ QQuery 19 │   28.26 ms │                    27.45 ms │     no change │
│ QQuery 20 │  522.39 ms │                   518.99 ms │     no change │
│ QQuery 21 │  512.34 ms │                   507.92 ms │     no change │
│ QQuery 22 │  994.68 ms │                   981.11 ms │     no change │
│ QQuery 23 │ 3165.90 ms │                  3094.68 ms │     no change │
│ QQuery 24 │   40.68 ms │                    40.40 ms │     no change │
│ QQuery 25 │  106.69 ms │                   105.43 ms │     no change │
│ QQuery 26 │   41.40 ms │                    40.84 ms │     no change │
│ QQuery 27 │  515.18 ms │                   517.67 ms │     no change │
│ QQuery 28 │ 2908.54 ms │                  2920.94 ms │     no change │
│ QQuery 29 │   38.78 ms │                    38.42 ms │     no change │
│ QQuery 30 │  315.16 ms │                   307.01 ms │     no change │
│ QQuery 31 │  282.12 ms │                   279.07 ms │     no change │
│ QQuery 32 │  970.71 ms │                  1008.15 ms │     no change │
│ QQuery 33 │ 1523.47 ms │                  1545.63 ms │     no change │
│ QQuery 34 │ 1493.65 ms │                  1555.66 ms │     no change │
│ QQuery 35 │  298.90 ms │                   311.21 ms │     no change │
│ QQuery 36 │   68.63 ms │                    68.23 ms │     no change │
│ QQuery 37 │   35.18 ms │                    36.80 ms │     no change │
│ QQuery 38 │   39.32 ms │                    43.60 ms │  1.11x slower │
│ QQuery 39 │  150.90 ms │                   151.50 ms │     no change │
│ QQuery 40 │   14.11 ms │                    15.04 ms │  1.07x slower │
│ QQuery 41 │   13.61 ms │                    14.21 ms │     no change │
│ QQuery 42 │   12.95 ms │                    13.56 ms │     no change │
└───────────┴────────────┴─────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 19556.65ms │
│ Total Time (partition_lookup_experiment)   │ 19461.65ms │
│ Average Time (HEAD)                        │   454.81ms │
│ Average Time (partition_lookup_experiment) │   452.60ms │
│ Queries Faster                             │          4 │
│ Queries Slower                             │          2 │
│ Queries with No Change                     │         37 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

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

Comparing HEAD and partition_lookup_experiment
--------------------
Benchmark clickbench_partitioned.json
--------------------
┏━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓
┃ Query     ┃                                  HEAD ┃           partition_lookup_experiment ┃        Change ┃
┡━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩
│ QQuery 0  │          1.20 / 4.37 ±6.12 / 16.60 ms │          1.21 / 4.31 ±6.02 / 16.35 ms │     no change │
│ QQuery 1  │        11.56 / 11.73 ±0.10 / 11.85 ms │        11.55 / 11.66 ±0.11 / 11.85 ms │     no change │
│ QQuery 2  │        35.82 / 36.05 ±0.20 / 36.41 ms │        35.29 / 35.61 ±0.34 / 36.25 ms │     no change │
│ QQuery 3  │        31.85 / 32.99 ±0.91 / 34.12 ms │        31.23 / 31.81 ±0.44 / 32.45 ms │     no change │
│ QQuery 4  │     251.02 / 260.72 ±6.39 / 268.95 ms │     233.80 / 244.01 ±6.48 / 252.78 ms │ +1.07x faster │
│ QQuery 5  │     287.91 / 291.96 ±2.51 / 295.17 ms │     273.69 / 279.30 ±4.04 / 285.67 ms │     no change │
│ QQuery 6  │           1.25 / 1.42 ±0.27 / 1.95 ms │           1.23 / 1.39 ±0.25 / 1.88 ms │     no change │
│ QQuery 7  │        12.74 / 13.12 ±0.20 / 13.29 ms │        12.46 / 12.59 ±0.10 / 12.75 ms │     no change │
│ QQuery 8  │     346.13 / 352.35 ±3.70 / 356.77 ms │     328.32 / 331.87 ±2.35 / 335.46 ms │ +1.06x faster │
│ QQuery 9  │    494.85 / 508.23 ±11.47 / 523.28 ms │    467.65 / 481.28 ±11.98 / 501.94 ms │ +1.06x faster │
│ QQuery 10 │        66.41 / 69.39 ±5.05 / 79.45 ms │       63.28 / 69.55 ±10.38 / 90.24 ms │     no change │
│ QQuery 11 │        77.41 / 80.87 ±5.01 / 90.78 ms │        75.25 / 76.01 ±0.55 / 76.67 ms │ +1.06x faster │
│ QQuery 12 │     275.17 / 283.32 ±6.48 / 291.35 ms │     268.42 / 275.32 ±8.34 / 291.34 ms │     no change │
│ QQuery 13 │     383.94 / 390.69 ±5.85 / 397.85 ms │    362.63 / 381.84 ±18.15 / 412.55 ms │     no change │
│ QQuery 14 │     289.76 / 296.50 ±4.22 / 301.73 ms │     282.81 / 286.04 ±2.81 / 289.58 ms │     no change │
│ QQuery 15 │    293.17 / 305.49 ±13.01 / 329.60 ms │     279.41 / 285.93 ±3.91 / 290.71 ms │ +1.07x faster │
│ QQuery 16 │     638.89 / 645.45 ±5.48 / 653.45 ms │     639.54 / 646.77 ±6.12 / 654.71 ms │     no change │
│ QQuery 17 │    644.39 / 662.66 ±13.83 / 683.88 ms │     630.93 / 641.67 ±6.37 / 648.99 ms │     no change │
│ QQuery 18 │ 1319.63 / 1342.57 ±13.59 / 1360.00 ms │ 1319.41 / 1340.76 ±17.08 / 1365.08 ms │     no change │
│ QQuery 19 │        28.26 / 31.05 ±4.61 / 40.23 ms │       27.45 / 36.13 ±10.81 / 55.10 ms │  1.16x slower │
│ QQuery 20 │    522.39 / 539.21 ±12.88 / 561.03 ms │     518.99 / 527.79 ±5.76 / 534.39 ms │     no change │
│ QQuery 21 │     512.34 / 518.71 ±4.77 / 526.56 ms │    507.92 / 519.89 ±10.22 / 534.07 ms │     no change │
│ QQuery 22 │  994.68 / 1009.55 ±10.78 / 1028.24 ms │    981.11 / 993.09 ±8.74 / 1006.20 ms │     no change │
│ QQuery 23 │ 3165.90 / 3203.70 ±19.88 / 3222.90 ms │ 3094.68 / 3153.59 ±52.50 / 3245.29 ms │     no change │
│ QQuery 24 │        40.68 / 42.33 ±2.41 / 47.11 ms │        40.40 / 41.49 ±0.62 / 42.31 ms │     no change │
│ QQuery 25 │    106.69 / 115.50 ±15.34 / 146.13 ms │     105.43 / 113.24 ±6.49 / 121.17 ms │     no change │
│ QQuery 26 │        41.40 / 44.27 ±3.80 / 51.80 ms │        40.84 / 41.56 ±1.02 / 43.57 ms │ +1.07x faster │
│ QQuery 27 │     515.18 / 522.02 ±5.00 / 528.08 ms │    517.67 / 531.76 ±12.74 / 551.75 ms │     no change │
│ QQuery 28 │ 2908.54 / 2945.06 ±27.53 / 2992.50 ms │ 2920.94 / 2949.81 ±18.61 / 2979.39 ms │     no change │
│ QQuery 29 │        38.78 / 41.95 ±5.93 / 53.80 ms │        38.42 / 42.88 ±6.68 / 56.00 ms │     no change │
│ QQuery 30 │    315.16 / 327.35 ±13.00 / 350.63 ms │     307.01 / 315.00 ±4.48 / 319.71 ms │     no change │
│ QQuery 31 │    282.12 / 295.49 ±12.47 / 315.02 ms │    279.07 / 295.47 ±10.76 / 312.60 ms │     no change │
│ QQuery 32 │   970.71 / 987.09 ±13.70 / 1002.96 ms │ 1008.15 / 1044.67 ±41.15 / 1123.47 ms │  1.06x slower │
│ QQuery 33 │ 1523.47 / 1570.55 ±34.97 / 1626.30 ms │ 1545.63 / 1560.58 ±11.48 / 1571.40 ms │     no change │
│ QQuery 34 │ 1493.65 / 1544.09 ±29.10 / 1574.16 ms │ 1555.66 / 1566.32 ±11.72 / 1588.99 ms │     no change │
│ QQuery 35 │    298.90 / 331.34 ±30.87 / 385.45 ms │    311.21 / 328.40 ±16.12 / 349.69 ms │     no change │
│ QQuery 36 │        68.63 / 74.37 ±2.98 / 76.78 ms │        68.23 / 72.87 ±3.17 / 77.21 ms │     no change │
│ QQuery 37 │        35.18 / 37.31 ±2.63 / 42.43 ms │        36.80 / 38.64 ±2.16 / 42.20 ms │     no change │
│ QQuery 38 │        39.32 / 44.51 ±3.49 / 50.07 ms │        43.60 / 48.32 ±4.44 / 53.77 ms │  1.09x slower │
│ QQuery 39 │    150.90 / 161.78 ±11.52 / 181.96 ms │     151.50 / 157.30 ±5.76 / 166.87 ms │     no change │
│ QQuery 40 │        14.11 / 15.80 ±1.98 / 19.24 ms │        15.04 / 18.10 ±4.43 / 26.89 ms │  1.15x slower │
│ QQuery 41 │        13.61 / 14.19 ±0.69 / 15.52 ms │        14.21 / 15.36 ±2.21 / 19.78 ms │  1.08x slower │
│ QQuery 42 │        12.95 / 13.13 ±0.11 / 13.27 ms │        13.56 / 15.38 ±3.00 / 21.36 ms │  1.17x slower │
└───────────┴───────────────────────────────────────┴───────────────────────────────────────┴───────────────┘
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ Benchmark Summary                          ┃            ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Total Time (HEAD)                          │ 20020.25ms │
│ Total Time (partition_lookup_experiment)   │ 19865.38ms │
│ Average Time (HEAD)                        │   465.59ms │
│ Average Time (partition_lookup_experiment) │   461.99ms │
│ Queries Faster                             │          6 │
│ Queries Slower                             │          6 │
│ Queries with No Change                     │         31 │
│ Queries with Failure                       │          0 │
└────────────────────────────────────────────┴────────────┘

Resource Usage

clickbench_partitioned — base (merge-base)

Metric Value
Wall time 105.0s
Peak memory 10.6 GiB
Avg memory 4.1 GiB
CPU user 1025.2s
CPU sys 75.5s
Peak spill 0 B

clickbench_partitioned — branch

Metric Value
Wall time 100.0s
Peak memory 11.5 GiB
Avg memory 4.5 GiB
CPU user 1011.8s
CPU sys 76.3s
Peak spill 0 B

File an issue against this benchmark runner

@adriangb

Copy link
Copy Markdown
Contributor

Benchmark summary for 7c6a3f5f (compared against merge-base 611311c)

This is a fresh run of every suite. It lists only queries that changed by more than 10%. Everything else was within ±10%, which I treat as noise.

Suite Pushdown filters Query HEAD PR Change
tpch10 default — no change >10%
tpch10 off — no change >10%
tpch10 on Q2 107.46 ms 92.52 ms 1.16x faster
tpch10 on Q3 308.31 ms 242.11 ms 1.27x faster
tpch10 on Q4 297.67 ms 206.97 ms 1.44x faster
tpch10 on Q5 439.05 ms 312.88 ms 1.40x faster
tpch10 on Q7 442.02 ms 345.36 ms 1.28x faster
tpch10 on Q10 374.52 ms 320.44 ms 1.17x faster
tpch10 on Q12 303.00 ms 251.53 ms 1.20x faster
tpch10 on Q13 401.97 ms 340.31 ms 1.18x faster
tpch10 on Q16 88.62 ms 73.69 ms 1.20x faster
tpch10 on Q17 491.60 ms 296.74 ms 1.66x faster
tpch10 on Q18 1629.72 ms 1330.86 ms 1.22x faster
tpch10 on Q20 279.70 ms 231.31 ms 1.21x faster
tpch10 on Q21 1234.26 ms 941.86 ms 1.31x faster
tpch10 on Q22 134.42 ms 78.97 ms 1.70x faster
tpch (sf1) default / off — no change >10%
tpch (sf1) on Q12 40.35 ms 34.35 ms 1.17x faster
tpch (sf1) on Q17 71.86 ms 44.79 ms 1.60x faster
tpch (sf1) on Q18 141.28 ms 111.12 ms 1.27x faster
tpcds default (2 runs) Q65 ~130 ms ~73 ms 1.75–1.78x faster
tpcds default (1 of 2 runs) Q46 12.63 ms 11.35 ms 1.11x faster
tpcds off Q65 129.23 ms 70.82 ms 1.82x faster
tpcds on Q17 / Q25 / Q29 / Q50 2.14x / 2.20x / 1.86x / 2.02x faster
tpcds on Q18 / Q64 / Q65 / Q72 1.43x / 1.56x / 1.69x / 1.27x faster
tpcds on Q75 / Q85 / Q95 1.17x / 1.40x / 1.33x faster
clickbench_partitioned default (1 of 2 runs) Q35 296.48 ms 330.52 ms 1.11x slower
clickbench_partitioned default (1 of 2 runs) Q39 139.09 ms 155.91 ms 1.12x slower
clickbench_partitioned on Q37 35.47 ms 39.34 ms 1.11x slower
clickbench_partitioned off Q38 39.32 ms 43.60 ms 1.11x slower
prepared_hash_join default — all within ±6%
hash_join_semi_anti default — all within ±5%

Takeaways

  • @devanbenz: with filter pushdown off, tpch10 shows no query changing by more than 10% in either direction. The earlier regression did not reproduce.
  • With pushdown on, tpch10 and tpcds both get much faster across the board, by up to about 2x.
  • The only slowdowns are on four clickbench queries, each about 1.11x. Each one showed up in only one of the runs, so I read them as noise.

@adriangb

Copy link
Copy Markdown
Contributor

LGTM!

Can you:

  1. Fix conflcits.
  2. Enable Actions on your fork or look at why https://github.com/apache/datafusion/pull/26249/checks?check_run_id=124300653475 failed.

# Conflicts:
#	xtask/src/ci_steps.rs
@adriangb
adriangb enabled auto-merge November 2, 2026 17:54
@adriangb
adriangb added this pull request to the merge queue Nov 2, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Nov 2, 2026
@adriangb
adriangb added this pull request to the merge queue Nov 2, 2026
Merged via the queue into apache:main with commit e77a370 Nov 2, 2026
43 of 44 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

core Core DataFusion crate development-process Related to development process of DataFusion physical-plan Changes to the physical-plan crate proto Related to proto crate sqllogictest SQL Logic Tests (.slt) v56.0.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants