OProfile 0.9.2 review

by rbytes.net on

OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead

License: GPL (GNU General Public License)
File size: 0K
Developer: John Levon
0 stars award from rbytes.net

OProfile is a system-wide profiler for Linux systems, capable of profiling all running code at low overhead. It is released under the GNU GPL.

It consists of a kernel driver and a daemon for collecting sample data, and several post-profiling tools for turning data into information.

OProfile leverages the hardware performance counters of the CPU to enable profiling of a wide variety of interesting statistics, which can also be used for basic time-spent profiling. All code is profiled: hardware and software interrupt handlers, kernel modules, the kernel, shared libraries, and applications.

OProfile is currently in alpha status; however it has proven stable over a large number of differing configurations; it is being used on machines ranging from laptops to 16-way NUMA-Q boxes. As always, there is no warranty.

Here are some key features of "OProfile":
No special recompilations, wrapper libraries or the like are necessary. Even debug symbols (-g option to gcc) are not necessary unless you want to produce annotated source.
No kernel patch is needed - just insert the module.

System-wide profiling
All code running on the system is profiled, enabling analysis of system performance.

Performance counter support
Enables collection of various low-level data, and assocation with particular sections of code.

Call-graph support
With an x86 or ARM 2.6 kernel, OProfile can provide gprof-style call-graph profiling data.

Low overhead
OProfile has a typical overhead of 1-8%, dependent on sampling frequency and workload.

Post-profile analysis
Profile data can be produced on the function-level or instruction-level detail. Source trees annotated with profile information can be created. A hit list of applications and functions that take the most time across the whole system can be produced.

System support
OProfile works across a range of CPUs, include the Intel range, AMD's Athlon and AMD64 processors range, the Alpha, ARM, and more. OProfile will work against almost any 2.2, 2.4 and 2.6 kernels, and works on both UP and SMP systems from desktops to the scariest NUMAQ boxes.

What's New in This Release:
New features

Known bashism has been removed and oprofile should be more shell neutral.
As a consequence of the needed change the saved setup file format has been
modified and you must re-setup your configuration.
opimport is now built unconditionally on all platforms, --enable-abi has been removed from configure options. This utility allow to perform post profile analysis on a different platform the one profiled. Additionally this feature no longer require to link the daemon with the C++ runtime library.
GUI to start the profiler has been improved, you can setup callgraph depth, when available, through the gui and reset a profiling session. Other minor usability tweaks have been added.
opannotate output as been improved when a source file can't be found.
ppc64 support has been improved, more events are now available. As a side effect some event name has been changed.
opcontrol allow a better control on buffer size used by the driver.
Support for ppc/e500 latest processor has been added.
Support for Power5+ processor has been added.
Support for Xen profiling.
Support for Intel Core Duo and Core 2.
Support for MIPS 5K, 20K, 25K, and 34K added.
AMD64 event renaming make names match the BKDG names from AMD.

Bug fixes

#1252754 has been fixed, opannotate now handle correctly multiple symbols at the same source:linenr location (e.g. multiple instantiation of a C++ template)
Samples going to the first byte of the .text section of a module was lost by post profile tools.
#1256978 has been fixed, sum of samples count overflowed. Now pp tools do all sample sums on 64 bits.
#1266604, a compile failure in the 2.4 kernel module with older GCCs, has been fixed.
#1254390, missing 2.4 kernel module support for some P4 processors, has been fixed.
#1276058 when some merging option was needed oparchive failed and suggest to use --merge= which is not allowed by oparchive. This is fixed by forcing merging in oparchive so this problem is now transparent to users.
Each time the GUI started we reseted the highest available bit in the unit mask associated with events leading to get different counter setup after quitting and restarting oprof_start.
Fix a segfault in various post profile tools, typical symptom is an exception "basic_string::_S_construct NULL not valid" see http://marc.theaimsgroup.com/?l=oprofile-list&m=113594174114364&w=2

OProfile 0.9.2 keywords