NAME
mmv - Memory Mapped Values for Performance Co-Pilot
SYNOPSIS
$PCP_TMP_DIR/mmv/<file>
DESCRIPTION
The files in $PCP_TMP_DIR/mmv are generated by mmv_stats_init()
function from libpcp_mmv library. There could be multiple files in this
directory, each file representing a single source of the performance
metrics. The metrics are harvested by the mmv PMDA which exports them
to the rest of the Performance Co-Pilot infrastructure.
FILE FORMAT
Each file starts with the following header:
+-------+--------+--------------------------+
|Offset | Length | Name |
+-------+--------+--------------------------+
| 0 | 4 | tag == "MMV\0" |
+-------+--------+--------------------------+
| 4 | 4 | Version |
+-------+--------+--------------------------+
| 8 | 8 | Generation 1 |
+-------+--------+--------------------------+
| 16 | 8 | Generation 2 |
+-------+--------+--------------------------+
| 24 | 4 | Number of TOC entries |
+-------+--------+--------------------------+
| 28 | 4 | Flags |
+-------+--------+--------------------------+
| 32 | 4 | Process identifier (PID) |
+-------+--------+--------------------------+
| 36 | 4 | Cluster identifier |
+-------+--------+--------------------------+
The generation numbers are timestamps at the time of file creation, and
must match for the file to be considered by the MMV PMDA.
The flags can specify ways in which the client would like the MMV PMDA
to behave - e.g. the MMV_FLAG_PROCESS flag specifies that only if the
process identified by PID is currently running should those values be
exported.
Finally, if set, the cluster identifier is a hint to the MMV PMDA as to
what cluster should be used with this application when forming the
individual metric identifiers. A performance metric identifier (see
PMDA(3)) consists of the PMDA domain number, the cluster number, and
the individual item numbers described in the Metrics section.
The header is followed by at least 2 TOC sections: one section for
metrics and another for values. The TOC section has the following
format:
+-------+--------+---------------------------------------------+
|Offset | Length | Value |
+-------+--------+---------------------------------------------+
| 0 | 4 | Section Type (see mmv_stats.h) |
+-------+--------+---------------------------------------------+
| 4 | 4 | Number of entries in the section |
+-------+--------+---------------------------------------------+
| 8 | 8 | Section’s offset from the start of the file |
+-------+--------+---------------------------------------------+
The section types are:
1: Indoms (instance domain definitions)
2: Instances
3: Metrics (metric definitions)
4: Values
5: String
The only mandatory sections are Metrics and Values. Indoms and
Instances sections only appear if there are metrics with multiple
instances. String sections only appear if there are metrics with
string values, or when Metrics or Indoms are defined with help text.
The entries in the Indoms section have the following format:
+-------+--------+--------------------------------------+
|Offset | Length | Value |
+-------+--------+--------------------------------------+
| 0 | 4 | Unique serial number for this domain |
+-------+--------+--------------------------------------+
| 4 | 4 | Number of entries in the domain |
+-------+--------+--------------------------------------+
| 8 | 8 | Offset to first instance |
+-------+--------+--------------------------------------+
| 16 | 8 | Short help text offset |
+-------+--------+--------------------------------------+
| 24 | 8 | Long help text offset |
+-------+--------+--------------------------------------+
The entries in the Instances section have the following format:
+-------+--------+-------------------------------+
|Offset | Length | Value |
+-------+--------+-------------------------------+
| 0 | 8 | Offset into the indom section |
+-------+--------+-------------------------------+
| 8 | 4 | Unused padding (zero filled) |
+-------+--------+-------------------------------+
| 12 | 4 | Internal instance identifier |
+-------+--------+-------------------------------+
| 16 | 64 | External instance identifier |
+-------+--------+-------------------------------+
The entries in the Metrics section have the following format:
+-------+--------+-------------------------------+
|Offset | Length | Value |
+-------+--------+-------------------------------+
| 0 | 64 | Metric Name |
+-------+--------+-------------------------------+
| 64 | 4 | Metric Item (see PMDA(3)) |
+-------+--------+-------------------------------+
| 68 | 4 | Metric Type (see mmv_stats.h) |
+-------+--------+-------------------------------+
| 72 | 4 | Semantics (see PMAPI(3)) |
+-------+--------+-------------------------------+
| 76 | 4 | Dimensions (see PMAPI(3)) |
+-------+--------+-------------------------------+
| 80 | 4 | Instance Domain ID |
+-------+--------+-------------------------------+
| 84 | 4 | Unused padding (zero filled) |
+-------+--------+-------------------------------+
| 88 | 8 | Short help text offset |
+-------+--------+-------------------------------+
| 96 | 8 | Long help text offset |
+-------+--------+-------------------------------+
The entries in the Values section have the following format:
+-------+--------+------------------------------------+
|Offset | Length | Value |
+-------+--------+------------------------------------+
| 0 | 8 | pmAtomValue (see PMAPI(3)) |
+-------+--------+------------------------------------+
| 8 | 8 | Extra space for STRING and ELAPSED |
+-------+--------+------------------------------------+
| 16 | 8 | Offset into the Metrics section |
+-------+--------+------------------------------------+
| 24 | 8 | Offset into the Instances section |
+-------+--------+------------------------------------+
Each entry in the strings section is a 256 byte character array,
containing a single NULL-terminated character string. So each string
has a maximum length of 256 bytes, which includes the terminating NULL.
SEE ALSO
PCPIntro(1), PMAPI(3), mmv_stats_init(3), pcp.conf(4) and pcp.env(4).