Setting Volatile Tier Memory

To take advantage of the speed of volatile memory (DRAM), the Distributed Persistent Memory Engine (DPME) caches the most recently used memory on the local machine’s DRAM. See The Distributed Persistent Memory Engine. You can enable tiering and set a maximum tier memory size for each application.

Procedure

  1. Estimate the size of the DRAM tier needed for the application.
    There are no hard and fast rules to calculate tier memory size; it must be experimentally determined per application. Compare the application performance when run with and without Memory Machine and note the Resident Set Size (RSS) of DRAM during the "without" run. If there is little performance difference then zero cache may be the best choice; otherwise try a tier size 10% or less of the noted RSS value to see the effect on performance. Iterate as needed to find the minimum amount of tier memory required to achieve acceptable performance.
    Larger tier size increases the time required to capture a snapshot (See Capturing a Snapshot with CLI and Capturing a Snapshot Using Memory Machine Dashboard), so you might also need to balance application performance against snapshot performance.
  2. Optional: You do not need to stop the application instance, change the application configuration file, and restart the process to try each new DRAM tier configuration. You can modify the DRAM tier dynamically (without stopping the application instance) while you experiment with the cache size using the mvmcmd dram resize command. See Resizing Volatile Tier Memory.
  3. In the application configuration file (mvmalloc.yml), set the DRAM tier size. For example, the following entry sets the application's DRAM tier to 16 GB:
    DramTierGB: 16
    If your application does not require DRAM tier memory, you can effectively disable tiering for the application by setting DramTierGB to zero (DramTierGB: 0) or by omitting the DramTierGB parameter from mvmalloc.yml file altogether.
  4. Restart the application under Memory Machine management:
    # mm app_launch_command
    where app_launch_command is the application command, including parameters.