[ZGC] [aarch64] Unable to allocate heap for certain Linux kernel configurations

Christoph Göttschkes christoph.goettschkes at microdoc.com
Fri Aug 28 09:38:36 UTC 2020

Hi Stefan, thanks for your feedback. Looks like this case isn't as 
exotic as I first thought. May I ask which kind of machine this is? Also 
a small embedded board?

On 2020-08-28 11:04, Stefan Karlsson wrote:
> I think we hit a very similar problem during some internal testing on 
> one machine. I have a patch to workaround that problem:
> https://cr.openjdk.java.net/~stefank/prototype/zaarch-va/webrev.01/

Your patch works with some modifications. In my case, only 39 bits are 
available in the virtual address space. I put that value as "va_bits" 
and it works.

> Unfortunately, this patch only solves the problem on a very specific 
> setup, and I don't think it covers your use-case. Hopefully, someone 
> with enough AArch64 machine config knowledge would be able to extend 
> this patch to also cover all possible combinations.

I don't think the possible combinations are the problem. [1] shows them 
(sorry, didn't put that link in the last mail) for Linux. I think the 
real problem is detecting this and making the addressing scheme adjust 

Maybe there could be a mechanism which tries to allocate memory beyond 
certain addresses to try and detect the number of bits available? On my 
machine, for instance, the ZGC implementation tries to allocate memory 
with different starting addresses, but always gets an address back which 
is way smaller (because of the kernel limitations). Maybe, the ZGC 
implementation could store this information (the number of bits in 
addresses returned by mmap) and use this information to try and make 
another loop, which tries to allocate the heap with a reduced number of 
bits used for the addresses. This could also be a HotSpot option, to 
speed things up during startup if one knows that the machine uses a 
"weird" configuration.

> I think creating a bug report would be a good start. Do you have an 
> openjdk user name? If not I can create a bug report.

Yes, I can create bug reports. I used my first mail and created one [2].

-- Christoph

[1] https://www.kernel.org/doc/Documentation/arm64/memory.txt
[2] https://bugs.openjdk.java.net/browse/JDK-8252500

More information about the hotspot-gc-dev mailing list