Pre-RFR 8236847 CDS archive with 4K alignment unusable on machines with 64k pages
Dmitry Samersoff
dms at samersoff.net
Thu Jan 30 08:34:53 UTC 2020
Hello Ioi,
I'm not sure that explicit specification of SharedRegionAlignment=64k
helps. The goal is to build JDK on a build machine then use it smoothly
on different test/production machines with both 4k and 64k pages, ever
if it's the same JDK that resides in a shared network location.
For a long term we may consider to revisit entire logic of default
archive dumping and dump CDS archive of JDK classes on the first JVM run
to $HOME/.cache but it requires more work and is out of scope of this issue.
So as a short term solution I would propose to implement following logic:
1. Without any parameters
- try to use existing CDS archive
- if alignment doesn't match - disable CDS and continue execution.
- if debug or fastdebug - issue a meaningful warning.
2. With explicit -Xshare:auto or -Xshare:on
- try to use existing CDS archive
- if alignment doesn't match - terminate VM with meaningful message.
-Dmitry
On 29.01.20 08:37, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8236847
> http://cr.openjdk.java.net/~iklam/jdk15/8236847-SharedRegionAlignment.v01/
>
>
> Hi Dmitry,
>
> Here's a proposal to make it possible to generate CDS archives that
> can be used on machines with different OS page alignments: generate
> the CDS archive with
>
> java -Xshare:dump -XX:SharedRegionAlignment=64k
>
> I want to be conservative, as this seems to affect only Linux/aarch64,
> so I have limited the range of this flag to be no more than 64KB. You
> can see checks for other invalid values in the new test case.
>
> If SharedRegionAlignment is not specified (as for most platforms),
> os::vm_allocation_granularity() will be used.
>
> For simplicity, -XX:SharedRegionAlignment can only be set when dumping
> the base archive (-Xshare:dump). The dynamic archive
> (-XX:DynamicDumpSharedSpaces) will always use the value as stored in
> the base archive.
>
> Please let me know if this solution will work for your situation. If
> so, I will file a CSR for the new flag and also write more test cases.
>
> (Also, the default CDS archive is created at JDK build time. I'll
> leave it to the ARM porting folks to do the makefile changes to pass the
> -XX:SharedRegionAlignment=64k flag to BUILD_CDS_ARCHIVE in Images.gmk)
>
> Thanks
> - Ioi
More information about the hotspot-runtime-dev
mailing list