---
name: "pmdammv"
section: "1"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/pmdammv"
---

# pmdammv(1)

memory mapped values performance metrics domain agent (PMDA)

## NAME

**pmdammv** - memory mapped values performance metrics domain agent (PMDA)

## SYNOPSIS

**$PCP\_PMDAS\_DIR/mmv/pmdammv** \[**-D** *debug*\] \[**-d** *domain*\] \[**-l** *logfile*\] \[**-U** *username*\]

## DESCRIPTION

**pmdammv** is a Performance Metrics Domain Agent (PMDA) which exports application level performance metrics using memory mapped files. It offers an extremely low overhead instrumentation facility that is well-suited to long running, mission critical applications where it is desirable to have performance metrics and availability information permanently enabled.

The **mmv** PMDA exports instrumentation that has been added to an application using the MMV APIs (refer to [**mmv\_stats\_init**(3)](/mmv_stats_init/3.md) and [**mmv**(5)](/mmv/5.md) for further details). These APIs can be called from several languages, including C, C++, Perl, Python, Java (via the separate \`\`Parfait'' class library) and GoLang (via the separate \`\`Speed'' library).

A brief description of the **pmdammv** command line options follows:

- **-d**

  It is absolutely crucial that the performance metrics *domain* number specified here is unique and consistent. That is, *domain* should be different for every PMDA on the one host, and the same *domain* number should be used for the same PMDA on all hosts.

- **-l**

  Location of the log file.  By default, a log file named *mmv.log* is written in the current directory of [**pmcd**(1)](/pmcd/1.md) when **pmdammv** is started, i.e. **$PCP\_LOG\_DIR/pmcd**. If the log file cannot be created or is not writable, output is written to the standard error instead.

- **-U**

  User account under which to run the agent. The default is the unprivileged "pcp" account in current versions of PCP, but in older versions the superuser account ("root") was used by default.

## INSTALLATION

Firstly, a security model for interprocess communication between instrumented applications and **pmdammv** (running as a shared library inside **pmcd**) must be chosen and established.

This communication occurs through memory mapped files in a location known to both **pmdammv** and the instrumented applications. That location is *$PCP\_TMP\_DIR/mmv*, although that is often hidden behind application APIs such as \`\`Parfait'' and [**mmv\_stats\_init**(3)](/mmv_stats_init/3.md). The permissions set on this directory indicate the security model in use.

The more secure method is to use an existing unprivileged group which is shared by instrumented applications, **pmcd** and **pmdammv** such as the "pcp" group.

```
# . /etc/pcp.env
# mkdir -m 775 $PCP_TMP_DIR/mmv
# chgrp pcp $PCP_TMP_DIR/mmv
```

Since this method requires instrumented applications to use this non-default group (see [**newgrp**(1)](/newgrp/1.md) and [**setgid**(2)](/setgid/2.md)) a common alternative involves the use of a world-writable *$PCP\_TMP\_DIR/mmv* directory with the sticky-bit set (similar to */tmp* and */var/tmp*, for example).

This allows any application, running under any user account, to communicate with the PMDA (which runs under the "pcp" account by default). This may not be desirable for all environments and one should consider the security implications of any directory setup like this (similar classes of issues exist as those that affect the system temporary file directories).

**pmdammv** is enabled by default on all modern PCP installations, and thus the names, help text and values for the mmv performance metrics are available without the usual PMDA ./Install process.

If the *$PCP\_TMP\_DIR/mmv* directory does not exist, then the ./Install script can be used to create a world-writable sticky-bit-set directory for communication. This is for backwards compatibility, as well as ease of use - to use this mechanism, do the following as root:

```
# rmdir $PCP_TMP_DIR/mmv
# cd $PCP_PMDAS_DIR/mmv
# ./Install
```

This installation process will not overwrite any existing *$PCP\_TMP\_DIR/mmv* directory.

If you want to undo the installation, do the following as root:

```
# cd $PCP_PMDAS_DIR/mmv
# ./Remove
```

**pmdammv** is launched by **pmcd** and should never be executed directly. The Install and Remove scripts notify **pmcd** when the agent is installed or removed.

## FILES

- **$PCP\_PMCDCONF\_PATH**

  command line options used to launch **pmdammv**

- **$PCP\_TMP\_DIR/mmv**

  directory housing memory mapped value files

- **$PCP\_PMDAS\_DIR/mmv/help**

  default help text file for the mmv metrics

- **$PCP\_PMDAS\_DIR/mmv/Install**

  installation script for the **pmdammv** agent

- **$PCP\_PMDAS\_DIR/mmv/Remove**

  undo installation script for the **pmdammv** agent

- **$PCP\_LOG\_DIR/pmcd/mmv.log**

  default log file for error messages and other information from **pmdammv**

## PCP ENVIRONMENT

Environment variables with the prefix **PCP\_** are used to parameterize the file and directory names used by PCP. On each installation, the file */etc/pcp.conf* contains the local values for these variables. The **$PCP\_CONF** variable may be used to specify an alternative configuration file, as described in [**pcp.conf**(5)](/pcp.conf/5.md).

## DEBUGGING OPTIONS

The **-D** or **--debug** option enables the output of additional diagnostics on *stderr* to help triage problems, although the information is sometimes cryptic and primarily intended to provide guidance for developers rather than for end-users. *debug* is a comma separated list of debugging options; use [**pmdbg**(1)](/pmdbg/1.md) with the **-l** option to obtain a list of the available debugging options and their meaning.

Debugging options specific to **pmdammv** are as follows:

| | |
| --- | --- |
| Option | Description |
| appl0 | verbose diagnostics |

## SEE ALSO

[**PCPIntro**(1)](/PCPIntro/1.md), [**pmcd**(1)](/pmcd/1.md), [**newgrp**(1)](/newgrp/1.md), [**setgid**(2)](/setgid/2.md), [**mmv\_stats\_init**(3)](/mmv_stats_init/3.md), [**mmv**(5)](/mmv/5.md), [**pcp.conf**(5)](/pcp.conf/5.md) and [**pcp.env**(5)](/pcp.env/5.md).
