OProfile manual


Table of Contents

1. Introduction
1. OProfile legacy profiling mode
2. OProfile perf_events profiling mode
3. OProfile event counting mode
4. Applications of OProfile
4.1. Support for dynamically compiled (JIT) code
4.2. No support for virtual machine guests
5. System requirements
6. Internet resources
7. Installation
8. Uninstalling OProfile
2. Overview
1. Getting started with OProfile using operf
2. Getting started with OProfile using legacy profiling mode
3. Getting started with OProfile using ocount
4. Specifying performance counter events
5. Tools summary
3. Controlling the profiler
1. Using operf
2. Using opcontrol
2.1. Examples
3. Setting up the JIT profiling feature
3.1. JVM instrumentation
4. Using oprof_start
5. Configuration details
5.1. Hardware performance counters
5.2. OProfile in timer interrupt mode
5.3. Pentium 4 support
5.4. Intel Itanium 2 support
5.5. PowerPC64 support
5.6. Cell Broadband Engine support
5.7. AMD64 (x86_64) Instruction-Based Sampling (IBS) support
5.8. IBM System z hardware sampling support
5.9. Dangerous counter settings
4. Obtaining profiling results
1. Profile specifications
1.1. Examples
1.2. Profile specification parameters
1.3. Locating and managing binary images
1.4. What to do when you don't get any results
2. Image summaries and symbol summaries (opreport)
2.1. Merging separate profiles
2.2. Side-by-side multiple results
2.3. Callgraph output
2.4. Differential profiles with opreport
2.5. Anonymous executable mappings
2.6. XML formatted output
2.7. Options for opreport
3. Outputting annotated source (opannotate)
3.1. Locating source files
3.2. Usage of opannotate
4. OProfile results with JIT samples
5. gprof-compatible output (opgprof)
5.1. Usage of opgprof
6. Analyzing profile data on another system (oparchive)
6.1. Usage of oparchive
7. Converting sample database files (opimport)
7.1. Usage of opimport
5. Interpreting profiling results
1. Profiling interrupt latency
2. Kernel profiling
2.1. Interrupt masking
2.2. Idle time
2.3. Profiling kernel modules
3. Interpreting call-graph profiles
4. Inaccuracies in annotated source
4.1. Side effects of optimizations
4.2. Prologues and epilogues
4.3. Inlined functions
4.4. Inaccuracy in line number information
5. Assembly functions
6. Overlapping symbols in JITed code
7. Using operf to profile fork/execs
8. Other discrepancies
6. Controlling the event counter
1. Using ocount
7. Acknowledgments