Performance Co-Pilot :: Projects

We welcome your involvement in the Performance Co-Pilot project!

We are greatly interested in any efforts to expand the scope of the available performance metrics with new plugins or agents, to port existing performance tools to the PCP APIs, and to develop new clients to consume and display performance data delivered over the PCP APIs.

If you are interested in getting involved in any of these areas we recommend joining the PCP mailing list, the #pcp IRC channel on the FreeNode network, writing new code, and sending patches out early for review!

Some potential PCP projects:

  • New platform-independent PMDAs - e.g. OpenIPMI; hotproc port (see code in current released PCP version).

  • New Linux-specific metrics and PMDAs - hardware event counters; extended NFS client stats from recent kernels (/proc/self/mountstats); virtualisation statistics and state (via libvirt).

  • New Mac OS X PMDAs - per-process metrics; generic DTrace probe PMDA.

  • Other kernel PMDAs - e.g. FreeBSD. Packaging is required here, and for AIX and Solaris as well.

  • Agent for PostgreSQL.

  • Agents for proprietary databases like Oracle, DB2, Sybase, etc. (these were done once for IRIX and older database versions, but really need a complete rewrite by someone with relevant DBMS expertise). Note: code for much of an Oracle PMDA is merged in the tree now, and would make a good starting point for a production quality PMDA.

  • Changes to top(1) (or similar, see pmtop(1) in current released PCP version) to allow process monitoring across a cluster.

  • Modify your favourite monitoring tool to convert it to use the PCP APIs, and get distributed monitoring and retrospective replay for free.

  • SGI have an HTML-based Tutorial for PCP that was shipped with the IRIX PCP product. It needs some work to Linux-ise it and check it for correctness, and to cull the parts that are not in the Open Source PCP release.

The PCP GUI tools provide opportunities for development in the graphical environments on all of the platforms supported by PCP and QT. The scope for new ideas here is immense, but here are several suggestions to get started:

  • Move the pmtime interface code into the Qmc library and update pmdumptext to test and use it too (along the lines of pmval -g).

  • Make pmchart more dynamically extensible, using the QtScript feature in QT 4.3+ (or maybe Perl or some other high level language?). Aim here is to get to the point where the functionality of tools like gmemusage, grosview, pmgadgets, etc. can be implemented as scripts.

  • Complete the port of pmview (3D performance scenes) - significant progress has been made using Coin3D as an Inventor replacement, but some work remains before this is in a releasable state.