System-level performance analysis toolkit

The Performance Co-Pilot is a toolkit designed for monitoring and managing system-level performance. These services are distributed and scalable to accommodate very complex system configurations and performance problems.

PCP supports many different platforms, including (but not limited to) Linux, Mac OS X, Solaris and Windows. From a high-level PCP can be considered to contain two classes of software utility:

PCP Collectors

These are the parts of PCP that collect and extract performance data from various sources, e.g. the operating system kernel.

PCP Monitors

These are the parts of PCP that display data collected from hosts (or archives) that have the PCP Collector installed. Many monitor tools are available as part of the core PCP release, while other (typically graphical) monitoring tools are available separately in the PCP GUI or PCP WebApp packages.

The PCP architecture is distributed in the sense that any PCP tool may be executing remotely. On the host (or hosts) being monitored, each domain of performance metrics, whether the kernel, a service layer, a database management system, a web server, an application, etc. requires a Performance Metrics Domain Agent (PMDA) which is responsible for collecting performance measurements from that domain. All PMDAs are controlled by the Performance Metrics Collector Daemon (PMCD) on the same host.

Client applications (the monitoring tools) connect to PMCD, which acts as a router for requests, by forwarding requests to the appropriate PMDA and returning the responses to the clients. Clients may also access performance data from a PCP archive for retrospective analysis.

lightbulb_outline View ideas list


  • python
  • javascript
  • c
  • linux
  • windows


  • Operating Systems
  • high performance computing
  • visualization
  • web development
  • kernel
  • performance
comment IRC Channel
email Mailing list
mail_outline Contact email

Performance Co-Pilot 2017 Projects

  • Suvigya Vijay
    Custom Graphs in Vector
    Vector currently provides us with a set number of widgets which are generally used to monitor performance of the system. The idea is to extend the...
  • Fumiya Shigemitsu
    Device Mapper statistics for PCP
    It is a project to make the data provided by dmstats available to PCP tools by use of creating PCP PMDA in order to provide flexible IO statistics...
  • Saurav Sachidanand
    Implement a PCP Instrumentation API in Rust
    The primary goal of this project is to build a native PCP MMV instrumentation library in Rust with a high-level API that developers can use in their...
  • Alperen Karaoglu
    Performance Co-Pilot Project Proposal: Blocked process detection and reporting
    When analyzing performance, especially in systems that have multi-core processors, it is important to be able to study how each process performs. To...
  • Ronak Jain
    Prometheus Metric Exporter / Importer
    With this proposal, I propose to implement a bridge between Prometheus and...