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

Move benchmarks to Github Actions and JMH #21719

Open
mbovel opened this issue Oct 7, 2024 · 0 comments
Open

Move benchmarks to Github Actions and JMH #21719

mbovel opened this issue Oct 7, 2024 · 0 comments

Comments

@mbovel
Copy link
Member

mbovel commented Oct 7, 2024

Current Architecture:

  • Benchmarks are run using Bash and Ruby scripts at https://github.com/lampepfl/bench.
  • Specifically, two scripts poll the GitHub API to identify newly merged pull requests or PR comments containing the string "test performance please."
  • These scripts run on a manually maintained server.
  • Benchmark configurations are YAML files and Bash scripts in bench/profiles.

Problems with the Current Architecture:

  • Fragility: The scripts manually parse commit titles to determine which commits to benchmark. This is error-prone and has failed multiple times due to changes in how merge commit titles are formatted.
  • Monitoring Issues: Error handling is often silent, alerts are not functional, and the logs are separate from other CI jobs, making it difficult to track issues.
  • Maintenance Challenges: Scripts written in different languages are spread across various repositories and run on a stateful server, which complicates maintenance.
  • Local Execution Difficulty: It is not straightforward to reproduce benchmark results locally with the current setup.

Proposed System:

  • GitHub Actions: Use GitHub Actions to run the benchmarks (with a custom runner on a machine with a stable CPU frequency). This will provide easier access to logs, better visibility into failures, and enable alerting when benchmarks fail.
  • JMH Benchmark Suite: Adopt a standard JMH benchmark suite to define benchmarks. This will simplify running benchmarks locally, allow the use of JMH features such as profilers and data export, and facilitate the addition of new benchmarks.

I have implemented a proof of concept for the proposed system at mbovel#10 and am currently testing it.

Other things:

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

No branches or pull requests

1 participant