  After nearly a decade of anticipation, scalable nonvolatile memory DIMMs are
finally commercially available with the release of Intel's 3D XPoint DIMM. This
new nonvolatile DIMM supports byte-granularity accesses with access times on
the order of DRAM, while also providing data storage that survives power
outages. Researchers have not idly waited for real nonvolatile DIMMs (NVDIMMs)
to arrive. Over the past decade, they have written a slew of papers proposing
new programming models, file systems, libraries, and applications built to
exploit the performance and flexibility that NVDIMMs promised to deliver. Those
papers drew conclusions and made design decisions without detailed knowledge of
how real NVDIMMs would behave or how industry would integrate them into
computer architectures. Now that 3D XPoint NVDIMMs are actually here, we can
provide detailed performance numbers, concrete guidance for programmers on
these systems, reevaluate prior art for performance, and reoptimize persistent
memory software for the real 3D XPoint DIMM. In this paper, we explore the
performance properties and characteristics of Intel's new 3D XPoint DIMM at the
micro and macro level. First, we investigate the basic characteristics of the
device, taking special note of the particular ways in which its performance is
peculiar relative to traditional DRAM or other past methods used to emulate
NVM. From these observations, we recommend a set of best practices to maximize
the performance of the device. With our improved understanding, we then explore
the performance of prior art in application-level software for persistent
memory, taking note of where their performance was influenced by our
guidelines.
