[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-hotspot-runtime-dev
Subject:    Re: RFR: 8260349: Cannot programmatically retrieve Metaspace max set via JAVA_TOOL_OPTIONS [v4]
From:       David Holmes <david.holmes () oracle ! com>
Date:       2021-01-28 13:14:35
Message-ID: 9f9ca94c-597d-9c4a-dbff-78c43f6fc633 () oracle ! com
[Download RAW message or body]

Hi Thomas,

Thanks for taking a look at this.

On 28/01/2021 9:33 pm, Thomas Stuefe wrote:
> On Thu, 28 Jan 2021 10:53:02 GMT, David Holmes <dholmes@openjdk.org> wrote:
> 
> > > A simple but long standing bug whereby the MemoryPool MXBean only sees the \
> > > value of MaxMetaspaceSize if it was set directly on the command-line and not by \
> > > other means (e.g. env var). 
> > > Fix is to check !FLAG_IS_DEFAULT rather than FLAG_IS_CMDLINE.
> > > 
> > > Expanded regression test added (based on the reproducer in the JBS issue) that \
> > > checks all the ways to set the flag: cmd-line, env-var, hotspotrc file 
> > > Testing: regression test (before and after fix)
> > > tiers 1-3 (in progress)
> > > 
> > > Thanks,
> > > David
> > 
> > David Holmes has updated the pull request with a new target base due to a merge \
> > or a rebase. The incremental webrev excludes the unrelated changes brought in by \
> > the merge/rebase. The pull request contains seven additional commits since the \
> > last revision: 
> > - Further formatting updates from Aleksey
> > - Merge branch 'master' into 8260349
> > - Cleaned up test formatting based on Aleksey's review
> > - Added missing test case for flag not set
> > - Boost max from 1MB to 9MB as 1MB was too low for Aarch64 to startup
> > - Reduced test code using loop for env-vars
> > - 8260349: Cannot programmatically retrieve Metaspace max set via \
> > JAVA_TOOLS_OPTIONS
> 
> Hi David,
> 
> this looks fine to me. Some nits below, but feel free to ignore them. Thanks for \
> fixing this. 
> ..Thomas
> 
> src/hotspot/share/services/memoryPool.cpp line 201:
> 
> > 199: size_t MetaspacePool::calculate_max_size() const {
> > 200:   return !FLAG_IS_DEFAULT(MaxMetaspaceSize) ? MaxMetaspaceSize :
> > 201:                                               MemoryUsage::undefined_size();
> 
> Somewhat more robust may be to compare against max_uint. In case we ever change the \
> default to not be infinite. But I am fine with this too.

I'll leave it as is.

> test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeEnvVarTest.java line 66:
> 
> > 64:
> > 65:     public static void main(String... args) throws Exception {
> > 66:         final String max = String.valueOf(9 * 1024 * 1024); // 9 MB
> 
> You could set this to a much larger value for this test, since it won't change how \
> the test works and would not cause more footprint. Does not matter here but may \
> matter if we ever backport this, since before jep387 initial metaspace usage was a \
> lot higher (400K vs 5-6m).

Actually the 9MB was selected because I found that on earlier versions 
it was a lot higher. 8M failed and 9M passed.

Thanks again.
David
-----

> -------------
> 
> Marked as reviewed by stuefe (Reviewer).
> 
> PR: https://git.openjdk.java.net/jdk/pull/2275
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic