modify determination of physical memory size #1513
Merged
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.
Details
Change memory size determination to avoid linux default, which can result in max linker parallelism (16) and in turn cause out of memory crashes on systems with limited memory (<32GB)
Work item: "Internal", or link to GitHub issue (if applicable).
What were the changes?
Modifies calculation of max memory in the build.
Why were the changes made?
Existing use of cgroups memory limit can cause linker to incorrectly use max parallelism because linux defaults the memory.limit_in_bytes to be the span of virtual memory rounded to page size (PAGE_COUNTER_MAX in the kernel). This means the platform erroneously reports 2^64-4096 available bytes rather than the platform physical memory. The problem was observed in WSL ubuntu 24.04.
How was the outcome achieved?
Modified cmake to determine physical memory from 'free'. Total physical memory in KB is the first number in the output from 'free'.
Additional Documentation:
Alternatively, we could provide a cmake option to set the linker parallelism at the command line.
Approval Checklist
Do not approve until these items are satisfied.