OProfile

OProfile is an open source project that includes a statistical profiler for Linux systems, capable of profiling all running code at low overhead. In version 0.9.9, an event counting tool, ocount, was added to the project. OProfile is released under the GNU GPL. 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. For versions 0.9.7 and earlier, the profiler consisted of a kernel driver and a daemon for collecting sample data. In version 0.9.8, with the introduction of operf, the legacy kernel driver/daemon method of collecting sample data was deprecated in favor of profiling with the Linux Kernel Performance Events Subsystem (kernel version 2.6.31 or higher). As of version 1.0.0, the legacy profiler has been removed. 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. Several post-profiling tools for turning profile data into human readable information are available.