ParallelFrontend scenario added for -Zthreads=8 run, check only#2421
ParallelFrontend scenario added for -Zthreads=8 run, check only#2421azhogin wants to merge 1 commit intorust-lang:masterfrom
Conversation
00b1a2c to
8b6b683
Compare
|
The problem with this is that parallelism is an entirely separate dimension: parallel |
Yes, the idea was to add only "Full/check" at first to estimate the increased execution costs and maybe implement additional modes later. Should I rename |
|
@Kobzol, do you have any thoughts/plans about this? |
|
I definitely have thoughts, but I'm sick now and don't have the energy to comment. I'll try to write something by the end of this week. |
|
I wish @azhogin wrote more about the motivation and goals when posting this.
Having some of the
|
|
Just as a note: we have I think at least one benchmark running with the parallel frontend (but 4 threads). This setup doesn’t look like it should be a scenario to me either, but let’s wait for jakub’s thoughts once he feels better. |
|
So, first, let me say that I agree that we should be preparing for benchmarking the parallel frontend in a better way, and I'm happy to help with that, both on the rustc-perf and the infra side! Regarding the implementation, we should not be adding a new scenario. As Nick said, That being said, we could do something temporary to benchmark only a few situations with the parallel frontend. And we actually already did that last year 😅 We have the serde benchmark running with 4 threads, across all scenarios and profiles. In terms of variance, it does not seem egregiously higher than the base variant (parallel vs serial), at least for the So I guess that if we want to extend this, we have the several options:
So I think that 2) is the way forward. It's not completely trivial to add a new axis to the compilation benchmarks, but it's also not super hard, it "just" needs some boilerplate code that propagates the new config option throughout the collector, the database, the website backend, and then also the frontend. We have a bunch of PRs from last year that added the One additional thing to note is that we haven't yet figured out the best metric to check here, I think. I'm not sure if cycles really work, as they will grow with the number of threads. That being said, we mostly use rustc-perf to compare historical data for the same configuration, rather than to compare across configurations, so it doesn't matter that much. But still it would be good go have a metric that can show small changes in parallel code. Regarding
Happy to talk about that in the #t-infra stream on Zulip. I think that we have enough capacity now to add more benchmarks, so that shouldn't be a big issue. |
That's what this PR attempts to achieve, covering all the benchmarks, but only for check profiles, because using all the profiles would be too much work. The number of threads depends on the number of cores on the benchmarking machines, if they have 8+ cores then I'd prefer to use
I don't think we should go this way eventually, it will ruin icount-based benchmarking which is used as a source of truth for any changes not involving redistributing work between threads.
Only wall time I guess. |
@azhogin Could you implement this ^^^ suggestion? |
Adds
Scenario::ParallelFrontendfor -Zthreads=8 compilation, check profile only.