Skip to content

docs: refresh benchmarking.md with SF1000 results after #2315 (AQE default-on) - #2336

Open
andygrove wants to merge 1 commit into
apache:mainfrom
andygrove:refresh/benchmarking-sf1000-post-2315
Open

docs: refresh benchmarking.md with SF1000 results after #2315 (AQE default-on)#2336
andygrove wants to merge 1 commit into
apache:mainfrom
andygrove:refresh/benchmarking-sf1000-post-2315

Conversation

@andygrove

Copy link
Copy Markdown
Member

Summary

Result changes vs previous refresh

Q11 now completes (was failing on the pre-#2315 build with the client-side 16 MiB gRPC OutOfRange). The AQE plan rewrites in #2315 shrink Q11's encoded plan below the raised 128 MiB ceiling.

Q10 regressed (was 52.99s, now FAIL) — a SortPreservingMergeExec exhausts its per-task fair memory pool under the new AQE plan. Tracked in #2321.

Q21, Q22 still fail; observed failures were connection-level (h2 body read / TCP connect refused) after Q20, consistent with the scheduler becoming unresponsive at end of suite.

Total on the comparable 18-query subset (Q1–Q9, Q11–Q20): Ballista 617.51s vs Spark 3.4 664.17s.

Test plan

  • docs/build.sh renders benchmarking.md without warnings
  • Table renders correctly in the Sphinx HTML build
  • All footnote link refs resolve

…pache#2315)

Same reference cluster and configuration as the previous refresh
(696ca29). Ballista rebuilt at the merge commit of apache#2315
(AQE default-on, max_partitions_per_task=0 default). Highlights:

- Q11 now completes (was failing on the pre-apache#2315 build with the
  client-side 16 MiB gRPC OutOfRange). AQE plan rewrites shrink Q11's
  encoded plan below the raised 128 MiB ceiling.
- Q10 regressed (was 52.99s, now FAIL) — a SortPreservingMergeExec
  exhausts its per-task fair memory pool under the new AQE plan.
  Tracked in apache#2321.
- Q21, Q22 still fail; the observed failures were connection-level
  (h2 body / tcp connect) after Q20, consistent with the scheduler
  becoming unresponsive at end of suite.
- Total on the comparable 18-query subset (Q1-Q9, Q11-Q20):
  Ballista 617.51s vs Spark 3.4 664.17s.

Also documents that ballista.scheduler.max_partitions_per_task now
defaults to 0 (unbounded) since apache#2315, previously 1.
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Aug 17, 2026
@milenkovicm

Copy link
Copy Markdown
Contributor

Would it be possible to compare ballista and spark plans? it might give us some clue where to look, is it planning or physical operators or infrastructure or all previous the problem

@Dandandan

Copy link
Copy Markdown
Contributor

Would it be possible to compare ballista and spark plans? it might give us some clue where to look, is it planning or physical operators or infrastructure or all previous the problem

I looked at SF=10 plans yesterday, many plans looks pretty good but there are some categories:

  • Wrong join order (most of them before AQE)
  • No dynamic filters (shared)
  • Not always broadcast joins when beneficial (could be join order as well, but also we don't support broadcasting all joins yet)
  • Also I suspect at higher target_partitions we create too many shuffle files which might lead to connection issues / timeouts etc. (would need to replicate this) in e.g. SortPreservingMergeExec
  • Semi-join pushdown (Q18 could benefit)

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

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants