RFR(M): 8204908: Allocation of Old generation of Java Heap on alternate memory devices.

Awasthi, Vinay K vinay.k.awasthi at intel.com
Tue Jun 12 19:32:18 UTC 2018

I am requesting comments on POGC/G1GC supporting NVDIMM/DRAM heaps. When user supplies AllocateOldGenAt=<NVDIMM file path>, JVM divides heap into 2 parts. First part is on NVDIMM where long living objects go (OldGen) and other part is on DRAM where short living objects reside(YoungGen). This is ONLY supported for G1GC and POGC collectors on Linux and Windows.
On Windows, OldGen resizing is NOT supported. On Linux, for G1GC, OldGen resizing is not supported however for POGC it is. Heap residing on DRAM is supported for Windows and Linux for POGC and G1GC.
JEP to support allocating Old generation on NV-DIMM - https://bugs.openjdk.java.net/browse/JDK-8202286
Patch is at http://cr.openjdk.java.net/~kkharbas/8202286/webrev.00/
SpecJbb2005/SpecJbb2015 etc. are passing with this patch and one can test this by simply mounting tmpfs of certain size and pass that as an argument to AllocateOldGenAt.
For G1GC, G1MaxNewSizePercent controls how much of total heap will reside on DRAM. Rest of the heap then goes to NVDIMM.
For POGC, MaxNewSize decides the DRAM residing young gen size. Rest is mounted on NVDIMM.
In all these implementations, JVM ends up reserving more than initial size determined by ergonomics (never more than Xmx). JVM displays these messages and shows NVDIMM and DRAM reserved bytes.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-dev/attachments/20180612/dff5339d/attachment.htm>

More information about the hotspot-gc-dev mailing list