Tree [73e1ce] /

HTTPS access

File Date Author Commit
 docs 2011-02-25 Stephane Eranian Stephane Eranian [c865c1] change the logic struct the size field in struc...
 examples 2011-02-20 Stephane Eranian Stephane Eranian [6412bc] enhance pfm_pmu_info_t to return more PMU infor...
 include 2011-02-28 Stephane Eranian Stephane Eranian [73e1ce] replace perf_event.h with a brand new version
 lib 2011-02-28 Stephane Eranian Stephane Eranian [8fc6c7] vectorize pmu->get_event_encoding, move perf_ev...
 perf_examples 2011-02-28 Stephane Eranian Stephane Eranian [73e1ce] replace perf_event.h with a brand new version
 python 2011-02-21 Stephane Eranian Stephane Eranian [6a67b3] reinstate perf_event.h
 tests 2011-02-26 Stephane Eranian Stephane Eranian [0c982c] add struct size validation, cleanup validation ...
 .gitignore 2010-07-15 Corey Ashford Corey Ashford [f799ff] Exclude more compilation artifacts from git's v...
 COPYING 2011-02-28 Stephane Eranian Stephane Eranian [73e1ce] replace perf_event.h with a brand new version
 Makefile 2011-02-28 Stephane Eranian Stephane Eranian [b54c5e] drop perf_examples if not on Linux
 README 2011-02-12 Stephane Eranian Stephane Eranian [4751c2] add SPARC support 2011-02-18 Stephane Eranian Stephane Eranian [c56204] Do not try to generate Python bindings when not... 2009-10-02 Stephane Eranian Stephane Eranian [4ba6cc] initial commit

Read Me

          a helper library to program the performance monitoring events
 	  Copyright (c) 2009 Google, Inc
	                Contributed by Stephane Eranian <>

 	  Copyright (c) 2001-2007 Hewlett-Packard Development Company, L.P.
	                Contributed by Stephane Eranian <>

This package provides a library, called libpfm which is used
to develop monitoring tools exploiting the performance monitoring
events such as those provided by the Performance Monitoring Unit
Unit (PMU) of modern processors.

This is a complete rewrite of libpfm3 and it is NOT backward compatible
with it.

Libpfm4 helps convert from an event name, expressed as a string, to 
the event encoding. The encoding can then be used with specific OS
interfaces. Libpfm4 also provides OS-specific interfaces to directly
setup OS-specific data structures to be passed to the kernel. The
current libpfm4, for instance, provides support for the perf_events
interface which was introduced in Linux v2.6.31. Perfmon support is
not present yet.

The library supports only X86-based processors at this point, but all
the other processors supported in libpfm3 will be added later on.

This version of libpfm supports:
	- For AMD X86:
		AMD Opteron (K7, K8, fam 10h)
	- For Intel X86: 
		Intel P6 (Pentium II, Pentium Pro, Pentium III, Pentium M)
		Intel Yonah (Core Duo/Core Solo),
		Intel Core (Merom, Penryn, Dunnington) Core 2 and Quad
		Intel Atom
		Intel Nehalem (Nehalem, Westmere, Beckton)
		Intel architectural perfmon v1, v2, v3
	- For ARM:
		ARMV7 Cortex A8
		ARMV7 Cortex A9
	- For SPARC
		Ultra I, II
		Ultra III, IIIi, III+
		Ultra IV+
		Niagara I, Niagara II

The core of the library is very generic and not tied to any particular OS interface.
Thus, it can be compiled on non-Linux platforms, such as MacOS X and OpenSolaris.

	- the library source code including support for all processors listed

	- a set of generic examples showing how to list and query events. They
	  are in examples.

	- a set of examples showing how the library can be used with the
	  perf_events interface. They are in perf_examples.

	- a set of library header files and also the perf_events kernel header.

	- man pages for all the library entry points

	- Python bindings for libpfm (not yet functional)

	- edit to :
		- update some of the configuration variables
		- make your compiler options

	- type make
	- type make install

 	- To compile and install the Python bindings, you need to go to the
	  python sub-directory and type make. Python is not systematically

	- to compile the library for another ABI (e.g. 32-bit x86 on a
	  64-bit x86) system, you can pass the ABI flag to the compiler as
	  follows (assuming you have the multilib version of gcc):
		$ make OPTION="-m32 -O2"

	- to compile and install the library for 64-bit Power processors,
	  invoke make as follows:
		$ make BITMODE=64
		$ make BITMODE=64 install

	- to run the programs in the perf_examples subdir, you MUST be using a
	  linux kernel with perf_events. That means v2.6.31 or later.

	- to compile the Python bindings, you need to have SWIG and the python
	  development packages installed

	- man pages for all entry points. It is recommended you start with: man libpfm
	- More information can be found on library web site:

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks