RFR(M): 8204908: NVDIMM for POGC and G1GC - ReserveSpace.cpp changes are mostly eliminated/no collector specific code.

Awasthi, Vinay K vinay.k.awasthi at intel.com
Fri Jun 15 17:59:28 UTC 2018

HI Thomas,

Thanks for your input..

Now there is *no* change in virtualspace.cpp... 

I moved reserve and commit (this is how memory backed by file is handled) from reserve space  to commit places in respective gcs... All changes are again localized and isolated with os::has_nvdimm()/AllocateOldGenAT.

There are also fixes (1 line changes) added related to alignment and there is no un-mapping etc.. before mapping nvdimm backed dax file.

Full Patch patch is here..

Any input is welcome.


-----Original Message-----
From: Thomas Schatzl [mailto:thomas.schatzl at oracle.com] 
Sent: Friday, June 15, 2018 6:53 AM
To: Awasthi, Vinay K <vinay.k.awasthi at intel.com>; 'Paul Su' <paul.su at oracle.com>; 'hotspot-gc-dev at openjdk.java.net' <hotspot-gc-dev at openjdk.java.net>; 'Hotspot dev runtime' <hotspot-runtime-dev at openjdk.java.net>
Cc: Kharbas, Kishor <kishor.kharbas at intel.com>; Aundhe, Shirish <shirish.aundhe at intel.com>; Viswanathan, Sandhya <sandhya.viswanathan at intel.com>
Subject: Re: RFR(M): 8204908: NVDIMM for POGC and G1GC - ReserveSpace.cpp changes are mostly eliminated/no collector specific code.

Hi Vinay,

On Thu, 2018-06-14 at 20:49 +0000, Awasthi, Vinay K wrote:
> Now ReservedSpace.cpp has logic to only open NVDIMM File (as it was 
> done for AllocateheapAt).. if successful, set up 3 flags 
> (base/nvdimm_present/file handle) at the end. There is *NO* collector 
> specific code.
> All work has been moved to g1PagebasedVirtualSpace.cpp.. I am 
> committing memory here and setting dram_heapbase used by g1 here.
> JEP to support allocating Old generation on NV-DIMM - https://bugs.op
> enjdk.java.net/browse/JDK-8202286
> Here is the implementation bug link: https://bugs.openjdk.java.net/br
> owse/JDK-8204908
> Patch is Uploaded at (full patch/incremental patch)
> http://cr.openjdk.java.net/~kkharbas/8204908/webrev.02/
> http://cr.openjdk.java.net/~kkharbas/8204908/webrev.02_to_01/
> Tested default setup (i.e. no file is being passed for heap) and 
> AllocateHeapAt/AllocateOldGenAt with POGC and G1GC.. all passing… Any 
> and all comments are welcome!

  looking briefly through the changes, I think they look much better already to move the G1 specific stuff into G1 code; however I would like to think about how we could reduce the complexity further and solve the case of allowing multiple mapping sources (tmpfs file, nvram, different "types" of RAM) for different parts of the heap in an even cleaner way.


More information about the hotspot-runtime-dev mailing list