
The goal of this project is to design a standard kernel
interface, called perfmon2, to access the hardware performance counters
available on all modern processors.
We are initially using Linux on the Itanium Processor Family (IPF) as the testbed
because the Itanium Performance Monitoring Unit (PMU) is very interesting
and also because monitoring is very important for this processor architecture.
However there is nothing specific to IPF in the design and the interface
could be implemented on other architectures as well.
As part of the project we have also developed user level software to
demonstrate how the interface can be used. This software consists of a library, called
libpfm, and a monitoring tool called pfmon.
Here is a summary of what each component provides:
- perfmon2:
This is the performance interface which gives
full access to the PMU.
- libpfm:
This is a helper library which can be used by
tools to setup the parameters to the kernel perfmon interface.
The library encapsulates all the PMU model specific information, such
as event encodings and constraints. The library is not required to use
the kernel interface. The library currently supports all existing
Itanium PMU models.
- pfmon:
This is a simple monitoring tool which can
monitor unmodified programs or the entire system (UP and SMP). With
pfmon, you can collect event counts or create sampling sessions.
The tool currently supports all existing Itanium PMU models.

|