-
Notifications
You must be signed in to change notification settings - Fork 419
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
fixes: slow multicore performance on task runners #1077
fixes: slow multicore performance on task runners #1077
Conversation
Thanks for putting this together. 👍 What did you do to ensure that this change does lead to a slow down in other OTP/Elixir combinations than the ones mentioned in the linked issue? i.e. how do we make sure that this change does not improve performance for some setups while worsening it for others? |
All tests run on a Radeon 5900x CPU (12c/24t) on Linux Kernel 6.5.3 Credo codebase took 0.1s to load, large 0.9s in all cases I could not install erlang <= 23 - guessing due to crypto changes?
Note: This does not include single/split-core performance common on ci systems. In CI for 25.3/1.15.6: After rereading my initial issues in the issue i created, it does seem like whatever performance regression that existed in 1.15 or otp 26 may have been fixed prior to me running this test... Edit: elixir 1.15.3 - otp 26.0 - Problem exists This branch also does fix the issue in 26.0-26.0.2 |
It may be also worth removing
See: https://hexdocs.pm/elixir/1.15.0/Task.html#async_stream/5-options |
I'm still seeing significant slowness with OTP 26.1 |
@Eein Will publish an RC with some other patches shortly 👍 |
@Eein thank you for your effort and complete report ❤️ |
@Eein @justincy @ulissesalmeida This is published as part of |
closes #1058
This PR removes the unnecessary worker code that was lowering performance on multicore systems.
I've used async streams instead of map/each on async await and updated the runner code to use an async stream keeping the exec.max_concurrent_check_runs to keep the same expected behaviour and make the code more modern.
This should resolve slow runs on multicore machines :)
Feel free to add any suggestions.