Use DAX in ZGC

Per Liden per.liden at oracle.com
Fri Feb 14 11:52:42 UTC 2020


Hi Yasumasa,

On 2/14/20 10:07 AM, Yasumasa Suenaga wrote:
> Hi all,
> 
> I tried to allocate heap to DAX on Linux with -XX:AllocateHeapAt, but it 
> couldn't.
> It seems to allow when filesystem is hugetlbfs or tmpfs.
> 
> According to kernel document [1], DAX is supported in ext2, ext4, and xfs.
> Also we need to mount it with "-o dax".
> 
> I want to use ZGC on DAX, so I want to introduce new option 
> -XX:ZAllowHeapOnFileSystem to allow to use all filesystem as backing 
> storage.
> What do you think this change?


+  experimental(bool, ZAllowHeapOnFileSystem, false, 
     \
+          "Allow to use filesystem as Java heap backing storage " 
     \
+          "specified by -XX:AllocateHeapAt") 
     \
+ 
     \

Instead of adding a new option it would be preferable to automatically 
detect that it's a dax mounted filesystem. But I haven't has a chance to 
look into the best way of doing that.


    const size_t expected_block_size = is_tmpfs() ? os::vm_page_size() : 
os::large_page_size();
-  if (expected_block_size != _block_size) {
+  if (!ZAllowHeapOnFileSystem && (expected_block_size != _block_size)) {
      log_error(gc)("%s filesystem has unexpected block size " 
SIZE_FORMAT " (expected " SIZE_FORMAT ")",
                    is_tmpfs() ? ZFILESYSTEM_TMPFS : 
ZFILESYSTEM_HUGETLBFS, _block_size, expected_block_size);
      return;
    }

This part looks potentially dangerous, since we might then be working 
with an incorrect _block_size.


  int ZPhysicalMemoryBacking::create_file_fd(const char* name) const {
+  if (ZAllowHeapOnFileSystem && (AllocateHeapAt == NULL)) {
+    log_error(gc)("-XX:AllocateHeapAt is needed when 
ZAllowHeapOnFileSystem is specified");
+    return -1;
+  }
+
    const char* const filesystem = ZLargePages::is_explicit()
                                   ? ZFILESYSTEM_HUGETLBFS
                                   : ZFILESYSTEM_TMPFS;

This part looks unnecessary, no?

cheers,
Per

> 
>    http://cr.openjdk.java.net/~ysuenaga/dax-z/
> 
> If it can be accepted, I will file it to JBS and will propose CSR.
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 
> [1] https://www.kernel.org/doc/Documentation/filesystems/dax.txt


More information about the hotspot-gc-dev mailing list