2. System requirements

Linux kernel 2.2/2.4/2.6

OProfile uses a kernel module that can be compiled for 2.2.11 or later and 2.4. 2.4.10 or above is required if you use the boot-time kernel option nosmp. 2.6 kernels are supported with the in-kernel OProfile driver. Note that only 32-bit x86 and IA64 are supported on 2.2/2.4 kernels.

2.6 kernels are strongly recommended. Under 2.4, OProfile may cause system crashes if power management is used, or the BIOS does not correctly deal with local APICs.

PPC64 processors (Power4/Power5/PPC970, etc.) require a recent (> 2.6.5) kernel with the line #define PV_970 present in include/asm-ppc64/processor.h.

Profiling the Cell Broadband Engine PowerPC Processing Element (PPE) requires a kernel version of 2.6.18 or more recent. Profiling the Cell Broadband Engine Synergistic Processing Element (SPE) requires a kernel version of 2.6.22 or more recent. Additionally, full support of SPE profiling requires a BFD library from binutils code dated January 2007 or later. To ensure the proper BFD support exists, run the configure utility with --with-target=cell-be.

Note

Attempting to profile SPEs with kernel versions older than 2.6.22 may cause the system to crash.

modutils 2.4.6 or above

You should have installed modutils 2.4.6 or higher (in fact earlier versions work well in almost all cases).

Supported architecture

For Intel IA32, a CPU with either a P6 generation or Pentium 4 core is required. In marketing terms this translates to anything between an Intel Pentium Pro (not Pentium Classics) and a Pentium 4 / Xeon, including all Celerons. The AMD Athlon, and Duron CPUs are also supported. Other IA32 CPU types only support the RTC mode of OProfile; please see later in this manual for details. Hyper-threaded Pentium IVs are not supported in 2.4. For 2.4 kernels, the Intel IA-64 CPUs are also supported. For 2.6 kernels, there is additionally support for Alpha processors, MIPS, ARM, x86-64, sparc64, ppc64, AVR32, and, in timer mode, PA-RISC and s390.

Uniprocessor or SMP

SMP machines are fully supported.

Required libraries

These libraries are required : popt, bfd, liberty (debian users: libiberty is provided in binutils-dev package), dl, plus the standard C++ libraries.

Required user account

For secure processing of sample data from JIT virtual machines (e.g., Java), the special user account "oprofile" must exist on the system. The 'configure' and 'make install' operations will print warning messages if this account is not found. If you intend to profile JITed code, you must create a group account named 'oprofile' and then create the 'oprofile' user account, setting the default group to 'oprofile'. A runtime error message is printed to the oprofile daemon log when processing JIT samples if this special user account cannot be found.

OProfile GUI

The use of the GUI to start the profiler requires the Qt 2 library. Qt 3 should also work.

ELF

Probably not too strenuous a requirement, but older A.OUT binaries/libraries are not supported.

K&R coding style

OK, so it's not really a requirement, but I wish it was...