Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set up repo where we can push benchmark results #473

Closed
andygrove opened this issue Oct 28, 2022 · 6 comments
Closed

Set up repo where we can push benchmark results #473

andygrove opened this issue Oct 28, 2022 · 6 comments
Labels
enhancement New feature or request

Comments

@andygrove
Copy link
Member

andygrove commented Oct 28, 2022

Is your feature request related to a problem or challenge? Please describe what you are trying to do.
We do not have a formal way of tracking benchmark performance over time. I have been running benchmarks occasionally and I have some spreadsheets that I have shared but this is not ideal.

Describe the solution you'd like
Create a new GitHub repo datafusion-contrib/benchmark-automation and define a structure so that anyone can create a PR to submit results from a benchmark run for DataFusion or Ballista.

Later, we can add scripts to produce charts and look for regressions.

Describe alternatives you've considered
Keep doing this in an ad-hoc way.

Additional context
None

@andygrove andygrove added the enhancement New feature or request label Oct 28, 2022
@andygrove
Copy link
Member Author

@Dandandan @isidentical What do you think? This could apply to DataFusion as well.

@isidentical
Copy link

I think this might have an interesting use. Each user would have to run at least two revisions when they are submitting since there is no common baseline (everyone's machines & runtime conditions are different). E.g. a script that automatically runs the last released version as the baseline and the last commit from the master branch as the target revision (and maybe we can add options to also compare it with older revisions to get a holistic sense; v12 vs v13 vs HEAD). After a certain number of samples, we should at least start seeing the trend in performance (and most importantly detect obvious regressions) which I think would be really cool 💯

@Dandandan
Copy link
Contributor

Sounds great!
Maybe one thing we can start with is running all benchmark queries and outputting the results to e.g. a CSV file (e.g. with cli options --all --csv). This also helps with just running the benchmarks while developing (instead of having to run them one by one).
We could just store this output in a repo with some metadata like commit hash, machine details etc.

@andygrove
Copy link
Member Author

Ballista already has the option to produice a summary JSON File:

    /// Path to output directory where JSON summary file should be written to
    #[structopt(parse(from_os_str), short = "o", long = "output")]
    output_path: Option<PathBuf>,

@andygrove
Copy link
Member Author

I updated the PR description to suggest creating this repo at datafusion-contrib/benchmark-automation instead of as an Apache Arrow subproject. I figure we dump automation scripts into this repo as well.

@andygrove
Copy link
Member Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants