OProfile is a powerful system-wide profiler for Linux. Read more at http://oprofile.sf.net OProfile 0.9.4 has been released. OProfile is still in alpha, but has been proven stable for many users. New features ------------ OProfile now supports profiling Java applications. See Section 1.4 "Installation" in the user manual for instructions on how to build OProfile so that it includes this support. OProfile also includes a framework for adding support for profiling other just-in-time (JIT) compiled languages. A new manual titled "OProfile JIT agent developer guide" is provided to aid developers. Added Xen support for IA64 Added AVR32 support Add '--root' option to opreport which act as a replacement (a prefix) for the / fs Performance improvement for 'opreport --xml --details'. OProfile tends to output obscure error message. Some of these have been fixed. Changes required to build with gcc 4.3 Bug fixes --------- Fix sym_offset calculation bug, seen on 64 bit systems with code mapped with an address >4G Fix opcontrol's calculation of kernel address range to include code found in sections other than just .text Fix opcontrol's short forms of --list-events (-l) and --dump (-d) so they work for non-root users Fix MMCR values and counter-to-event mappings on a few 970MP groups Turn off profiling in hypervisor on 970MP to prevent lost interrupts Update family10 and hammer events and unit_masks files to match the BIOS and Kernel Developer's Guide (current, as of May 20, 2008) Since --xml is not compatible with the --sort option, we warned against the use of --sort, but didn't reset the sort options to default. This is now fixed. Fix silent failure of oprof_start for when a counter is missing (e.g, NMI watchdog is up) Change opcontrol to use "-SIG" instead of "-s SIG" since Busybox's implementation of "kill" doesn't understand the "-s SIG" option Fix 'opannotate -s' to work with inlined code Update POWER6 event files (add new event groupings; make some fixes to others) Fix "Dangling ESCAPE CODE" error that can occur on Cell BE SPE profiling Fix opreport for Cell BE SPE profiles to attribute samples to dynamically generated call stubs executed from SPE stack (for example, I/O calls to the libc library) Fix loop in 'opcontrol --dump' code when using --session-dir on a network drive (clock issues) Fix problem with 'oparchive --list-files' that can occur if file doesn't exist Fix user/kernel domain profiling switches for ppc64 architectures Fix the bfd_get_synthetic_symtab check in m4 macro to work correctly with '--with-binutils' configure option Fix ARM big-endian syscall bug #1820202, differential profile broken in 0.9.3, is fixed bug #1717298, mips events have incorrect id numbers, is fixed, all event number > 9 was incorrectly setup bug #1564920, opcontrol does not check if objdump exists is fixed, we error out and pinpoint the right error now bug #1819350, oparchive doesn't work with kernel module, is fixed (need another related fix, if you read that I forget about that, ping me please -- phe) bug #1828566, --xml and -t and callgraph now output symboldata for all caller/callees bug #1930788, opreport error: basic_string::erase Allow performance counter allocation to work even when some performance counters are already reserved (e.g. by nmi watchdog) Known problems -------------- When using callgraph profiling, it's possible that invalid sample files are created (bug #1685267). Many Alpha ev67 events do not work (bug #931875). A few Pentium IV events are not supported (bug #841099). For 2.2 kernels, the module must be compiled as the same user that owns the kernel source tree. With an AMD64 kernel, OProfile must be built in 64 bit mode due to lack of kernel support. opreport -c gives strange output for binaries without symbols. Callgraph output for the new JIT support is incorrect. See Chapter 4, section 2.3.2 of OProfile user manual. When using the JVMPI agent to profile Java code, the following error is printed by the agent if the JVM moves objects in the heap: "Error: Cannot find class for compiled method" Workaround: If your JVM is 1.5, then use JVMTI agent instead of JVMPI agent. If your JVM is pre-1.5, see oprofile-list for a patch.