summaryrefslogtreecommitdiff
path: root/man/man1/pmdabash.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/man1/pmdabash.1')
-rw-r--r--man/man1/pmdabash.1250
1 files changed, 250 insertions, 0 deletions
diff --git a/man/man1/pmdabash.1 b/man/man1/pmdabash.1
new file mode 100644
index 0000000..05a4faf
--- /dev/null
+++ b/man/man1/pmdabash.1
@@ -0,0 +1,250 @@
+'\"macro stdmacro
+.\"
+.\" Copyright (c) 2012 Red Hat.
+.\" Copyright (c) 2012 Nathan Scott. All Rights Reserved.
+.\"
+.\" This program is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License as published by the
+.\" Free Software Foundation; either version 2 of the License, or (at your
+.\" option) any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful, but
+.\" WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+.\" or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+.\" for more details.
+.\"
+.\"
+.TH PMDABASH 1 "PCP" "Performance Co-Pilot"
+.SH NAME
+\f3pmdabash\f1 \- Bourne-Again SHell trace performance metrics domain agent
+.SH SYNOPSIS
+\f3$PCP_PMDAS_DIR/bash/pmdabash\f1
+[\f3\-C\f1]
+[\f3\-d\f1 \f2domain\f1]
+[\f3\-l\f1 \f2logfile\f1]
+[\f3\-I\f1 \f2interval\f1]
+[\f3\-t\f1 \f2timeout\f1]
+[\f3\-U\f1 \f2username\f1]
+\f2configfile\f1
+.br
+.SH DESCRIPTION
+.B pmdabash
+is an experimental Performance Metrics Domain Agent (PMDA) which
+exports "xtrace" events from a traced
+.BR bash (1)
+process.
+This includes the command execution information that would
+usually be sent to standard error with the
+.BR "set -x"
+option to the shell.
+.PP
+Event metrics are exported showing each command executed, the
+function name and line number in the script, and a timestamp.
+Additionally, the process identifier for the shell and its parent
+process are exported.
+.PP
+This requires
+.B bash
+version 4 or later.
+.PP
+A brief description of the
+.B pmdabash
+command line options follows:
+.TP 5
+.B \-d
+It is absolutely crucial that the performance metrics
+.I domain
+number specified here is unique and consistent.
+That is,
+.I domain
+should be different for every PMDA on the one host, and the same
+.I domain
+number should be used for the same PMDA on all hosts.
+.TP 5
+.B \-l
+Location of the log file. By default, a log file named
+.I bash.log
+is written in the current directory of
+.BR pmcd (1)
+when
+.B pmdabash
+is started, i.e.
+.BR $PCP_LOG_DIR/pmcd .
+If the log file cannot
+be created or is not writable, output is written to the standard error instead.
+.TP 5
+.B \-s
+Amount of time (in seconds) between subsequent evaluations of the shell
+trace file descriptor(s).
+The default is 2 seconds.
+.PP
+.TP 5
+.B \-m
+Maximum amount of memory to be allowed for each event queue (one per traced process).
+The default is 2 megabytes.
+.TP 5
+.B \-U
+User account under which to run the agent.
+The default is the unprivileged "pcp" account in current versions of PCP,
+but in older versions the superuser account ("root") was used by default.
+.PP
+.SH INSTALLATION
+In order for a host to export the names, help text and values for the bash
+performance metrics, do the following as root:
+.PP
+.ft CW
+.nf
+.in +0.5i
+# cd $PCP_PMDAS_DIR/bash
+# ./Install
+.in
+.fi
+.ft 1
+.PP
+As soon as an instrumented shell script (see INSTRUMENTATION selection below) is
+run, with tracing enabled, new metric values will appear - no further setup of the
+agent is required.
+.PP
+If you want to undo the installation, do the following as root:
+.PP
+.ft CW
+.nf
+.in +0.5i
+# cd $PCP_PMDAS_DIR/bash
+# ./Remove
+.in
+.fi
+.ft 1
+.PP
+.B pmdabash
+is launched by
+.BR pmcd (1)
+and should never be executed directly.
+The Install and Remove scripts notify
+.BR pmcd (1)
+when the agent is installed or removed.
+.SH INSTRUMENTATION
+In order to allow the flow of event data between a
+.BR bash (1)
+script and
+.BR pmdabash ,
+the script should take the following actions:
+.PP
+.ft CW
+.nf
+.in +0.5i
+#!/bin/sh
+source $PCP_DIR/etc/pcp.sh
+
+pcp_trace on $@ # enable tracing
+echo "awoke, $count"
+
+pcp_trace off # disable tracing
+.in
+.fi
+.ft 1
+.PP
+The tracing can be enabled and disabled any number of times by the script.
+On successful installation of the agent, several metrics will be available:
+.PP
+.ft CW
+.nf
+.in +0.5i
+$ pminfo bash
+bash.xtrace.numclients
+bash.xtrace.maxmem
+bash.xtrace.queuemem
+bash.xtrace.count
+bash.xtrace.records
+bash.xtrace.parameters.pid
+bash.xtrace.parameters.parent
+bash.xtrace.parameters.lineno
+bash.xtrace.parameters.function
+bash.xtrace.parameters.command
+.in
+.fi
+.ft 1
+.PP
+When an instrumented script is running, the generation of event records
+can be verified using the
+.BR pmevent (1)
+command, as follows:
+.PP
+.ft CW
+.nf
+.in +0.5i
+$ pmevent \-t 1 \-x '' bash.xtrace.records
+host: localhost
+samples: all
+bash.xtrace.records["4538 ./test-trace.sh 1 2 3"]: 5 event records
+ 10:00:05.000 --- event record [0] flags 0x19 (point,id,parent) ---
+ bash.xtrace.parameters.pid 4538
+ bash.xtrace.parameters.parent 4432
+ bash.xtrace.parameters.lineno 43
+ bash.xtrace.parameters.command "true"
+ 10:00:05.000 --- event record [1] flags 0x19 (point,id,parent) ---
+ bash.xtrace.parameters.pid 4538
+ bash.xtrace.parameters.parent 4432
+ bash.xtrace.parameters.lineno 45
+ bash.xtrace.parameters.command "(( count++ ))"
+ 10:00:05.000 --- event record [2] flags 0x19 (point,id,parent) ---
+ bash.xtrace.parameters.pid 4538
+ bash.xtrace.parameters.parent 4432
+ bash.xtrace.parameters.lineno 46
+ bash.xtrace.parameters.command "echo 'awoke, 3'"
+ 10:00:05.000 --- event record [3] flags 0x19 (point,id,parent) ---
+ bash.xtrace.parameters.pid 4538
+ bash.xtrace.parameters.parent 4432
+ bash.xtrace.parameters.lineno 47
+ bash.xtrace.parameters.command "tired 2"
+ 10:00:05.000 --- event record [4] flags 0x19 (point,id,parent) ---
+ bash.xtrace.parameters.pid 4538
+ bash.xtrace.parameters.parent 4432
+ bash.xtrace.parameters.lineno 38
+ bash.xtrace.parameters.function "tired"
+ bash.xtrace.parameters.command "sleep 2"
+.in
+.fi
+.ft 1
+.SH FILES
+.PD 0
+.TP 10
+.B $PCP_PMCDCONF_PATH
+command line options used to launch
+.B pmdabash
+.TP 10
+.B $PCP_PMDAS_DIR/bash/help
+default help text file for the bash metrics
+.TP 10
+.B $PCP_PMDAS_DIR/bash/Install
+installation script for the
+.B pmdabash
+agent
+.TP 10
+.B $PCP_PMDAS_DIR/bash/Remove
+undo installation script for
+.B pmdabash
+.TP 10
+.B $PCP_LOG_DIR/pmcd/bash.log
+default log file for error messages and other information from
+.B pmdabash
+.PD
+.SH "PCP ENVIRONMENT"
+Environment variables with the prefix
+.B PCP_
+are used to parameterize the file and directory names
+used by PCP.
+On each installation, the file
+.B /etc/pcp.conf
+contains the local values for these variables.
+The
+.B $PCP_CONF
+variable may be used to specify an alternative
+configuration file,
+as described in
+.BR pcp.conf (5).
+.SH SEE ALSO
+.BR bash (1),
+.BR pmevent (1)
+and
+.BR pmcd (1).