- Commands
- perf stat: obtain event counts
- perf record: record events for later reporting
- perf report: break down events by process, function, etc.
- perf annotate: annotate assembly or source code with event counts
- perf top: see live event count
- perf bench: run different kernel microbenchmarks
perf record -e <tracepoint> -ag
to trace usage of a kernel tracepoint
perf stat -e <event>
to count instances of any item from perf list
perf stat (-d) (-p <pid>)
to track CPU counter stats
perf record
is like perf stat
but also allows recording more context, like call-graphs, but also has more overhead
perf trace
is an strace replacement with much lower overhead
perf probe <fn>
to add a tracepoint against any kernel function
- Compile software to use frame pointers to get full stacktraces (CONFIG_FRAME_POINTER=y for the kernel)
--call-graph dwarf
if this isn’t possible, which uses libunwind
- Event types/prefixes:
perf sched
for scheduler analysis
perf top
shows CPU usage by default, but supports any event with -e <event>