PERF-TRACE(1) perf Manual PERF-TRACE(1) (NAME) perf-trace - strace (SYNOPSIS) perf trace perf trace record (DESCRIPTION) (syscalls) (pagefaults) . perf.data perf (live mode) . perf record raw_syscalls (-e raw_syscalls:*). perf trace record raw_syscalls . perf trace perf trace record perf record . (OPTIONS) -a, --all-cpus CPU. -e, --expr, --event perf ( tracepoints ) . (globbing) : "epoll_*" "msg" . perf list . ! . . --filter= . (-e) () . -D msecs, --delay msecs msecs . . -o, --output= . -p, --pid= (PID) ( ). -t, --tid= (TID) ( ). -u, --uid= uid . -G, --cgroup cgroup. cgroup /sys/fs/cgroup/perf_event /sys/fs/cgroup/perf_event/ : perf trace -G A -e sched:*switch raw_syscalls:sys_{enter,exit} pgfault vfs_getname __ sched:sched_switch cgroup 'A' : perf trace -e sched:*switch -G A sched:sched_switch cgroup 'A' (raw_syscalls:sys_{enter,exit} ) <<>> cgroup ( cgroup ). cgroup: perf trace -G A -e sched:*switch -G B syscall cgroup 'A' sched:sched_switch cgroup 'B' . --filter-pids= pid trace ( ). -v, --verbose . --no-inherit . -m, --mmap-pages= mmap ( ) - B/K/M/G. . -C, --cpu . : 0,1. - : 0-2. per-thread () . . --duration N.M . --sched . --failure < 0 . -i, --input perf. -T, --time . --comm COMM --no-comm . -s, --summary ( ) (stddev) . -S, --with-summary ( ) (stddev). --errno-summary -s -S (errno) --summary . --summary-mode=mode -s -S . . : thread total cgroup. --tool_stats fd->pathname open + vfs_getname /proc/pid/fd . -f, --force . -F=[all|min|maj], --pf=[all|min|maj] (pagefaults). (minor) (major) . maj . --syscalls . --no-syscalls . --call-graph [mode,type,min[,limit],order[,key][,branch]] call-graph ( /backtrace). --call-graph perf-record perf-report . perf trace dwarf lbr : perf trace --call-graph dwarf. root sysctl kernel.perf_event_mlock_kb --mmap-pages root . --mmap-pages . --kernel-syscall-graph (callchains) . --max-events=N N . strace . --switch-on EVENT_NAME . --switch-off EVENT_NAME . --show-on-off-events --switch-on/off . --show-cpu (cpu id) . --max-stack . --call-graph dwarf . --call-graph DWARF unwinding '--call-graph dwarf' . : /proc/sys/kernel/perf_event_max_stack ( --input/-i) 127. --min-stack . . DWARF --call-graph '--call-graph dwarf' . --print-sample PERF_RECORD_SAMPLE PERF_SAMPLE_ (tracepoints) raw_syscalls:sys_{enter,exit} . --proc-map-timeout /proc/XXX/mmap . . . 500 . --sort-events . --libtraceevent_print libtraceevent . perf trace + strace . --force-btf btf_dump (pretty print) . BTF perf trace . btf_dump (fallback) struct . --bpf-summary BPF. -s/--summary . --max-summary=N . ( cgroup) . (PAGEFAULTS) : fault [+] => (). o min/maj (minor) (major) o ip.symbol ( ) perf trace IP o addr.dso DSO o (map type) d x o (addr level) k dso . dso . . ! --verbose perf trace IP dso@symbol[2]+offset ..SH " (EXAMPLES)" (major pagefaults): $ perf trace --no-syscalls -F : $ 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.) python CRYPTO_push_info_ libcrypto.so . open openat open_by_handle_at ( ): $ perf trace -e open* --max-events 4 [root@jouet perf]# trace -e open* --max-events 4 2272.992 ( 0.037 ms): gnome-shell/1370 openat(dfd: CWD, filename: /proc/self/stat) = 31 2277.481 ( 0.139 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65 3026.398 ( 0.076 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65 4294.665 ( 0.015 ms): sed/15879 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC) = 3 $ : # perf trace -F min --max-stack=7 --max-events 1 sleep 1 0.000 ( 0.000 ms): sleep/18006 minfault [__clear_user+0x1a] => 0x5626efa56080 (?k) __clear_user ([kernel.kallsyms]) load_elf_binary ([kernel.kallsyms]) search_binary_handler ([kernel.kallsyms]) __do_execve_file.isra.33 ([kernel.kallsyms]) __x64_sys_execve ([kernel.kallsyms]) do_syscall_64 ([kernel.kallsyms]) entry_SYSCALL_64 ([kernel.kallsyms]) # : # perf trace -F min --call-graph=dwarf --max-events 1 --cpu 0 0.000 ( 0.000 ms): Web Content/17136 minfault [js::gc::Chunk::fetchNextDecommittedArena+0x4b] => 0x7fbe6181b000 (?.) js::gc::FreeSpan::initAsEmpty (inlined) js::gc::Arena::setAsNotAllocated (inlined) js::gc::Chunk::fetchNextDecommittedArena (/usr/lib64/firefox/libxul.so) js::gc::Chunk::allocateArena (/usr/lib64/firefox/libxul.so) js::gc::GCRuntime::allocateArena (/usr/lib64/firefox/libxul.so) js::gc::ArenaLists::allocateFromArena (/usr/lib64/firefox/libxul.so) js::gc::GCRuntime::tryNewTenuredThing (inlined) js::AllocateString (/usr/lib64/firefox/libxul.so) js::Allocate (inlined) JSThinInlineString::new_<(js::AllowGC)1> (inlined) AllocateInlineString<(js::AllowGC)1, unsigned char> (inlined) js::ConcatStrings<(js::AllowGC)1> (/usr/lib64/firefox/libxul.so) [0x18b26e6bc2bd] (/tmp/perf-17136.map) # sched:sched_switch block:*_plug block:*_unplug net:*dev_queue (backtrace) : # perf trace -e sched:*switch/nr=2/,block:*_plug/nr=4/,block:*_unplug/nr=1/,net:*dev_queue/nr=3,max-stack=16/ 0.000 :0/0 sched:sched_switch:swapper/2:0 [120] S ==> rcu_sched:10 [120] 0.015 rcu_sched/10 sched:sched_switch:rcu_sched:10 [120] R ==> swapper/2:0 [120] 254.198 irq/50-iwlwifi/680 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=66 __dev_queue_xmit ([kernel.kallsyms]) 273.977 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=78 __dev_queue_xmit ([kernel.kallsyms]) 274.007 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051ff00 len=78 __dev_queue_xmit ([kernel.kallsyms]) 2930.140 kworker/u16:58/2722 block:block_plug:[kworker/u16:58] 2930.162 kworker/u16:58/2722 block:block_unplug:[kworker/u16:58] 1 4466.094 jbd2/dm-2-8/748 block:block_plug:[jbd2/dm-2-8] 8050.123 kworker/u16:30/2694 block:block_plug:[kworker/u16:30] 8050.271 kworker/u16:30/2694 block:block_plug:[kworker/u16:30] # perf-record(1), perf-script(1) (NOTES) 1. addr.dso@addr.offset mailto:addr.dso@addr.offset 2. dso@symbol mailto:dso@symbol perf 09/04/2026 PERF-TRACE(1)