PMDAPERFEVENT(1)

NAME
pmdaperfevent - hardware performance counter performance metrics domain agent (PMDA)

SYNOPSIS
$PCP_PMDAS_DIR/perfevent/pmdaperfevent [-d domain] [-l logfile] [-U username] [-i port] [-p] [-u socket] [-6]

DESCRIPTION
pmdaperfevent is a Performance Metrics Domain Agent (PMDA) that configures and reads the hardware performance counters using the Linux kernel perf_event API.

The perfevent PMDA exports metrics for hardware performance counters that are configurable from the Linux kernel perf_event API. The PMDA uses the libpfm4 library to access the hardware performance counters so any counters that are supported in libpfm4 should be available. Also included is the ability to read the Intel RAPL counters via direct MSR access. The PMDA supports automatically loading different counters for each hardware architecture. A single configuration file is used to specify the desired counters for each hardware performance monitoring unit (PMU). The configuration file allows different counters to be programmed on different CPUs and supports round-robin assignment of uncore counters needed for some AMD chips. The PMDA configures the counters to count events in both user and kernel mode. This means that the hardware counters are unavailable to use by normal unprivileged user applications when they are in use by the PMDA. The PMDA provides a mechanism to temporarily disable the system-wide counters in order to allow normal users to be able to use the counters if they wish. See perfalloc(1) for details.

A brief description of the pmdaperfevent 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 perfevent.log is written in the current directory of pmcd(1) when pmdaperfevent 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 privileged "root" account.

-i  listen on given port number for connection from pmcd(1)

-p  communicate with pmcd(1) via stdin/stdout

-u  expect pmcd(1) to connect on given unix domain socket

-6  expect pmcd(1) to connect on given ipv6 port (number or name)

INSTALLATION
The perfevent PMDA is not activated by default. To install the PMDA, do the following as root:

# cd $PCP_PMDAS_DIR/perfevent
# ./Install

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

# cd $PCP_PMDAS_DIR/perfevent
# ./Remove

pmdaperfevent is launched by pmcd(1) and should never be executed directly. The Install and Remove scripts notify pmcd(1) when the agent is installed or removed.

FILES
$PCP_PMCDCONF_PATH
    command line options used to launch pmdaperfevent
$PCP_PMDAS_DIR/perfevent/perfevent.conf
    default configuration file for the PMDA. See perfevent.conf(5) for detailed information.
$PCP_PMDAS_DIR/perfevent/help
    default help text file for the perfevent metrics
$PCP_PMDAS_DIR/perfevent/Install
    installation script for the pmdaperfevent agent
$PCP_PMDAS_DIR/perfevent/Remove
    undo installation script for the pmdaperfevent agent
$PCP_LOG_DIR/pmcd/perfevent.log
    default log file for error messages and other information from pmdaperfevent

BUGS
Each event is placed in its own group and there is no way to group related events together so they are guaranteed to be simultaneously active. A workaround for this is to ensure that the number of configured events is less than or equal to the number of available hardware counters. This means that the events will not be time-multiplexed by the kernel and will be simultaneously active.

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

SEE ALSO
perfalloc(1), perfevent.conf(5), PCPIntro(1), pmcd(1), PMAPI(3), pcp.conf(5) and pcp.env(5).