298
that requires extensive reading and writing from disk. It is likely that the disk accesses
are the bottleneck for this application and adding a faster storage solution, like persistent
memory, could improve performance.
These are trivial examples, and applications will have widely different behaviors
along this spectrum. Understanding what behaviors to look for and how to measure
them is an important step to using persistent memory. This section presents the
important characteristics to identify and determine if an application is a good fit for
persistent memory. We look at applications that require in-memory persistence,
applications that can use persistent memory in a volatile manner, and applications that
can use both.
Volatile Use Cases
Chapter 10 described several libraries and use cases where applications can take
advantage of the performance and capacity of persistent memory to store non-volatile
data. For volatile use cases, persistent memory will act as an additional memory tier for
the platform. It may be transparent to the application, such as using Memory Mode
supported by Intel Optane DC persistent memory, or applications can make code
changes to perform volatile memory allocations using libraries such as libmemkind.
In both cases, memory-capacity bound workloads will benefit from adding persistent
memory to the platform. Application performance can dramatically improve if its
working dataset can fit into memory and avoid paging to disk.
Identifying Workloads That Are Memory-Capacity Bound
To determine if a workload is memory-capacity bound, you must determine the
“memory footprint” of the application. The memory footprint is the high watermark
of memory concurrently allocated during the application’s life cycle. Since physical
memory is a finite resource, you should consider the fact that the operating system and
other processes also consume memory. If the footprint of the operating system and all
memory consumers on the system are approaching or exceeding the available DRAM
capacity on the platform, you can assume that the application would benefit from
additional memory because it cannot fit all its data in DRAM. Many tools and techniques
can be used to determine memory footprint. VTune Profiler includes two different ways
Chapter 15 profiling and performanCe
that requires extensive reading and writing from disk. It is likely that the disk accesses
are the bottleneck for this application and adding a faster storage solution, like persistent
memory, could improve performance.
These are trivial examples, and applications will have widely different behaviors
along this spectrum. Understanding what behaviors to look for and how to measure
them is an important step to using persistent memory. This section presents the
important characteristics to identify and determine if an application is a good fit for
persistent memory. We look at applications that require in-memory persistence,
applications that can use persistent memory in a volatile manner, and applications that
can use both.
Volatile Use Cases
Chapter 10 described several libraries and use cases where applications can take
advantage of the performance and capacity of persistent memory to store non-volatile
data. For volatile use cases, persistent memory will act as an additional memory tier for
the platform. It may be transparent to the application, such as using Memory Mode
supported by Intel Optane DC persistent memory, or applications can make code
changes to perform volatile memory allocations using libraries such as libmemkind.
In both cases, memory-capacity bound workloads will benefit from adding persistent
memory to the platform. Application performance can dramatically improve if its
working dataset can fit into memory and avoid paging to disk.
Identifying Workloads That Are Memory-Capacity Bound
To determine if a workload is memory-capacity bound, you must determine the
“memory footprint” of the application. The memory footprint is the high watermark
of memory concurrently allocated during the application’s life cycle. Since physical
memory is a finite resource, you should consider the fact that the operating system and
other processes also consume memory. If the footprint of the operating system and all
memory consumers on the system are approaching or exceeding the available DRAM
capacity on the platform, you can assume that the application would benefit from
additional memory because it cannot fit all its data in DRAM. Many tools and techniques
can be used to determine memory footprint. VTune Profiler includes two different ways
Chapter 15 profiling and performanCe
