RFR: 8334489: Add function os::used_memory
Erik Österlund
eosterlund at openjdk.org
Wed Jun 19 08:28:11 UTC 2024
On Tue, 18 Jun 2024 14:11:41 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:
> A function os::used_memory is needed for GC ergonomics.
>
> A naïve implementation is:
>
> ```c++
> julong os::used_memory() {
> return os::physical_memory() - os::available_memory();
> }
>
>
> This function does not work well in a containerized environment, as the amount of physical memory may change. To understand why, we must look under the hood.
>
> ```c++
> julong os::used_memory() {
> return os::physical_memory() - os::available_memory();
> }
>
> // can be expanded into
>
> julong os::used_memory() {
> // The os::physical_memory() call
> julong mem_physical1 = OSContainer::memory_limit_in_bytes();
> // The os::available_memory() call
> julong mem_used = OSContainer::memory_usage_in_bytes();
> julong mem_physical2 = OSContainer::memory_limit_in_bytes();
>
> // Uh-oh: mem_physical1 may differ from mem_physical2 at this point
> // That means that this number is wrong
> return mem_physical1 - (mem_physical2 - mem_used);
> }
>
>
> The fix is to expose OSContainer::memory_usage_in_bytes if it's available, as this call does not depend on OSContainer::memory_limit_in_bytes. The default implementation will use the naïve implementation.
Looks good to me! Thanks for fixing.
-------------
Marked as reviewed by eosterlund (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/19772#pullrequestreview-2127491819
More information about the hotspot-runtime-dev
mailing list