PMREP.CONF(5)
pmrep.conf ๐ the pmrep config file, bestie
<section name folded in: PMREP.CONF(5) โ File Formats Manual, iykyk>
โจ NAME โจ
pmrep.conf โ the pmrep configuration file, aka where you tell pmrep what to do before it even asks ๐
๐ธ DESCRIPTION ๐ธ
Okay so, pmrep? It's a customizable performance metrics reporting tool. Like, any available performance metric โ live or archived, system and/or application โ can be selected for reporting using one of the available output alternatives together with applicable formatting options. It's giving flexible, fr fr. โจ
The metrics you actually care about are named in the metricspec argument(s) on the pmrep command line. These metricspecs define individual metrics or pre-defined performance metricsets to be read from the configuration files described below. For command line argument details, go peek at pmrep(1). ๐
The pmrep.conf configuration file lets you set default runtime values and define any number of custom metricsets for pmrep. A metricset is a user-defined arbitrary set of performance metrics. This lets users create specifically crafted metricsets that are particularly relevant for their application or environment. Instead of being dependent on what existing tools provide, or collecting the needed data with several disjoint utilities, users can define custom metricsets by merely editing pmrep.conf. So iconic of them. See below for the metricset specification. ๐ฆ
In case pmrep configuration files are read from a directory, then values for the [options] and [global] sections will be combined from each file where defined. The last definition of a directive wins โ meaning the last definition will be used in case it's defined multiple times. However, custom metricset sections will not be combined; only the last definition found will be used for reporting. Not me learning this the hard way ๐
Options via environment values (see pmGetOptions(3)) override the corresponding built-in default values (if any). Configuration file options override the corresponding environment variables (if any). Command line options override the corresponding configuration file options (if any). It's a whole hierarchy, bestie โ like a friendship pyramid but for settings. ๐
๐ FILE FORMAT ๐
The file has an ini-style syntax and consists of sections and settings. A section begins with the name of the section in square brackets and continues until the next section begins. An example section with two settings follows:
[section]
key = value
key2 = value2
The supported data types for values are string, integer, and boolean. Values should not to be quoted expect when the value consists solely of whitespace (i.e., a whitespace-only column separator).
Careful, bestie: that "expect" is doing a lot of work there โ just don't be out here quoting everything, unless your value is literally only whitespace. Then quote it. ๐ญ
A line comment starts with a hash sign (#) or a semicolon (;). Inline comments are not supported. So no sneaking a little note at the end of a line, she will not read it ๐
pmrep.conf must be readable by the user invoking pmrep.
Any option described below with a corresponding command line option contains additional functional description in pmrep(1).
...and that's only part 1, we're literally just getting started โจ
๐ซ SPECIAL SECTIONS ๐ซ
Okay bestie, so the config file has these special lil sections that do โจspecific thingsโจ and honestly they're the main character. Let's get into it.
๐ The [options] section ๐
So this section gets read every single time pmrep runs, no cap. It's where you set your default runtime options. And here's the tea: these can get overridden by metricspec-specific options or by command line options. Metrics are not allowed in this section, so don't even try it ๐
โโ๏ธ.
Allowed settings
Here's everything you can put in there:
version(integer) โ says what version the config file is. Defaults to1. Fr fr the only value supported rn is1, so yeah.source(string) โ the source for your metrics. Here's how it reads your vibe: if the value contains a slash (/), it's interpreted as a PCP archive. If it's set to the special character@, the local DSO PMDA context gets used. Otherwise it's interpreted as a hostname. The command line parameters that correspond are-a,-h, and-L. Defaults tolocal:(check PCPIntro(1) for that one).output(string) โ where your output goes. Corresponding command line option is-o. For the supported output targets, go look at pmrep(1). Defaults tostdout.speclocal(string) โ the local DSO PMDAs that get made available when you're using the local DSO PMDA context. Corresponding command line option is-K. For the syntax deets, see pmSpecLocalPMDA(3). Use a semicolon (;) to separate more than one spec, okay? Undefined by default.derived(string) โ derived metric specifications. Corresponding command line option is-e. Syntax description lives in pmrep(1). Undefined by default.daemonize(boolean) โ whether to daemonize on startup or not. Corresponding command line option is--daemonize. Defaults tono.header(boolean) โ whether to print headers. Corresponding command line option is-H. Defaults toyes.instinfo(boolean) โ whether to include instance information as part of headers. Corresponding command line option is--no-inst-info. Defaults toyes.unitinfo(boolean) โ whether to include unit information as part of stdout headers. Corresponding command line option is-U. Defaults toyes.csv_unitinfo(boolean) โ whether to include unit information as part of CSV headers. Corresponding command line option is--csv-unit-info. Defaults tono.globals(boolean) โ whether to include metrics from the[global]section (scroll down bb) for reporting. Corresponding command line option is-G. Defaults toyes.timestamp(boolean) โ whether to print the timestamp. Corresponding command line option is-p. Defaults tono.samples(integer) โ how many samples to print. Corresponding command line option is-s. Undefined by default (which means unlimited number of samples, unless some other option limits it).interval(string) โ the interval between samples. Corresponding command line option is-o. Follows the time syntax described in PCPIntro(1). Defaults to1s.delay(boolean) โ whether to pause between samples when you're replaying from an archive, instead of replaying at full speed like a maniac. Corresponding command line option is-d. Defaults tono.type(string) โ whether to output raw metric values by disabling all rate conversions, or convert cumulative counters to rates (that's the default). Corresponding command line option is-r. Allowed values aredefaultorraw.type_prefer(string) โ same astypebut it does not override possible per-metric type specifications. Corresponding command line option is-R. Allowed values aredefaultorraw.ignore_incompat(boolean) โ says incompatible metrics are to be ignored. Corresponding command line option is-I. Defaults tono.ignore_unknown(boolean) โ says unknown metrics are to be ignored. Corresponding command line option is-5. Defaults tono.names_change(string) โ the action to take on PMNS changes during sampling. Corresponding command line option is-4. Defaults toignore.instances(string) โ the instances to be reported. Corresponding command line option is-i. Undefined by default (meaning all instances get reported).live_filter(boolean) โ says live filtering should be enabled. Corresponding command line option is-j. Defaults tono.rank(integer) โ the value used for ranking instances. Corresponding command line option is-J. Undefined by default (all instances are reported).overall_rank(boolean) โ says overall ranking should be performed. Corresponding command line option is-2. Defaults tono.overall_rank_alt(boolean) โ says overall ranking with the alternative output format should be performed. Corresponding command line option is-3. Defaults tono.limit_filter(integer) โ the value used with limit filtering. Corresponding command line option is-8. Undefined by default (all instances are reported).limit_filter_force(integer) โ same aslimit_filterbut it overrides possible per-metric specifications. Corresponding command line option is-9. Undefined by default (all instances are reported).invert_filter(boolean) โ says invert filtering should be performed. Corresponding command line option is-n. Defaults tono.predicate(string) โ the metrics to be used as predicate metrics. Corresponding command line option is-N. Undefined by default.sort_metric(string) โ the metrics to be used as sort reference metrics. Corresponding command line option is-6. Undefined by default.omit_flat(boolean) โ says single-valued "flat" metrics get omitted from reporting. Corresponding command line option is-v. Defaults tono.include_labels(boolean) โ says PCP metric labels should be included in the output. Corresponding command line option is-m. Defaults tono.include_texts(boolean) โ when writing a PCP archive, says PCP help texts shall be included in the created archive. Corresponding command line option is--include-texts. Defaults tono.colxrow(string) โ swap columns and rows in stdout output, using the value as the metric text label. Corresponding command line option is-X. Undefined by default (no swapping).width(integer) โ the width of stdout output columns. Corresponding command line option is-w. Forced minimum is3. Defaults to the shortest width that can fit the metric text label.width_force(integer) โ same aswidthbut it overrides possible per-metric specifications. Corresponding command line option is-W. Forced minimum is3.precision(integer) โ how many decimals to use for numeric non-integer output values. Corresponding command line option is-P. Defaults to3.precision_force(integer) โ same asprecisionbut it overrides possible per-metric specifications. Corresponding command line option is-0. Undefined by default.delimiter(string) โ the column separator. Corresponding command line option is-l. The default depends on the output target, so peek at pmrep(1).extcsv(boolean) โ whether to write extended CSV output, similar to sadf(1). Corresponding command line option is-k. Defaults tono.extheader(boolean) โ whether to print an extended header. Corresponding command line option is-x. Defaults tono.fixed_header(boolean) โ says a fixed header should be used. Corresponding command line option is-7. Defaults tono.repeat_header(integer) โ how often to repeat the header. Corresponding command line option is-E.autouses the terminal height. Defaults to0(header is not repeated).dynamic_header(boolean) โ says a dynamic header should be used. Corresponding command line option is-1. Defaults tono.separate_header(boolean) โ whether to print a separate header. Corresponding command line option is-g. Defaults tono.timefmt(string) โ the format string for formatting the timestamp. Corresponding command line option is-f. Defaults to%H:%M:%S.interpol(boolean) โ whether to interpolate reported archive values. Corresponding command line option is-u. See pmrep(1) for the complete description. Defaults toyes.count_scale(string) โ the unit/scale for counter metrics. Corresponding command line option is-q. For the supported syntax, see pmrep(1). Undefined by default (no scaling).count_scale_force(string) โ likecount_scalebut it overrides possible per-metric specifications. Corresponding command line option is-Q. Undefined by default.space_scale(string) โ the unit/scale for space metrics. Corresponding command line option is-b. For the supported syntax, see pmrep(1). Undefined by default (no scaling).space_scale_force(string) โ likespace_scalebut it overrides possible per-metric specifications. Corresponding command line option is-B. Undefined by default.time_scale(string) โ the unit/scale for time metrics. Corresponding command line option is-y. For the supported syntax, see pmrep(1). Undefined by default (no scaling).time_scale_force(string) โ liketime_scalebut it overrides possible per-metric specifications. Corresponding command line option is-Y. Undefined by default.
๐ฆ The [global] section ๐ฆ
So the [global] section is where you define metrics that get reported in addition to any other separately defined metric or metricset. Bestie, listen โ configuration options are not allowed in this section, only metrics. Global metrics are reported by default, and you can use the command line option -G or the configuration file option globals to turn global metrics off.
Allowed settings
Only metricspecs are allowed in this section, periodt. Scroll on down for the metricspec specification ๐
ngl that's a lot of options but you got this ๐ keep reading, we're not done yet
๐ฆ CUSTOM SECTIONS ๐ฆ
Okay bestie, here's the fun part. Any section that isn't [options] or [global] gets read as a whole new metricset specification. That section name? Completely up to you โ it's arbitrary, and usually it's just a lil reference to what it covers or what it's for. A custom section can hold options, metricspecs, or honestly both, no rules against it.
All the metrics you specify in a custom section (metricset) get reported when pmrep reports that particular metricset. And yes you can define more than one metricset (custom section) โ you do it on the command line, and then pmrep reports the combination of all the metrics specified in the metricsets you picked. It's giving "why choose" energy fr fr.
โจ Allowed settings โจ
Any option that's valid in the [options] section is also valid in a custom section. And here's the rule to remember: any option or metric defined in a custom section will override the same option or metric that may have been defined earlier. Later wins, periodt. (See below for the metricspec specification, we're getting there ๐
)
๐ METRICSET SPECIFICATION ๐
There are three forms of the metricspec, and you're gonna know all three:
- On the command line, a metricspec can start with a colon (``:'') to indicate a reference to a metricset (custom section) that should be read from a
pmrepconfiguration file. - The compact form of a metricspec is a one-line metric specification, and it works both on the command line and in the
[global]and custom sections of the config file. The only difference when you use it in the config file? The metric name is used as the key and the optional specifiers become values. The compact form of the metricspec is specified in detail inpmrep(1). - The verbose form of a metricspec โ and this one is valid only in the configuration file (see below, bestie).
In a custom section, a key containing a dot (``.'') is interpreted as a metric name, and a non-option key that does not contain a dot is interpreted as an identifier (handle) to bind related declarations together. That identifier is arbitrary and isn't used for anything else except binding the specifiers below and the metric together. Basically it's the group chat name for your metric's little squad ๐ซถ
The verbose form of a metricspec starts with a declaration consisting of a mandatory identifier as the key and a performance metric name (a PMNS node) as its value. This equals the compact form of the metricspec defining the same performance metric without any of the optional specifiers defined. Same metric, zero extras.
The following specifiers are optional in the verbose form, and you can use them as keys in any order โ just take an earlier declared identifier, follow it with a dot, then the specifier (as in identifier.specifier). See the example further down below ๐
labelโ Defines text label for the metric used by supporting output targets.formulaโ Defines the needed arithmetic expression for the metric. For details, seepmRegisterDerived(3).instancesโ Defines the instances to be reported for the metric. For details, seepmrep(1).unitโ Defines the unit/scale conversion for the metric. Needs to be dimension-compatible and is used with non-string metrics. For allowed values, seepmrep(1).typeโ If set torawrate conversion for the metric will be disabled.widthโ Defines the width of the output column for the metric.precisionโ Defines precision for numeric non-integer output values.limitโ Defines value limit filter for numeric metric values.
๐ EXAMPLE ๐
Okay so this example is a whole vibe. It's got a short [options] section setting some locally wanted default values, and then it defines the global metrics kernel.all.sysfork using the compact form and mem.util.allcache using the verbose form of a metricspec. That last one is a derived metric using the specified formula. Both of these metrics will be included in reporting unless you disable them with -G or globals = no.
Three different metricsets are also specified: db1, db2, and sar-w. Iconic, honestly.
The DB sets define a host to be used as the source for the metrics. Both use the verbose form of a metricspec (as the non-option key set does not contain the dot) to include all postgresql related metrics. ๐
The sar-w set is an example of how to mimic an existing tool with pmrep. Not me building a whole tool clone in a config file ๐ญ
The system default pmrep configuration files contain many more examples, and โ fun fact โ the tab key on the command line after a colon completes available metricsets (with bash and zsh). So handy, you're welcome.
[options]
timestamp = yes
interval = 2s
extheader = yes
repeat_header = auto
space_scale = MB
[global]
kernel.all.sysfork = forks,,,,8
cacheall = mem.util.allcache
cacheall.formula = mem.util.bufmem + mem.util.cached + mem.util.slab
cacheall.width = 12
[db1]
source = db-host1.example.com
set = postgresql
[db2]
source = db-host2.example.com
set = postgresql
[sar-w]
header = yes
unitinfo = no
globals = no
timestamp = yes
precision = 2
delimiter = " "
kernel.all.sysfork = proc/s,,,,12
kernel.all.pswitch = cswch/s,,,,9
๐ FILES ๐
$PCP_SYSCONF_DIR/pmrep/*.confโ system provided defaultpmrepconfiguration files
โญ 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).
For environment variables affecting PCP tools, see pmGetOptions(3).
๐ SEE ALSO ๐
PCPIntro(1), pmrep(1), pmGetOptions(3), pmRegisterDerived(3) and pmSpecLocalPMDA(3).
And that's the whole page bestie!! This lil masterpiece comes to you from Performance Co-Pilot, PCP version, and it's PMREP.CONF(5) โ go forth and configure your metricsets, you absolute main character ๐ซถ๐โจ
๐ฆ where this page comes from
- arch rolling: pcp 7.2.2-2 ยท GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
- centos-stream 10: pcp-doc 7.1.5-6.el10 ยท GPL-2.0-or-later AND CC-BY-3.0
- fedora 43: pcp-doc 7.2.1-1.fc43
- fedora 43: pcp-doc 7.2.2-1.fc43
- fedora 43: pcp-doc 7.2.2-2.fc43 ยท GPL-2.0-or-later AND CC-BY-3.0
- fedora 44: pcp-doc 7.2.1-1.fc44
- fedora 44: pcp-doc 7.2.2-1.fc44
- fedora 44: pcp-doc 7.2.2-2.fc44 ยท GPL-2.0-or-later AND CC-BY-3.0
- ubuntu stonking: pcp 7.2.1-2build1
- Copyright (C) 2015-2026 Marko Myllynen <myllynen@redhat.com>
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms