# genpmda

## NAME



           **genpmda** - Performance Co-Pilot PMDA Generator
    


## SYNOPSIS



           **genpmda**[**-dv**] [**-D** _domain_] [**-n** _pmns_] [**-o** _dir_] [**-s** _stdpmid_] [**-t**
           _topdir_] **-c** _config_ **-i** _IAM_
    


## DESCRIPTION



           **genpmda** is a rapid application development tool for creating new
           Performance Metrics Domain Agents, see PMDA(3).  It provides a
           very easy and efficient way to extend the Performance Co-pilot
           (PCP) with new performance metrics without needing to understand
           the low level details of how PMDAs are constructed.
    
           **genpmda** reads a config file containing an augmented Performance
           Metrics Name Space, see PMNS(5), and automatically generates
           virtually all of the source code to implement a fully functional
           PMDA, including the Makefile, name space, support scripts for
           configuring the new PMDA, and the metrics help text.  Fairly
           simple PMDAs can be automatically generated from the config file
           without writing any additional code.  More complicated PMDAs, e.g.
           containing multiple instance domains, require only the refresh
           methods for the instance domains to be written manually.
    
           An example of the config file format accepted by **genpmda** is given
           below.
    


## OPTIONS



           **Required options:**
    
           **-c** _config_
                input _config_ file, see example below
    
           **-i** _IAM_
                PMDA name _IAM_ , should appear in _stdpmid_ or the **-D** option must
                be used to specify a _domain_.
    
           **Other options:**
    
           **-d** generate an Install script for a daemon PMDA (default is DSO)
    
           **-D** _domain_
                use _domain_ number in the generated **pmns** and **domain.h**(if **-s**
                is not given)
    
           **-n** _pmns_
                use _pmns_ as root of the namespace (default matches **-i** flag)
    
           **-o** _dir_
                use _dir_ for generated source code, default **./generated**
    
           **-s** _stdpmid_
                path to _stdpmid_ (default **../../pmns/stdpmid**)
    
           **-t** _topdir_
                use _topdir_ in generated GNUmakefile, default **../../..**
    
           **-v** print verbose messages about what **genpmda** is doing.
    
           Example:
               Generate an "example" PMDA using domain 99:
    
               **genpmda -D 99 -v -i EXAMPLE -c example.conf**
    
           Here is _example.conf_ config file (for the required **-c** option):
    
                example {
                    metric
                }
    
                example.metric {
                    ##  metric            string
                    ##  pmid              EXAMPLE:CLUSTER:0
                    ##  indom             PM_INDOM_NULL
                    ##  type              PM_TYPE_STRING
                    ##  units             PMDA_PMUNITS(0,0,0,0,0,0)
                    ##  semantics         PM_SEM_DISCRETE
                    ##  briefhelptext     one line help text for example.metric.string
                    ##  helptext          long help text for example.metric.string
                    ##  helptext          This is the second line of the long help text
                    ##  helptext          and this is the third line.
                    ##  fetch             function example_string_fetch_callback
                    ##  code              atom->cp = "hello world";
                    ##  code              return 1;
                    ##  endmetric
                }
    


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


* * *