-
Notifications
You must be signed in to change notification settings - Fork 326
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
Fold output of each benchmark #10914
Conversation
|
||
@Override | ||
public void startBenchmark(BenchmarkParams benchParams) { | ||
output.println("::group::" + benchParams.getBenchmark()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ::group::
format seems to be mentioned at this discussion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is documented here: https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#grouping-log-lines
Although the documentation is not very detailed.
37d0385
to
b1ef6fb
Compare
Update: solved in 9ba4428 I don't know how to print plain line without any prefix in our Rust build system. If I use |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a good idea. I am interested in how the end result will look like. I had no idea that there is some output grouping for GH actions. We could probably integrate this functionality even for other actions.
Locally the command lines seem to be determined fine. If I execute, I see: enso$ ./run backend benchmark runtime --minimal-run
INFO ide_ci::program::command: sbt ℹ️ [info] # *** WARNING: Use non-forked runs only for debugging purposes, not for actual performance runs. ***
INFO ide_ci::program::command: sbt ℹ️ [info] Iteration 1: 102.137 ms/op
::endgroup::
::group::org.enso.interpreter.bench.benchmarks.semantic.ArrayProxyBenchmarks.sumOverComputingProxy
INFO ide_ci::program::command: sbt ℹ️ [info] # Run progress: 12.68% complete, ETA 00:01:29
INFO ide_ci::program::command: sbt ℹ️ [info] # Fork: N/A, test runs in the host VM e.g. both Finally it does something reasonable! |
Certain parts of the stdlibs bench run output look nice as well. Some messages "escape" the grouping. Not sure why and whether that matters that much to prevent integration. Hypothesis:
Let's try to switch to stdout - stdlib benchmark is running. Update: The latest stdlibs output looks pretty decent. Looks like c698ef7 helped. |
No longer convinced this is needed at all
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After some thinking, I believe that your changes are unnecessary, and seeing the current folded output, it is very messy - The group for benchGenerateList obviously contains output even from some other benchmark for example.
May I ask you again to explain your use-case that this folding will solve, and why do you think it is needed?
Note that at the end of each benchmark run (the very end of the whole job output) there is table-like structure with all the scores. In your case it is at https://github.com/enso-org/enso/actions/runs/10627416248/job/29460495368#step:7:1886. If you want to see the output for a single benchmark, you can just type its name in the search field. You would need to do that even if the output was folded.
EDIT: If you still think the folding will be beneficial, I will revoke my PR reject after I see that the folding works and that no output is assigned to a wrong group.
I am sad you have changed your mind. I believe that with few more homey touches, we can make this folding work well and increase overall satisfaction.
Right now the log stops at 22% of stdlibs benchmark run so the table isn't really visible.
I've just tried and folding has no negative effect on searching. These
The latest stdlibs output looks pretty decent. Looks like c698ef7 helped. |
…e benchOnly to see whole output
The newest idea c36fdad to solve the too huge log issue is to differentiate between execution of all benchmarks and execution of a selected benchmark(s):
As a result the CI run will be less verbose, but one will have a chance to re-run individual benchmark locally and see whole output. |
Yes, with the latest run the table is finally visible.
That is still possible even the output is folded.
Yes, consider revoking your reject. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The latest output seems reasonable. The fact that when all the benchmarks are run, the output is less verbose is good - it helps to be able to interactively browse the output on the CI.
(cherry picked from commit 89c5b31)
Pull Request Description
This PR improves output of benchmarks run on GitHub Actions CI to group and fold output for each benchmark.
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:
Java