-
Notifications
You must be signed in to change notification settings - Fork 105
[Auditor] Make the auditor multithreaded #1364
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
b7d2e8a
to
0bf1332
Compare
e5a60e0
to
4bd3af6
Compare
Good news: building locally JuliaPackaging/Yggdrasil#10479 (with hot ccache 🔥) goes from
to
when using 16 threads. Clearly scaling isn't ideal, but we have to put locks around all uses of the sanbox because otherwise it's a mess, but a 2x speedup is more than welcome. Bad news: we need to put more locks around all logging macros because they aren't thread-safe and printing is messy, but hopefully they won't slow things down massively. Note to self: we may be able to replace calls to
|
a867b21
to
d4af135
Compare
a69f9e4
to
583af47
Compare
…de the sandbox" This reverts commit 583af47.
There seems to be some issues with threading, tests don't pass, but this should also not be a time-critical pass, so making it serial shouldn't be _too_ bad.
With
If CI is happy, this should be in a good shape. Edit: sadly I had to revert this because it seems to introduce too many race conditions, especially in testing by capturing log messages. Better long-term solution is implementing #670 (have real "audit passes" objects which can be inspected for testing, rather than capturing logs in the ether, and also reorganise the passes to be more amenable to take advantage of parallelism), but here I'm trying to get basic threading working for the sake of making builds faster. |
9ef09ec
to
726e3ad
Compare
726e3ad
to
bfbe34e
Compare
@@ -1,4 +1,5 @@ | |||
using ObjectFile.ELF | |||
using Patchelf_jll: patchelf |
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.
I see BB2 is already using patchelf, which is great: https://github.com/JuliaPackaging/BinaryBuilder2.jl/blob/54202516e430264dc6060f763c55a7f0fbbd542a/BinaryBuilderAuditor.jl/src/Scanning.jl#L1. But at a quick glance I don't see multi-threading enabled yet.
CI is happy now, let's see how it goes in production |
Completely untested, but saving my progress for now. Let's see how far we get with this.