table of contents
PERF-TRACE(1) | perf Manual | PERF-TRACE(1) |
NAME¶
perf-trace - strace inspired tool
SYNOPSIS¶
perf trace perf trace record
DESCRIPTION¶
This command will show the events associated with the target, initially syscalls, but other system events like pagefaults, task lifetime events, scheduling events, etc.
This is a live mode tool in addition to working with perf.data files like the other perf tools. Files can be generated using the perf record command but the session needs to include the raw_syscalls events (-e syscalls:*). Alternatively, perf trace record can be used as a shortcut to automatically include the raw_syscalls events when writing events to a file.
The following options apply to perf trace; options to perf trace record are found in the perf record man page.
OPTIONS¶
-a, --all-cpus
-e, --expr
-o, --output=
-p, --pid=
-t, --tid=
-u, --uid=
--filter-pids=
-v, --verbose=
-i, --no-inherit
-m, --mmap-pages=
-C, --cpu
--duration: Show only events that had a duration greater than N.M ms.
--sched: Accrue thread runtime and provide a summary at the end of the session.
-i --input Process events from a given perf data file.
-T --time Print full timestamp rather time relative to first sample.
--comm
-s, --summary
-S, --with-summary
--tool_stats
-F=[all|min|maj], --pf=[all|min|maj]
--syscalls
--event
PAGEFAULTS¶
When tracing pagefaults, the format of the trace is as follows:
<min|maj>fault [<ip.symbol>+<ip.offset>] ⇒ <addr.dso@addr.offset[1]> (<map type><addr level>).
For symbols resolution you may need to install debugging symbols.
Please be aware that duration is currently always 0 and doesn’t reflect actual time it took for fault to be handled!
When --verbose specified, perf trace tries to print all available information for both IP and fault address in the form of dso@symbol[2]+offset.
EXAMPLES¶
Trace only major pagefaults:
$ perf trace --no-syscalls -F
Trace syscalls, major and minor pagefaults:
$ perf trace -F all
1416.547 ( 0.000 ms): python/20235 majfault [CRYPTO_push_info_+0x0] => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0@0x61be0 (x.)
As you can see, there was major pagefault in python process, from CRYPTO_push_info_ routine which faulted somewhere in libcrypto.so.
SEE ALSO¶
NOTES¶
- 1.
- addr.dso@addr.offset
- 2.
- dso@symbol
05/02/2024 | perf |