What If... stacker didn't exist - #158759
Conversation
|
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
What If... stacker didn't exist
This comment has been minimized.
This comment has been minimized.
|
💥 Test timed out after |
|
@bors try @rust-timer queue |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
What If... stacker didn't exist
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Finished benchmarking commit (c57b15c): comparison URL. Overall result: ❌✅ regressions and improvements - please read:Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf. Next, please: If you can, justify the regressions found in this try perf run in writing along with @bors rollup=never Instruction countOur most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.
Max RSS (memory usage)Results (primary 2.0%, secondary 3.4%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesResults (secondary -0.7%)A less reliable metric. May be of interest, but not used to determine the overall result above.
Binary sizeThis perf run didn't have relevant results for this metric. Bootstrap: 485.944s -> 484.59s (-0.28%) |
|
For a 512mb stack limit, the only regression (+0.74% to +0.78%) is the secondary I'm pretty happy with the results so far though. |
|
@bors try |
This comment has been minimized.
This comment has been minimized.
What If... stacker didn't exist
This comment has been minimized.
This comment has been minimized.
|
@saethlin Why queue two crater runs t the same time? |
|
Because I didn't realize the rerun was started already |
|
@craterbot abort name=pr-158759-2 |
|
🗑️ Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
🚧 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
🎉 Experiment
Footnotes
|
|
Ok that crater run removed another few hundred spurious results and didn't turn up any interesting regressions or fixes. While we could keep whittling it down to zero, at this point I don't think there's anything more to be learned here. |
|
I find it somewhat suspicious that the spurious regressions are build OOM, while the spurious fixes are prepare fail. |
|
I'll queue another crater (they're quick at this point) but can you say why you find it suspicious? Less OOMs would be expected. I would not expect more OOMs from this change as it removes one source of them. At worst it should turn them into stack overflows, which I'm just not seeing. @craterbot check start=master#c397dae808f70caebab1fc4e11b3edf7e59f58c7 end=try#e5e97e3ef0ee95d34bea49cdac051ed1bbac01df crates=https://crater-reports.s3.amazonaws.com/pr-158759-3/retry-regressed-list.txt p=1 |
|
👌 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
Can this change increase memory consumption of rustc processes, causing other rustc processes to fail? |
|
It shouldn't increase the maximum memory usage. It can hold on to memory for longer (the duration of the threads) rather than releasing it more quickly. I guess if the machine is already near its limits this could make a difference. But that's always a risk, depending on how processes end up being scheduled. |
Isn't this typical of crater runs? The crater system oversubscribes nodes, OOMs until you reduce the number of jobs sufficiently is designed into the system. It just sucks. |
|
🚧 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
🎉 Experiment
Footnotes
|
This does not impact memory usage since this is only reserved, not committed, memory; it could crash if we allocate more than the commit limit and overcommit is disabled but for such small numbers it practically can't happen. This is an alternative to using `stacker` to grow the stack on-demand; rustc is transitioning to the same model - rust-lang/compiler-team#1011. 16MiB was chosen because when that was chosen as the limit in rustc (rust-lang/rust#158759), crater succeeded for practically all crates, so it should be enough for us as well. It's also two times the current number (8MiB) which is a lot.
This does not impact memory usage since this is only reserved, not committed, memory; it could crash if we allocate more than the commit limit and overcommit is disabled but for such small numbers it practically can't happen. This is an alternative to using `stacker` to grow the stack on-demand; rustc is transitioning to the same model - rust-lang/compiler-team#1011. 16MiB was chosen because when that was chosen as the limit in rustc (rust-lang#158759), crater succeeded for practically all crates, so it should be enough for us as well. It's also two times the current number (8MiB) which is a lot.
View all comments
The OS is great at growing the stack on demand. All we need do is reserve an upper limit of virtual memory. Modern host systems have terabytes of virtual memory available to the process (if not orders of magnitude more) so even a relatively large upper limit is a drop in the ocean.
So I want to see what happens if we just used a larger stack size instead of using stacker to manually grow the stack. I've set a stack size that's larger then we'd probably ever want for the purposes of this experiment.
Experiments run
512mb: c57b15c (perf)
16mb: e5e97e3 (perf, crater 1, crater 2)
8mb: 45a2f24 (fails tests)