The following minimum system requirements are required to support either physical NVDIMMs or emulated NVDIMMs.
Linux Kernel Version 4.0 or later
Kernel Version 4.19 or later is recommended for production
4GB of DDR Memory (Minimum), 16GB or more recommended for Emulated NVDIMMs.
The 4.15 Linux kernel introduced a new flag to mmap() called MAP_SYNC. If the mapping with MAP_SYNC is successful, PMDK knows that flushing from user space using instructions like CLWB is safe. Otherwise, it falls back to calling msync(). The msync() call can be slower for the PMDK-style transactions because they are fine-grained, flushing lots of little stores during a typical transaction. Calling into the kernel has an overhead, as does the code path that msync() takes.
Setting PMEM_IS_PMEM_FORCE=1 tells the PMDK libraries "even if mmap() with MAP_SYNC was unsuccessful, pretend it worked and do user space flushing anyway, avoiding calls to msync()". This environment variable is meant for testing, not for production use. Both FSDAX and DEVDAX use user space flushing when it is available.
Windows Server 2016 or later for NVDIMM support
Windows Server 2019 or later for Intel(R) Optane(TM) DC Persistent Memory Support
4GB of DDR Memory (Minimum), 16GB or more recommended for Emulated NVDIMMs