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

# pmnsadd(1)

add new names to the Performance Co-Pilot PMNS

## NAME

**pmnsadd** - add new names to the Performance Co-Pilot PMNS

## SYNOPSIS

**$PCP\_BINADM\_DIR/pmnsadd** \[**-?**\] \[**-n** *namespace*\] *file*

## DESCRIPTION

[**pmnsmerge**(1)](/pmnsmerge/1.md) performs the same function as **pmnsadd** and is faster, more robust and more flexible. It is therefore recommended that [**pmnsmerge**(1)](/pmnsmerge/1.md) be used instead.

**pmnsadd** adds subtree(s) of new names into a Performance Metrics Name Space (PMNS), as used by the components of the Performance Co-Pilot (PCP).

Normally **pmnsadd** operates on the default Performance Metrics Name Space (PMNS), however if the **-n** option is specified an alternative namespace is used from the file *namespace*.

The default PMNS is found in the file *$PCP\_VAR\_DIR/pmns/root* unless the environment variable **PMNS\_DEFAULT** is set, in which case the value is assumed to be the pathname to the file containing the default PMNS.

The new names are specified in the *file*, arguments and conform to the syntax for PMNS specifications, see [**PMNS**(5)](/PMNS/5.md). There is one PMNS subtree in each *file*, and the base PMNS pathname to the inserted subtree is identified by the first group named in each *file*, e.g. if the specifications begin

```
myagent.foo.stuff {
    mumble	123:45:1
    fumble	123:45:2
}
```

then the new names will be added into the PMNS at the non-leaf position identified by `myagent.foo.stuff`, and following all other names with the prefix `myagent.foo`.

The new names must be contained within a single subtree of the namespace. If disjoint subtrees need to be added, these must be packaged into separate files and **pmnsadd** used on each, one at a time.

All of the files defining the PMNS must be located within the directory that contains the root of the PMNS, this would typically be **$PCP\_VAR\_DIR/pmns** for the default PMNS, and this would typically imply running **pmnsadd** as root.

As a special case, if *file* contains a line that begins `root {` then it is assumed to be a complete PMNS that needs to be merged, so none of the subtree extraction and rewriting is performed and *file* is handed directly to [**pmnsmerge**(1)](/pmnsmerge/1.md).

Provided some initial integrity checks are satisfied, **pmnsadd** will update the PMNS using [**pmnsmerge**(1)](/pmnsmerge/1.md) - if this fails for any reason, the original namespace remains unchanged.

## OPTIONS

The available command line options are:

- **-n** *pmnsfile*

  Load an alternative Performance Metrics Name Space ([**PMNS**(5)](/PMNS/5.md)) from the file *pmnsfile*.

- **-?**

  Display usage message and exit.

## CAVEATS

Once the writing of the new *namespace* file has begun, the signals SIGINT, SIGHUP and SIGTERM will be ignored to protect the integrity of the new files.

## FILES

- *$PCP\_VAR\_DIR/pmns/root*

  the default PMNS, when the environment variable **PMNS\_DEFAULT** is unset

## 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).

## SEE ALSO

[**pmnsdel**(1)](/pmnsdel/1.md), [**pmnsmerge**(1)](/pmnsmerge/1.md), [**pcp.conf**(5)](/pcp.conf/5.md), [**pcp.env**(5)](/pcp.env/5.md) and [**PMNS**(5)](/PMNS/5.md).
