8357570: [macOS] os::Bsd::available_memory() might return too low values #25657
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.
Currently os::Bsd::available_memory() returns on macOS
vmstat.free_count * os::vm_page_size();
But just using free_count is rather conservative because there are other memory categories on macOS that can be made available too. Unfortunately the different memory categories
There is a bit of additional information here https://developer.apple.com/forums/thread/118867
that confirms that free memory / free_count is only a fraction of what is available.
There is also some info here
https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/AboutMemory.html#//apple_ref/doc/uid/20001880-BCICIHAB
containing this relevant info :
"The inactive list contains pages that are currently resident in physical memory but have not been accessed recently. These pages contain valid data but may be removed from memory at any time. The free list contains pages of physical memory that are not associated with any address space of VM object. These pages are available for immediate use by any process that needs them."
and also about purgeable memory at
https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/CachingandPurgeableMemory.html#//apple_ref/doc/uid/TP40013104-SW1
Progress
Issue
Reviewers
Reviewing
Using
git
Checkout this PR locally:
$ git fetch https://git.openjdk.org/jdk.git pull/25657/head:pull/25657
$ git checkout pull/25657
Update a local copy of the PR:
$ git checkout pull/25657
$ git pull https://git.openjdk.org/jdk.git pull/25657/head
Using Skara CLI tools
Checkout this PR locally:
$ git pr checkout 25657
View PR using the GUI difftool:
$ git pr show -t 25657
Using diff file
Download this PR as a diff file:
https://git.openjdk.org/jdk/pull/25657.diff
Using Webrev
Link to Webrev Comment