RFR: 8292541: [Metrics] Reported memory limit may exceed physical machine memory [v2]

Thomas Stuefe stuefe at openjdk.org
Thu Aug 25 10:14:36 UTC 2022


On Thu, 25 Aug 2022 10:07:15 GMT, Jonathan Dowland <jdowland at openjdk.org> wrote:

>> When the container memory exceeds the physical host's memory, the Java metrics reporting is wrong.
>> 
>> https://bugs.openjdk.org/browse/JDK-8292541
>> 
>> This is the equivalent core-libs fix for Hotspot's [JDK-8292083](https://bugs.openjdk.org/browse/JDK-8292083)
>> (https://github.com/openjdk/jdk/pull/9880)
>
> Jonathan Dowland has updated the pull request incrementally with one additional commit since the last revision:
> 
>   avoid calling subsystem.getMemoryLimit twice

src/java.base/linux/classes/jdk/internal/platform/CgroupMetrics.java line 126:

> 124:         long subs_mem = subsystem.getMemoryLimit();
> 125:         // catch the cgroup memory limit exceeding host physical memory.
> 126:         // treat this as unlimited.

nit: Start sentences uppercase

src/java.base/linux/native/libjava/CgroupMetrics.c line 41:

> 39: Java_jdk_internal_platform_CgroupMetrics_getTotalMemorySize0
> 40:   (JNIEnv *env, jclass ignored)
> 41: {

Why not do it the same way hotspot does? 

  sysinfo(&si);
  avail_mem = (julong)si.freeram * si.mem_unit;

if for some weird reason the APIs return different numbers, at least we use the same numbers in JDK and VM.

-------------

PR: https://git.openjdk.org/jdk/pull/10017


More information about the hotspot-runtime-dev mailing list