-
Enhancement
-
Resolution: Fixed
-
P4
-
None
-
b26
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8216002 | 13 | Sangheon Kim | P4 | Resolved | Fixed | b03 |
JDK-8216124 | 12.0.1 | Sangheon Kim | P4 | Resolved | Fixed | master |
-----------------
Enable an experimental feature in HotSpot JVM to allocate old generation of Java heap on an alternative memory device, such as NV-DIMM, specified by the user. The goal of this enhancement is to facilitate exploration of different use cases for new memory technologies with the possibility of dramatically large heap sizes at increased cost efficiencies.
Motivation
-----------------
With the availability of cheap NV-DIMM memory, future systems may be equipped with a heterogeneous memory architecture. Such an architecture, in addition to DRAM, will have one or more types of non-DRAM memory with different characteristics. NV-DIMMs such as Intel Persistent Memory are projected to have higher capacity as compared to DRAM. Java applications would like to take advantage of this capacity. The motivation behind this JEP is to provide an experimental feature to facilitate exploration of different use cases for these non-DRAM memories.
Description
---------------
Operating systems today expose NV-DIMM memory devices through the file system. Examples are NTFS DAX mode and ext4 DAX. Memory-mapped files in these file systems bypass the file cache and provide a direct mapping of virtual memory to the physical memory on the device.
The idea is to allocate part of Heap memory in NV-DIMM and use it exclusively for old generation objects. The rest of the heap is mapped to DRAM and young generation objects are always placed here. This implementation would add a new experimental option, `-XX:AllocateOldGenAt=<path>`. `AllocateOldGenAt` takes a path to the file system where the device is mounted, and use it to create a temporary, nameless file to map part of heap to NV-DIMM. GCs to be supported are: G1 and ParallelScavenge.
Testing
-------------
At a higher level we need to test:
1. Correct mapping of Old generation to specified NV-DIMM device and correct placement of young/old objects in corresponding memory spaces.
2. No regression when this feature is not used.
3. File which is created to map memory to NV-DIMM is protected by corrected permissions and ceases to exist on different termination conditions such as graceful termination, power failure, system shutdown, etc.
- backported by
-
JDK-8216002 Allocation of old generation of Java heap on alternate memory devices
- Resolved
-
JDK-8216124 Allocation of old generation of Java heap on alternate memory devices
- Resolved
- csr for
-
JDK-8214081 Allocation of Old generation of Java Heap on alternate memory devices.
- Closed
- duplicates
-
JDK-8211417 Allocation of old generation of java heap on alternate memory devices
- Closed
- is blocked by
-
JDK-8202956 JEP-JDK-8202286: Performance Plan for partial heap allocation on alternative memory devices
- Closed
-
JDK-8203235 JEP-JDK-8202286: Test Plan for allocating Old generation on alternate memory devices
- Closed
- relates to
-
JDK-8204908 Implementation: JEP JDK-8202286: Allocation of Old generation of Java Heap on alternate memory devices
- Closed
-
JDK-8215730 Release Note: Allocation of Old Generation of Java Heap on Alternate Memory Devices
- Closed
-
JDK-8229373 Reserve more than MaxHeapSize for the heap to fight humongous object fragmentation in G1
- Open
-
JDK-8256181 Remove Allocation of old generation on alternate memory devices functionality
- Resolved
-
JDK-8211424 Allocation of old generation of java heap on alternate memory devices - Parallel GC
- Resolved
-
JDK-8211425 Allocation of old generation of java heap on alternate memory devices - G1 GC
- Resolved
-
JDK-8217666 gc/nvdimm/* should not be included any tiers
- Resolved
-
JDK-8217406 gc/nvdimm/Test*ObjectsOnNvdimm.java failure
- Closed
-
JDK-8256079 Heterogeneous Heap may fail silently on Windows
- Closed