-
Notifications
You must be signed in to change notification settings - Fork 117
[feat] Execute build phase asynchronously #2194
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
Conversation
…t/refactor_policies
…t/refactor_policies
|
Hello @ekouts, Thank you for updating! Cheers! There are no PEP8 issues in this Pull Request!Do see the ReFrame Coding Style Guide Comment last updated at 2022-01-21 17:21:40 UTC |
Codecov Report
@@ Coverage Diff @@
## master #2194 +/- ##
==========================================
- Coverage 86.14% 85.86% -0.29%
==========================================
Files 56 56
Lines 10225 10270 +45
==========================================
+ Hits 8808 8818 +10
- Misses 1417 1452 +35
Continue to review full report at Codecov.
|
…t/refactor_policies
|
We will also need to change the version annotations in the documentation for things added or changed by this PR to mention 3.10 instead of 3.9.3. |
vkarak
left a comment
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.
Just a couple of minor changes still.
vkarak
left a comment
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.
Just a minor comment.
This PR refactors the policies of ReFrame, and especially how the asynchronous policy is managed. Additionally we allow the asynchronous execution of the build phase.
The main ideas of the PR are:
waitstage.current_tasksset) we go into a busy loop in which:current_tasksset (green stages) and try to advance them to the next stage.retiredstack.With the async building a new issue was created. By default ReFrame will build the test locally (and not in the partition). So the
max_jobslimit of the partition might not be good enough for the "forced" local tests (the ones that have the attributelocaltoTrue) + the building jobs. For this reason we added a new limit (current name isrfm_max_jobsbut might change) for these jobs.Finally there is also to possibility to not advance all tests in every loop but we can set a time limit (to avoid for example that all tests in the beginning are serially doing some "setup work", like conflict module resolution or hook that perform heavy operations) without submitting jobs to the schedulers. I would recommend we set arbitrarily the time limit to maybe 10 seconds(?). This would make it more relevant in the beginning, where the tests are setting up, doing submissions etc and not so much after the jobs are submitted and we poll for them.
Closes #1708.
Closes #1617.
Closes #2109.