[Rev 01] RFR: Add a limition to allocate object heap in aarch64 with tsan enabled.
Jie He
github.com+10233373+jhe33 at openjdk.java.net
Fri Apr 24 05:43:28 UTC 2020
On Fri, 24 Apr 2020 04:36:44 GMT, Man Cao <manc at openjdk.org> wrote:
>> Jie He has refreshed the contents of this pull request, and previous commits have been removed. The incremental views
>> will show differences compared to the previous content of the PR. The pull request contains one new commit since the
>> last revision:
>> Add a limit to allocate object heap in aarch64 with tsan enabled.
>>
>> 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 limit
>> at os::has_allocatable_memory_limit 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.
>>
>> Change-Id: Iabff934444091436bc657978e2e947c270398f29
>
> src/hotspot/os/posix/os_posix.cpp line 550:
>
>> 549: u8 vm_addr_u8 = reinterpret_cast<u8>(&__FUNCTION__);
>> 550: // High address in 48bits user space is like 0x0000ffffxxxxxxxx.
>> 551: assert((vm_addr_u8 >> msb_in_aarch64) == 0x1, "warning: allocation could fail in non 48-bit address space.");
>
> Is this based on kHiAppMemBeg = 0x0ffff00000000ull and kHiAppMemEnd = 0x1000000000000ull?
> Mentioning these two constants like kMidAppMemBeg and kMidAppMemEnd above would be a more helpful comment.
dynamic libraries will be loaded between kHiAppMemBeg and kHiAppMemEnd . it makes hard to allocate large continuous
space.
-------------
PR: https://git.openjdk.java.net/tsan/pull/6
More information about the tsan-dev
mailing list