Add cron job to trigger Java JMH micro-benchmarks weekly #23388
Add cron job to trigger Java JMH micro-benchmarks weekly #23388lukecwik merged 2 commits intoapache:masterfrom
Conversation
|
Our default is to run jobs like this every 6 hours. What are the constraints that limit this to weekly? (Also you need to run the seed job to get your Jenkins changes to load. I believe |
|
Run Seed Job |
|
Run Java Jmh benchmarks |
c2118d0 to
95d9516
Compare
|
@apilloud Thanks a lot! The "problem" with JMH benchmarks is that they take a massive amount of time. They are running a large number of iterations including various forks and warmups to produce a more stable and accurate number. With the current (default) JMH settings these would run for ~ 14 hours: If using just 3 forks it's running for ~ 8.5 hours, which seems more reasonable. |
Codecov Report
@@ Coverage Diff @@
## master #23388 +/- ##
==========================================
+ Coverage 73.40% 73.43% +0.02%
==========================================
Files 718 718
Lines 95652 95680 +28
==========================================
+ Hits 70215 70263 +48
+ Misses 24126 24106 -20
Partials 1311 1311
Flags with carried forward coverage won't be shown. Click here to find out more.
📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
|
Run Seed Job |
95d9516 to
1104ea5
Compare
|
Run length of over ~3 hours is going to be disruptive to existing tests regardless of run length. I think the behavior of Jenkins is to just run tests less frequently? Daily would be a good start. Our current tests run every 6 hours and it looks like we are busy ~25% of the time: https://ci-beam.apache.org/label/beam-perf/load-statistics?type=hour |
|
We could easily split the job into two JMH runs since there are two JMH projects currently. We can also split it very finely if we utilize |
|
Sorry @lukecwik, I was off for a couple of days. Thanks for merging 👍
The benchmarks of core take ~ 7h, compared to ~ 1,5h for the fn harness. That won't be enough yet.
For parametrized benchmarks runtimes vary a lot, but it would certainly be possible to split the benchmarks into equal sized chunks this way. Though, I'm a bit worried that this isn't maintainable long term. Of course it doesn't have to be perfect, but every new benchmark has to be added manually and scheduled appropriately... I'll think a bit further about it. |
|
I agree that |
|
@lukecwik looking at the benchmark runtimes, we could split the benchmarks into 3 groups and run them 2/3 times weekly
I was briefly looking at implementing this, but without a plugin to conditionally run steps ( |
|
Do you think we can get it listed on the getting started page http://metrics.beam.apache.org/d/1/getting-started?orgId=1 ? |
Absolutely, wasn't aware of the the necessary tag 👍 See #24335 |

Add cron job to trigger Java JMH micro-benchmarks weekly on Sundays (addresses #22238).
Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
R: @username).addresses #123), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, commentfixes #<ISSUE NUMBER>instead.CHANGES.mdwith noteworthy changes.See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)
See CI.md for more information about GitHub Actions CI.