RFR (S) 8024517: runtime/CDSCompressedKPtrs/XShareAuto.java failed with RuntimeException
harold seigel
harold.seigel at oracle.com
Tue Sep 17 18:15:36 PDT 2013
Hi,
Please review this updated webrev for bug 8024517:
http://cr.openjdk.java.net/~hseigel/bug_8024517.2/
<http://cr.openjdk.java.net/%7Ehseigel/bug_8024517.2/>
The updates are based on comments from Coleen and David. CDS will be
off by default when -server is specified and on by default for -client.
Also, conditional compilation flags were put around function
no_shared_spaces() in arguments.cpp to fix a compilation problem when
building -client.
The ObjectAlignmentInBytes reference was removed from the test along
with the 64-bit requirement.
Thanks, Harold
On 9/17/2013 3:22 PM, Coleen Phillimore wrote:
>
> Hi David,
>
> On 09/16/2013 11:40 PM, David Holmes wrote:
>> On 17/09/2013 12:53 AM, harold seigel wrote:
>>> Hi David,
>>>
>>> Thanks for the review.
>>
>> Only "attempted review" at that stage :)
>>
>>> My proposed fix maintains the current behavior for the client VM, which
>>> is that CDS is off by default if running on a server class machine.
>>> (Fwiw: the test for server class machine
>>> (os::is_server_class_machine())
>>> usually returns FALSE for c1 because NeverActAsServerClassMachine
>>> defaults to TRUE for c1 for arm, x86, ppc, and Sparc.)
>>>
>>> The fix only changes the behavior for -server. Previously, CDS was off
>>> by default for -server only if the JVM was running on a server class
>>> machine. With this change, CDS will always be off by default when
>>> -server is specified. The fix implements this change by no longer
>>> checking for a server class machine when running the server VM.
>>
>> Okay I think I have it now. This all seems rather convoluted - not
>> sure why we care about server-class-machine to make a CDS choice?
>
> We don't care about server class machine. We want to turn CDS off by
> default for -server because it degrades performance. This
> server-class-machine means -server almost all of the time but in this
> corner case didn't mean -server. So the gist of Harold's change is
> to turn it off for -server, which we want.
>
> Looking at Harold's change, we should just turn off CDS by default
> (ie. unless specified) under #ifdef COMPILER2 and not check for server
> class machine for the client compiler.
>
>>
>>
>> That aside what do we document about the CDS behaviour? Does this
>> change need CCC request and/or updates to docs?
>
> I think it's not an interesting corner case and not really intended as
> a change in behavior. It's what we assumed it was doing in the first
> place.
>
> I can't comment on the test right now.
>
> Coleen
>>
>>> The test failure reported in the bug occurred because the test was run
>>> with -server on a non server class machine and CDS was not disabled as
>>> expected.
>>
>> Ok. Not sure why the test is 64-bit only though and why does it refer
>> to ObjectAlignmentInBytes? Is this a copy/n/paste error when the test
>> was created? I see this under the "compressed Kptrs" which is
>> presumably 64-bit only, but the tests doesn't see 64-bit related ??
>>
>> Thanks,
>> David
>>
>>> Thanks, Harold
>>>
>>> On 9/14/2013 3:41 AM, David Holmes wrote:
>>>> Hi Harold,
>>>>
>>>> Sorry I am a bit confused about the problem and solution. CDS should
>>>> be off when using the server VM - right? But this code:
>>>>
>>>> ! #ifndef COMPILER2
>>>> ! if (is_server_class_mach)
>>>> ! #endif
>>>>
>>>> only affects the client VM, so you seem to be saying that CDS should
>>>> be off on a client VM when running on a server class machine ???
>>>>
>>>> David
>>>>
>>>> On 14/09/2013 5:05 AM, harold seigel wrote:
>>>>> Hi,
>>>>>
>>>>> Please review this small fix for bug 8024517. This test failed
>>>>> when run
>>>>> on a small system because CDS was not disabled by default.
>>>>> Although the
>>>>> test was run with '-server', CDS was not disabled because function
>>>>> os::is_server_class_machine() returned FALSE. This fix disables
>>>>> CDS by
>>>>> default if either os::is_server_class_machine() returns TRUE or the
>>>>> server compiler is running.
>>>>>
>>>>> Also, the '-server' option was added to the test's '-Xshare:dump'
>>>>> command to ensure that the CDS region gets created by the same JVM
>>>>> that
>>>>> tries to read it.
>>>>>
>>>>> The change was tested with the XShareAuto.java test, by hand using
>>>>> the
>>>>> NeverActAsServerClassMachine and AlwaysActAsServerClassMachine
>>>>> options,
>>>>> the UTE vm quicktests, and JPRT.
>>>>>
>>>>> Open webrev at: http://cr.openjdk.java.net/~hseigel/bug_8024517/
>>>>> <http://cr.openjdk.java.net/%7Ehseigel/bug_8024517/>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8024517
>>>>>
>>>>> Thanks! Harold
>>>
>
More information about the hotspot-runtime-dev
mailing list