apache / apache/datafusion

Run DataFusion benchmarks regularly and track performance history over time

Open
#5,504 46 comments 4 reactions 0 assignees View on GitHub
enhancement help wanted performance
Dominant language
Rust
Stars
9.3k
Forks
2.4k
Avg merge
3d 7h
Merged PRs (30d)
344

Description

**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**
As we make changes to DataFusion, some changes impact performance and some do not. Right now we mostly rely on reviewers to judge when a change could make an impact on performance, and if so run the appropriate benchmarks.

This means that
1. We may miss some performance regressions (such as https://github.com/apache/arrow-datafusion/issues/5325)
2. Since the benchmarks are not run regularly it is hard to know how to interpret results, and some seem to have bitrotted over time
3. The wide variety of available benchmarks (e.g. https://github.com/apache/arrow-datafusion/issues/5502) makes it hard to know which ones to run and how to determine if performance has improved or regressed for particular changes

**Describe the solution you'd like**
I would like
1. A system that runs DataFusion benchmarks regularly on main
2. Some automated way to see if a particular PR has improved or regressed performance
3. Bonus: a webpage that shows performance over time. Databend has a great example https://perf.databend.rs/

**Suggestion**

I believe conbench, https://conbench.ursa.dev/, which is partially integrated into the repo already, is intended for exactly this usecase. Using conbench would be nice as it appears to be actively maintained and has resources and is already hosted

The integration is https://github.com/apache/arrow-datafusion/tree/main/conbench and was added in https://github.com/apache/arrow-datafusion/pull/1791 by @dianaclarke

You can see its integration as it posts comments on PRs after merge such as https://github.com/apache/arrow-datafusion/pull/5476#issuecomment-1456748444

**Describe alternatives you've considered**
We could use existing timeseries databases and visualizations like grafana to visualize the information

**Additional context**

Contributor guide

Open the contributing guide

Research direction

Start by reading the existing conbench/ integration and the linked PR comment example to understand what is already supported. Define how benchmarks should run regularly on main and how a PR's performance regression or improvement will be identified. Done means scheduled benchmark history and automated PR comparison; the performance webpage is an optional bonus.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
ci-cd, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.