[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
itself.
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