In PMem Memory Mode (PMem-MM), the operating system and any application (like the database) sees the PMem as the volatile system main memory. Any DRAM installed in the server acts as PMem’s front-end cache and is application-agnostic. The operating system and the application require no changes to their code to use PMem as main memory.
Figure 1. Memory subsystem with Intel Optane PMem in Memory Mode
In Memory Mode, the DRAM in the server acts as a cache for the most frequently accessed data, while the PMem provides large memory capacity. The Intel Xeon Scalable processor’s memory controller handles all cache management operations. When data is requested from memory, the memory controller first checks the DRAM cache, and if the data is present, the response latency is identical to DRAM. If the data is not in the DRAM cache, it is read from PMem modules with slightly longer latency. If the data is not present in the PMem modules either, then the data is finally fetched from the disk, resulting in significantly higher latencies. Applications and workloads that have consistent data retrieval patterns, the memory controller can predict the I/O, resulting in higher cache hit-rates and performances close to DRAM-only configurations. Conversely, workloads with highly random data access over a wide address range may see some performance difference as compared to DRAM alone. Therefore, performance in Memory Mode depends on both the nature of the workload and the DRAM:PMem capacity ratio. We recommend a minimum of 1:4 ratio of DRAM:PMem on Dell EMC PowerEdge servers.
In Memory Mode, PMem as system memory is application-agnostic and can potentially deliver DRAM-like performance. PMem modules are available in larger capacities than traditional DRAM RDIMMs/LRDIMMs. Therefore, in this design guide, we conducted testing to determine whether PMem-MM is a viable option as the main memory for Oracle Database In-Memory query performance. Details of this testing are described in Use Case 1: IMCS query performance.