158
When using libmemkind with DRAM and persistent memory, the key points to
understand are:
• Two pools of memory are available to the application, one from
DRAM and another from persistent memory.
• Both pools of memory can be accessed simultaneously by setting
the kind type to PMEM_KIND to use persistent memory and MEMKIND_
DEFAULT to use DRAM.
• jemalloc is the single memory allocator used to manage all kinds of
memory.
• The memkind library is a wrapper around jemalloc that provides a
unified API for allocations from different kinds of memory.
• PMEM_KIND memory allocations are provided by a temporary file
(tmpfile(3)) created on a persistent memory-aware file system.
The file is destroyed when the application exits. Allocations are not
persistent.
• Using libmemkind for persistent memory requires simple
modifications to the application.
Figure 10-2. An application using different “kinds” of memory
Chapter 10 Volatile Use of persistent MeMory
When using libmemkind with DRAM and persistent memory, the key points to
understand are:
• Two pools of memory are available to the application, one from
DRAM and another from persistent memory.
• Both pools of memory can be accessed simultaneously by setting
the kind type to PMEM_KIND to use persistent memory and MEMKIND_
DEFAULT to use DRAM.
• jemalloc is the single memory allocator used to manage all kinds of
memory.
• The memkind library is a wrapper around jemalloc that provides a
unified API for allocations from different kinds of memory.
• PMEM_KIND memory allocations are provided by a temporary file
(tmpfile(3)) created on a persistent memory-aware file system.
The file is destroyed when the application exits. Allocations are not
persistent.
• Using libmemkind for persistent memory requires simple
modifications to the application.
Figure 10-2. An application using different “kinds” of memory
Chapter 10 Volatile Use of persistent MeMory
