# pmdaperfevent

## 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 also counts for events exposed in the kernel via
           /sys/bus/event_source/devices directory. The PMU device name and
           the event name must be mentioned in the configuration file.
           Otherwise, the metric won't be available to monitor through this
           PMDA.
    
           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.
    
           Note that **pmdaperfevent** is affected by the value of the
           _kernel.perf_event_paranoid_ setting, which can be adjusted by
           sysctl(8).
    
           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**
    


## UPGRADING



           Some metric names have changed starting in version 3.10.8 to
           better conform to PMNS conventions.  pmlogrewrite(1) can be used
           to update old archives.  A helper utility,
           **$PCP_PMDAS_DIR/perfevent/perfevent-makerewrite.pl** will generate a
           config file that is suitable for use with pmlogrewrite(1) to
           update the metric names in existing archives.
    


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


* * *