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

chore(benchmarks): Rehauling Benchmark Workloads #2716

Merged
merged 32 commits into from
Sep 26, 2024

Conversation

sw360cab
Copy link
Contributor

@sw360cab sw360cab commented Aug 20, 2024

Things changes

Things unchanged

  • Pushing benchmarks results onto a local branch, then benchmark repository will fetch from this into his own gh-pages
    • direct push is possible but requires PAT token to be used

Things TODO (before merging)

Things to consider (performance)

@sw360cab sw360cab requested review from ajnavarro, moul and a team as code owners August 20, 2024 16:17
@sw360cab sw360cab changed the title Rehauling Benchmark Workloads chore(benchmarks): Rehauling Benchmark Workloads Aug 20, 2024
Copy link

codecov bot commented Aug 20, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 60.82%. Comparing base (ca9eb4b) to head (ad27729).
Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #2716      +/-   ##
==========================================
- Coverage   60.91%   60.82%   -0.09%     
==========================================
  Files         564      357     -207     
  Lines       75267    31871   -43396     
==========================================
- Hits        45849    19387   -26462     
+ Misses      26047    10695   -15352     
+ Partials     3371     1789    -1582     
Flag Coverage Δ
contribs/gnodev 61.46% <ø> (ø)
contribs/gnofaucet 14.46% <ø> (ø)
contribs/gnokeykc ?
contribs/gnomd ?
gno.land ?
gno.land-_test.gnokey ?
gno.land-_test.gnoland ?
gno.land-_test.pkgs ?
gnovm ?
gnovm-_test.cmd ?
gnovm-_test.gnolang.native ?
gnovm-_test.gnolang.other ?
gnovm-_test.gnolang.pkg0 ?
gnovm-_test.gnolang.pkg1 ?
gnovm-_test.gnolang.pkg2 ?
gnovm-_test.gnolang.realm ?
gnovm-_test.gnolang.stdlibs ?
gnovm-_test.pkg ?
go-1.21.x ?
go-1.22.x ?
misc ?
misc-_test.genstd ?
misc/autocounterd ?
misc/genproto ?
misc/genstd 80.54% <ø> (ø)
misc/goscan ?
misc/logos 19.88% <ø> (-0.36%) ⬇️
misc/loop ?
tm2 62.09% <ø> (+0.01%) ⬆️
tm2-_test.flappy ?
tm2-_test.pkg.amino ?
tm2-_test.pkg.bft ?
tm2-_test.pkg.others ?

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sw360cab
Copy link
Contributor Author

cc @ajnavarro

@ajnavarro
Copy link
Contributor

@sw360cab answering your questions:

Should solve #2432

I think so.

Are resources available in the GitHub basic runners enough for benchmarks?

Github basic runners AFAIK are virtual machines sharing resources with other runs. From my experience, if we use GitHub default runners, historical benchmark data won't be useful, because it will be inaccurate (sometimes being faster than others, not knowing if it was for something we improved in our codebase, or because the GitHub node was overloaded that run).

Having the same hardware always for benchmarks will also help a ton to compare performance improvements realistically.

are multiple runs spawned in the same hw conditions?

If I understood correctly, I think we should only run one benchmark job at a time.

.benchmarks/README.md Outdated Show resolved Hide resolved
.github/workflows/benchmark_template.yml Outdated Show resolved Hide resolved
@sw360cab
Copy link
Contributor Author

TODO: get back README in .becnhmarks folder and adjust its content.

.github/workflows/benchmark_template.yml Outdated Show resolved Hide resolved
@zivkovicmilos zivkovicmilos self-requested a review August 27, 2024 09:22
Copy link
Member

@zivkovicmilos zivkovicmilos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for fixing this 🙏

@thehowl
Copy link
Member

thehowl commented Sep 13, 2024

Just checked the bugs you mentioned; made a patch for the first one. The second one's solution is likely just to skip boltdb in testing.

thehowl added a commit that referenced this pull request Sep 16, 2024
fixes #2711

The bug in the benchmark was introduced in #2418, which requires to run
initStaticBlocks before running Preprocess, in most cases. (in normal
scenarios, this is run by PredefineFileSet; however this benchmark is
deep into the internals).

Related: #2716. cc/ @sw360cab 

<!-- please provide a detailed description of the changes made in this
pull request. -->

<details><summary>Contributors' checklist...</summary>

- [ ] Added new tests, or not needed, or not feasible
- [ ] Provided an example (e.g. screenshot) to aid review or the PR is
self-explanatory
- [ ] Updated the official documentation or not needed
- [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message
was included in the description
- [ ] Added references to related issues and PRs
- [ ] Provided any useful hints for running manual tests
- [ ] Added new benchmarks to [generated
graphs](https://gnoland.github.io/benchmarks), if any. More info
[here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md).
</details>
@sw360cab sw360cab merged commit 577c462 into gnolang:master Sep 26, 2024
119 of 120 checks passed
@sw360cab
Copy link
Contributor Author

sw360cab commented Oct 18, 2024

Close #2432

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

Successfully merging this pull request may close these issues.

4 participants