awful (2): prevent alloc elimination and size better #1038
Merged
+22
−3
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'd tested the commit introducing this hack with one additional detail I'd overlooked: an
eprintln!("balloon: {:p}", balloon.as_ptr()). This prevented rustc/LLVM from optimizing out the allocation. Of course, it would be unsightly to have a randomeprintln!()committed so I removed that in the PR, not realizing the allocation was optimized out entirely.Along the way testing on a racklette had one VM where the heap grew to ~450 MiB, beyond the ~350 MiB the balloon would have gotten things. So grow the constant earmark a bit. RFD 413 estimates Propolis heap as 512 MiB at worst, versus the balloon's worst case of ~483 MiB (on top of the baseline 30 MiB or so of heap, so a bunch of VMs with 11 local disks are a bit more than budgeted. RFD 413 doesn't think too hard about "what if there are 256 propolises" so the whole area is a bit weird.)
I've surgically swapped this into London where
fill.fiohas been running for about 30 minutes without issue, and from here I'll let it keep going!