First you have to enable oprofile in your kernel, i.e. you must have
CONFIG_PROFILING=y CONFIG_OPROFILE=y
in your kernel config. Then you need userspace utilities to use it. I used oprofile 0.9.4. First of all you need to setup it with something like
opcontrol --init opcontrol --no-vmlinux opcontrol --callgraph=5
After that, here is the script I used to do profiling against a program:
john@buddha:~$ cat bin/profile
#!/bin/sh
which sudo && SUDO=sudo || SUDO=
${SUDO} opcontrol --shutdown
${SUDO} rm -rf /var/lib/oprofile/*
${SUDO} opcontrol --status
${SUDO} opcontrol --start-daemon
${SUDO} opcontrol --start
$@
${SUDO} opcontrol --stop
${SUDO} opcontrol --dump
${SUDO} opcontrol --shutdown
Use ‘profile <the name of your executable>’ to get the profile. Use ‘opreport’ to read the result. ‘opreport -l’ might be more meaningful. You can use ‘opreport <the name of your executable>’ to only get the result related to your program, but personally I prefer to check the whole system.