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 your changes out early for review.
Our preferred method of exchanging code, documentation, tests and new ideas is via git. Feel free to locate your source on either a public hosting service (e.g. github) or for regular committers we can create an account for you on either oss.sgi.com or sourceware.org.
Some potential PCP projects include:
New platform-independent PMDAs.
Modify your favourite monitoring tool to convert it to use the PCP APIs, and get distributed monitoring and retrospective replay for free.
New Linux-specific metrics and PMDAs - hardware event counters; extended NFS client stats (/proc/self/mountstats); virtualisation statistics and state (via libvirt), and so on.
New Mac OS X PMDAs - per-process metrics; generic DTrace probe PMDA.
Extension to kernel PMDAs - e.g. FreeBSD, AIX.
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.
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 a scripting language like python, LUA or the QtScript feature in QT 4.3+. 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 much work remains before this is in a releasable state.