Performance Co-Pilot is a system level performance monitoring and management suite, particularly suited for use in enterprise environments. PCP has shipped and been fully supported by Red Hat since RHEL 6.6 and in many other distributions (e.g. Fedora since F15, Debian, Ubuntu, etc.). It's a stable, actively maintained and developed open source project, with a supportive community, see the PCP Home Page and the project page on GITHUB and the git repo.
- PMDA - a Performance Metrics Domain Agent, i.e. a plugin agent responsible for a set of particular metrics
- PMCD - the Performance Metrics Collection Daemon - the pmcd service daemon serves requests from clients by routing to PMDAs
- pmval - a generic client that connections to PMCD and can fetch and display metrics (live mode). All clients can also replay logs (archive mode).
- pmchart - a generic GUI client - displays live time-series charts and can also replay archived data
- pmlogger - the pmlogger service daemon - also a client, it fetches metrics and saves them to performance data archive files for later replay by clients
- Metrics coverage - PCP captures just about everything exported by the Linux /proc and /sys pseudo filesystems, including per-process data. PCP is easily extensible and has around 70 plugins available, e.g. Linux platform, Oracle, mmv (for Java/JVM), libvirt, Docker containers and many many others, with new agents being added in every release.
- Namespace and metadata - PCP has a uniform hierarchical metrics namespace with metadata for all metrics - data type (integer/string/block/event), semantics (counter/instant/etc), scaling units (time/count/space dimensions), help text and so forth. Generic monitoring tools can use this meta-data to do appropriate scaling, formatting and rate conversion of metric data, which mostly eliminates the need for custom monitoring applications. See for example pmrep(1) and pmchart(1) and other tools. For users familiar with legacy tools such as sysstat, top and so forth, PCP includes front-end tools with similar usage, see How does Performance Co-Pilot (PCP) compare with sysstat and the Side-by-side comparison of PCP tools with legacy tools.
- Distributed Operation and Archive capture - PCP can export live data over secure IPC channels and also has logger services to capture archives for offsite or retrospective analysis. In essence, PCP has complete separation of the performance data capture (live or archive capture) from it's replay (live local, live remote, or archive replay). All PCP monitoring tools can do both live monitoring and archive replay and share common command line options, see PCPINTRO(1). This allows users to query live data (local or remote hosts), as well as traverse historical data for statistical reduction over whatever time period and sampling interval is required. PCP archives are also automatically included in sos-reports.
- Tools - PCP boasts a large variety of tools, with many console tools compatible with legacy sysstat tools (e.g. iostat, pidstat, vmstat, mpstat, uptime, free, atop, numastat, etc), as well as many generic tools for data probing and scripting. See There are also GUI tools for advanced interactive analysis and report generation.
- Security - PCP can be configured for localhost only (unix domain only with no inet domain sockets), or fully remote. When used for remote access, the PCP service daemons and libraries also support certificate based authentication with SSL encrypted IPC channels. A dedicated proxy daemon is also available for access thru firewalls.
- Documentation - PCP has extensive documentation, including two books and numerous white papers, HOWTOs, KCS solutions and articles (such as this one), etc. See references listed below.
- Support - PCP is fully supported in RHEL. You can open a case to get assistance from Red Hat support, or you can engage the community directly.
Knowledge Base Articles and Solutions
- Index of Performance Co-Pilot (PCP) articles, solutions, tutorials and white papers
- How do I install Performance Co-Pilot (PCP) on my RHEL server to capture performance logs
- What are all the Performance Co-Pilot (PCP) RPM packages in RHEL?
- How to use Performance Co-Pilot
- How do I gather performance data logs to upload to my support case using Performance Co-Pilot (PCP)
- How can I merge multiple PCP archives into one for a system level performance analysis covering multiple days or weeks
- How can I use Performance Co-Pilot (PCP) to capture a "once-off" performance data archive log for a specific interval of time
- How is Performance Co-Pilot (PCP) designed and structured?
- What are the typical Performance Co-Pilot (PCP) deployment strategies?
- How can I customize the Performance Co-Pilot logging configuration
- How can I change the default logging interval used by Performance Co-Pilot (PCP)?
- Are Red Hat planning to include PCP (Performance Co-Pilot) in RHEL?
- How do I configure a firewall on a RHEL server to allow remote monitoring with Performance Co-Pilot (PCP)?
- How does Performance Co-Pilot (PCP) compare with sysstat
- Side-by-side comparison of PCP tools with legacy tools
- How to use a non-default PMDA with PCP?
- pmiostat fails to replay a PCP archive log created on a RHEL6 system
- Overview of Additional Performance Tuning Utilities in Red Hat Enterprise Linux 7
- Interactive web interface for Performance Co-Pilot
- How can I run PCP services in a Docker container?
- How can I convert a collectl archive into a Performance Co-Pilot (PCP) archive?