JEP-JDK-8202286 adds support for allocating Old generation of heap in NV-DIMM memory while Young generation is allocated in DRAM. User specifies a flag `-XX:AllocateOldGenAt=` to specify the directory where NV-DIMM is mounted as DAX file system. Definition of existing parameters for heap and generation sizing such as Xmx, Xms, Xmn, NewSize, etc. is unaltered. GC ergonomics are also unaffected.
To test this patch, we need to verify following code path related to new region allocation as well as code paths where NV-DIMM memory is mapped.
1. Check whether Old generation is properly mapped to NV-DIMM.
2. The temporary file created in NV-DIMM should not be accessible to other system users and it should cease to exist on termination.
3. Young generation is always allocated in DRAM, i.e newly allocated objects and objects yet to be tenured are in DRAM.
4. Old generation is always allocated in NV-DIMM, i.e tenured objects are in NVDIMM.
5. During a young collection, survivor space is always allocated in DRAM.
6. Humongous objects (G1) are always allocated in regions in NV-DIMM.
7. During GC (mixed and full), proper recycling of regions should be ensured so that old regions go back to NV-DIMM and young regions go to DRAM regardless of how they are marked.
8. Ensure that multiple rounds of recycling of regions take place to include last DRAM regions from DRAM and last region from NV-DIMM so that recycling verifies boundry conditions under stress.
Testing responsibility
------------------
Intel Java team will test and maintain this feature as follows:
1. Perform regression tests for this feature on its own testing infrastructure; testing cadence will match the release cadence of early access builds for jdk11 and further.
2. Testing will be conducted on Linux x86_64 platform with the necessary hardware.
3. Any bug fixes identified by the testing or reported from outside will be fixed in a timely manner.
Testing Methodology
----------------------
Tests described above will be written using Jtreg and Gtest tests. Test will print region numbers as they are allocated for young and old and checks will be done to ensure that they are coming from proper device (DRAM or NV-DIMM). There is a possibility of using WhiteBox APIs for our tests.
These tests will be part of a new group of test (test/hotspot/jtreg/TEST.groups) and will be excluded from other groups.