On Wed, 10 Mar 2021 17:41:25 GMT, Yumin Qi <mi...@openjdk.org> wrote:
>> Hi, Please review >> Usually most OSes are configured with page size of 4K, but some others are >> configured with 64K. If jdk binary is built on 4K platform and run on >> different configured platforms, CDS fails to be loaded due to region >> alignment mismatch: >> Unable to map CDS archive -- os::vm_allocation_granularity() expected: >> 4096 actual: 65536 >> This change uses 64K as region alignment if OS page size is less than 64K. >> For most of the current OSes, means always use 64K as file map region >> alignment. >> The archive size will increase about 300K due to the change. >> Tests: tier1-4 >> Run MacOS/X64 binary on MacOS/aarch64 >> >> Thanks >> Yumin > > Yumin Qi has updated the pull request with a new target base due to a merge > or a rebase. The pull request now contains seven commits: > > - Merge branch 'master' into jdk-8236847 > - Merge master > - Add --enable-compatible-cds-alignment for linux-aarch64 and macosx-x64 in > jib job > - Switch to enble compatible-cds-alignment at configuration > - Make CDS core region alignment configurable at build time > - Make 64K core region alignment only for specific platforms, also fixed > comments as suggestions. > - 8236847: CDS archive with 4K alignment unusable on machines with 64k pages I think this is fine. "compatible" vs "default" is a good compromise. Small remarks inside. Sorry for all the bikeshedding! Cheers, Thomas src/hotspot/os_cpu/bsd_x86/os_bsd_x86.hpp line 30: > 28: #if defined(COMPATIBLE_CDS_ALIGNMENT) > 29: #define CDS_CORE_REGION_ALIGNMENT (16*K) > 30: #endif Could you limit this to `_APPLE_`? I don't think this affects the BSDs. (We really should separate BSD and MacOS sources at some point.) Also maybe a comment like this: "Core region alignment is 16K to be able to run binaries built on MacOS x64 on MacOS aarch64." ? src/hotspot/share/memory/metaspaceShared.cpp line 125: > 123: // os::vm_allocation_granularity() is usually 4K for most OSes. However, > on Linux/aarch64, > 124: // it can be either 4K or 64K and on Macosx-arm it is 16K. To generate > archives that are > 125: // compatible for both settings. An alternative cds core region > alignment can be enabled dot -> comma and lowercase ------------- Marked as reviewed by stuefe (Reviewer). PR: https://git.openjdk.java.net/jdk/pull/2651