We welcome your involvement in the Performance Co-Pilot (PCP) project.
We are particularly interested in 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.
For example:
- New platform-independent PMDAs - memcached; OpenIPMI; hotproc (see
code in current released PCP version).
- New Linux-specific PMDAs - hardware event counters (via OProfile);
extended NFS client stats from recent kernels (/proc/self/mountstats).
- New MacOSX PMDAs - per-process metrics; generic DTrace probe PMDA.
- Windows PMDAs - investigate switching the build to use the GNU
MinGW compilers, as we may then be able to make the kernel PMDA use
direct PerfCTR Windows API calls (instead of the current dual-compiler
approach).
- Other kernel PMDAs - FreeBSD, Solaris, AIX, etc. Packaging
is required for these platforms as well.
- Complete the Perl PMDA API (see cpan directory in current released
PCP version); simplified PMDA APIs for other scripting languages too.
- Agents for proprietary databases like Oracle, Informix and Sybase
(These were done once for IRIX and older database versions, but really
need a complete rewrite by someone with relevant DBMS expertise).
- Agents for open source databases like MySQL and PostgreSQL.
(Michal Kara once wrote a MySQL PMDA, for version 3.3 - needs some work
to modernise it, update the exported statistics, and get it merged).
- Changes to top(1) (or similar, see pmtop(1) in current
released PCP version) to allow process monitoring across a cluster.
- Collecting and exporting activity and performance data from
common libraries (SGI have done MPI, but there are other candidate
libraries in the parallel programming world and elsewhere).
- Patches to your favourite monitoring tool to convert it to use the
PCP APIs, and so 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 open source PCP strip chart tool, kmchart, provides 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, so
here are several suggestions to get started:
- Port to Windows (mainly little things, like path separators -
QT hides alot of the hard work here). This is predicated on a
version of PCP (libpcp) compiled with the MinGW gcc compiler as
described above, as the free Qt libraries are built that way on
Windows.
- Move the kmtime interface code into the Qmc library and
update kmdumptext to test and use it too (along the lines of
pmval -g).
- Make kmchart more dynamically extensible, using the QtScript
feature in QT 4.3+ (or maybe Perl?). Aim here is to get to the
point where the functionality of tools like gmemusage, grosview,
pmgadgets, etc. can be implemented as kmchart scripts.
- Investigate Qwt3D and/or the OpenGL version of Qwt.
If you're interested in getting involved in any of these areas
we recommend joining the PCP mailing list,
the #pcp IRC channel on the OFTC network,
writing new code, and sending patches out early for review!