configuring with --with-jvm-variants=minimal,server makes cds disappear in server
Erik Joelsson
erik.joelsson at oracle.com
Thu Jan 16 19:16:19 UTC 2020
On 2020-01-16 10:48, Ioi Lam wrote:
>
>
> On 1/16/20 9:09 AM, Erik Joelsson wrote:
>> I would lean towards changing the check from "if any of the variants
>> do not support CDS, disable it" to "if any of the variants support
>> CDS, enable it". The cds jvm feature is only added to the variants
>> that support it anyway.
>>
>> If you do this, you probably need to figure out how to explicitly
>> only generate the archive for the supported jvm variants in
>> Images.gmk too. Not sure if the archive is jvm variant dependent or
>> if the layout even supports multiple variants. It will likely get messy.
>
> The CDS archive is dependent on the exact libjvm.so, so each JDK image
> should creates its own CDS archive during the build.
>
> I think this can be handled emitting a different value for
> "BUILD_CDS_ARCHIVE" in the spec.gmk of each variant.
>
Building with multiple JVM variants does not create separate JDK images,
the libjvm.so files simply end up in:
lib/server/libjvm.so
lib/minimal/libjvm.so
I don't think the default archive takes that into account.
/Erik
> Thanks
> - Ioi
>
>>
>> /Erik
>>
>> On 2020-01-16 08:22, Baesken, Matthias wrote:
>>> Hello, thanks for looking into it .
>>> Should I do a check just looking into single JVM configs, something
>>> like
>>>
>>> AC_DEFUN([HOTSPOT_IS_JVM_VARIANT],
>>> [ [ [[ " $JVM_VARIANTS " == " $1 " ]] ] ])
>>>
>>> if HOTSPOT_IS_JVM_VARIANT(zero) || HOTSPOT_IS_JVM_VARIANT(minimal)
>>> || HOTSPOT_IS_JVM_VARIANT(core); then
>>>
>>> instead of
>>>
>>> AC_DEFUN([HOTSPOT_CHECK_JVM_VARIANT],
>>> [ [ [[ " $JVM_VARIANTS " =~ " $1 " ]] ] ])
>>>
>>> if HOTSPOT_CHECK_JVM_VARIANT(zero) ||
>>> HOTSPOT_CHECK_JVM_VARIANT(minimal) ||
>>> HOTSPOT_CHECK_JVM_VARIANT(core); then
>>>
>>>
>>> This should remove the error in case of multi-JVM configs .
>>> Or maybe the whole check ( if HOTSPOT_CHECK_JVM_VARIANT(zero) ||
>>> HOTSPOT_CHECK_JVM_VARIANT(minimal) ||
>>> HOTSPOT_CHECK_JVM_VARIANT(core); then .... fi )
>>> might be removed , I see not so much value in it because in case
>>> one sets --enable-jvm-features directly the check isn’t done .
>>>
>>> I opened bug :
>>>
>>> https://bugs.openjdk.java.net/browse/JDK-8237374
>>>
>>> JDK-8237374 : configuring with --with-jvm-variants=minimal,server
>>> makes cds disappear in server
>>>
>>>
>>> Best regards, Matthias
>>>
>>>
>>>
>>>
>>>> This does indeed look like a bug to me. At least at Oracle, we no
>>>> longer
>>>> build any multi JVM configs regularly, so things like this falls
>>>> through
>>>> the cracks.
>>>>
>>>> /Erik
>>>>
>>>> On 2020-01-16 02:18, Baesken, Matthias wrote:
>>>>> Hello, I noticed the following strange "feature" (or is it a bug?) .
>>>>> When building 2 VM variants in one build and using
>>>>>
>>>>> --with-jvm-variants=minimal,server
>>>>>
>>>>> For this, the build works nicely. But I notice that in the server
>>>>> VM, cds is
>>>> removed.
>>>>> Instead of
>>>>>
>>>>> checking if cds should be enabled... yes
>>>>>
>>>>> I get ( with the following patch that adds tracing) :
>>>>>
>>>>> configure: WARNING: ENABLE_CDS set to false because we found a
>>>> minimal, core or zero JVM.
>>>>> checking if cds should be enabled... no
>>>>> ...
>>>>>
>>>>> * JVM features: minimal: 'compiler1 minimal serialgc'
>>>>> server: 'compiler1
>>>> compiler2 epsilongc g1gc jfr jni-check jvmti management nmt parallelgc
>>>> serialgc services vm-structs'
>>>>> (patch is
>>>>>
>>>>> --- a/make/autoconf/hotspot.m4 Wed Jan 15 21:20:40 2020 -0800
>>>>> +++ b/make/autoconf/hotspot.m4 Thu Jan 16 10:24:43 2020 +0100
>>>>> @@ -528,6 +528,7 @@
>>>>> if HOTSPOT_CHECK_JVM_VARIANT(zero) ||
>>>> HOTSPOT_CHECK_JVM_VARIANT(minimal) ||
>>>> HOTSPOT_CHECK_JVM_VARIANT(core); then
>>>>> # ..except when the user explicitely requested it with
>>>>> --enable-jvm-
>>>> features
>>>>> if ! HOTSPOT_CHECK_JVM_FEATURE(cds); then
>>>>> ENABLE_CDS="false"
>>>>> + AC_MSG_WARN([ENABLE_CDS set to false because we found a
>>>> minimal, core or zero JVM.])
>>>>> if test "x$enable_cds" = "xyes"; then
>>>>> AC_MSG_ERROR([CDS not implemented for variants zero,
>>>>> minimal,
>>>> core. Remove --enable-cds.])
>>>>> Fi
>>>>>
>>>>>
>>>>> Is it expected that cds goes away in "server" when configuring
>>>>> "--with-
>>>> jvm-variants=minimal,server" ? Looks like a bug to me, should
>>>> it be fixed
>>>> (so that cds stays in the server jvm-feature list) ?
>>>>>
>>>>> Thanks, Matthias
>>>>>
>
More information about the build-dev
mailing list