The Application Configuration File

The configuration file mvmalloc.yml controls how the TMS library interacts with the system.

Important: The configuration file path can be any number of characters up to maximum length allowed by the operating system. However, Memory Machine truncates the configuration file path to 1800 characters when displaying it. If you have assigned a log name prefix over 1800 characters, the displayed file path is truncated and therefore incorrect.

Copy this file, modify it, and supply it as a parameter when you run applications in Memory Machine. See Running an Application in Memory Machine.

An example of the YAML-formatted file is shown here:

DpmeSocketName: /tmp/dpme_daemon.0
MmapCapture: true
MallocCapture: true
# LogName: /var/log/memverge/single_malloc_log
LogNamePrefix: /var/log/memverge/malloc_log
LogTrace: false
CommPort: 5678
# AccessDetectorMode: 4

HugePageDram: false
HugePagePath: /dev/hugepages
PreallocateDram: false
# DramTierGB: 0

# UseForkSnapshot: false

The parameters shown in the example file are the most commonly used application parameters. There are other parameters that can be set for specialized purposes. These are described elsewhere in the documentation or provided by MemVerge support if needed.

The parameters from the example file are described in the following list:

DpmeSocketName
The socket name for the MemVerge Memory Allocation Service (MVMAS).
Important: MemVerge recommends you not change the name the domain socket name DpmeSocketName from the default. If you must change DpmeSocketName, the name can be no longer than 79 characters.
MmapCapture
One of two flags in mvmalloc.yml that control which groups of glibc.so functions are intercepted by TMS. Setting either MallocCapture or MMapCapture to true causes all functions grouped within the setting to be intercepted and routed to TMS. See Intercepted Memory Functions.
MMapCapture controls intercept of memory-mapped file I/O functions.
MallocCapture
The other glibc.so intercept parameter. MallocCapture controls intercept of dynamic memory allocation functions.
LogName
A file path to an application log file. If LogName is specified, Memory Machine writes to the named file. This means that multiple processes can write to the same file.
LogNamePrefix
To write to a separate log file for an application, use LogNamePrefix instead of LogName. With LogNamePrefix, Memory Machine appends the process ID and a unique identifier to the LogNamePrefix file path.
Important: The log file path can be any number of characters up to maximum length allowed by the operating system. However, Memory Machine truncates the log name prefix to 1800 characters when it displays the logfile path. If you have assign a log name prefix over 1800 characters, the prefix will be truncated and the displayed logfile name therefore incorrect.
LogTrace
Turns log tracing on or off for the application. Useful for debugging.
CommPort
The port on which MVMAS communicates with the application. It is not necessary to assign different ports to different application instances. MemVerge recommends that you not change this setting.
AccessDetectorMode
Defines how TMS detects page accesses and how it handles page faults.
Page access can be detected by reading the Linux soft-dirty bit in the page table entry (basic access detection) or by detecting userfaults (advanced access detection).
Page faults can be handled with segfaults (read-only marking, which does not work with HugePages) or with user faults (kernel mapping).
There are four AccessDetectorModes available, representing each combination of access detection and page fault handling:
  1. Basic detection, segfault handling
  2. Basic detection, userfault handling
  3. Advanced detection, segfault handling
  4. Advanced detection, userfault handling
The default AccessDetectorMode is 4; if no AccessDetectorMode is defined in mvmalloc.yml, then TMS uses advanced detection and userfault handling.
Note: The EnableSnapshot parameter is deprecated. Use AccessDetectorMode instead to enable using KVM with Memory Machine. See Configuring a Virtual Machine on Memory Machine.
HugePageDram
Whether to use HugePages for DRAM tier. See Configuring HugePages.
HugePagePath
The file path of the HugePage filesystem.
PreallocateDram
If true, reserve DRAM for tiering at startup. Otherwise allocate DRAM tier as needed.
DramTierGB
Sets the application tier size, the maximum amount of DRAM that can be used as tier memory in an instance of this application. You can set this value, enable Memory Machine to adjust tier size automatically, or turn off DRAM tiering entirely for an application. See Setting DRAM Tier Memory.
UseForkSnapshot
Setting this to true can reduce the time taken for a snapshot to complete in cases where the process has a large number of memory pages; for example, when the process is using an in-memory database. Default is false.