RFR: Add a limition to allocate object heap in aarch64 with tsan enabled.

Jie He github.com+10233373+jhe33 at openjdk.java.net
Tue Apr 21 06:21:47 UTC 2020


On Mon, 20 Apr 2020 23:56:33 GMT, Man Cao <manc at openjdk.org> wrote:

>> Vm will calculate max heap size according to the physical ram if user
>> doesn't specify the size(-Xmx). However, with tsan 48-bits memory
>> mapping of aarch64, it's hard to allocate the large continuous vm
>> space. Heap allocation often fail in this case, thus, add a limitation
>> at the end of the heap size calculation to prevent to exceed the
>> avaiable size. Currently, only support 48-bits address space.
>> 
>> Can reproduce the behavior by launching "java --version" in a machine
>> with huge physical memory.
>
> src/hotspot/share/runtime/arguments.cpp line 1863:
> 
>> 1862:     TSAN_ONLY(
>> 1863: #if defined(AARCH64)
>> 1864: #define MAX_AVAILABLE_VM_SPACE_IN_AARCH64 (1024ULL * 1024ULL * 1024ULL * 16ULL) //16GB
> 
> Could the code be moved to os_linux_aarch64.cpp, by overriding os::has_allocatable_memory_limit()?
> There is "reasonable_max = limit_by_allocatable_memory(reasonable_max);" above that calls
> os::has_allocatable_memory_limit().
> We should avoid adding architecture-specific code in arguments.cpp if possible.

yes, I think it's possible, however it will touch X86 code that moving has_allocatable_memory_limit() to
os_linux_x86.cpp as well.

-------------

PR: https://git.openjdk.java.net/tsan/pull/6


More information about the tsan-dev mailing list