1 perf-trace(1) 1 perf-trace(1) 2 ============= !! 2 ============== 3 3 4 NAME 4 NAME 5 ---- 5 ---- 6 perf-trace - strace inspired tool !! 6 perf-trace - Read perf.data (created by perf record) and display trace output 7 7 8 SYNOPSIS 8 SYNOPSIS 9 -------- 9 -------- 10 [verse] 10 [verse] 11 'perf trace' !! 11 'perf trace' [-i <file> | --input=file] symbol_name 12 'perf trace record' << 13 12 14 DESCRIPTION 13 DESCRIPTION 15 ----------- 14 ----------- 16 This command will show the events associated w !! 15 This command reads the input file and displays the trace recorded. 17 syscalls, but other system events like pagefau << 18 scheduling events, etc. << 19 << 20 This is a live mode tool in addition to workin << 21 the other perf tools. Files can be generated u << 22 but the session needs to include the raw_sysca << 23 Alternatively, 'perf trace record' can be used << 24 automatically include the raw_syscalls events << 25 << 26 The following options apply to perf trace; opt << 27 found in the perf record man page. << 28 16 29 OPTIONS 17 OPTIONS 30 ------- 18 ------- 31 !! 19 -D:: 32 -a:: !! 20 --dump-raw-trace=:: 33 --all-cpus:: !! 21 Display verbose dump of the trace data. 34 System-wide collection from all CPUs. << 35 << 36 -e:: << 37 --expr:: << 38 --event:: << 39 List of syscalls and other perf events << 40 etc) to show. Globbing is supported, e << 41 See 'perf list' for a complete list of << 42 Prefixing with ! shows all syscalls bu << 43 need to escape it. << 44 << 45 --filter=<filter>:: << 46 Event filter. This option should follo << 47 selects tracepoint event(s). << 48 << 49 << 50 -D msecs:: << 51 --delay msecs:: << 52 After starting the program, wait msecs before << 53 filter out the startup phase of the program, w << 54 << 55 -o:: << 56 --output=:: << 57 Output file name. << 58 << 59 -p:: << 60 --pid=:: << 61 Record events on existing process ID ( << 62 << 63 -t:: << 64 --tid=:: << 65 Record events on existing thread ID (c << 66 << 67 -u:: << 68 --uid=:: << 69 Record events in threads owned by uid. << 70 << 71 -G:: << 72 --cgroup:: << 73 Record events in threads in a cgroup. << 74 << 75 Look for cgroups to set at the /sys/fs << 76 remove the /sys/fs/cgroup/perf_event/ << 77 << 78 perf trace -G A -e sched:*swit << 79 << 80 Will set all raw_syscalls:sys_{enter,e << 81 _and_ sched:sched_switch to the 'A' cg << 82 << 83 perf trace -e sched:*switch -G << 84 << 85 will only set the sched:sched_switch e << 86 other events (raw_syscalls:sys_{enter, << 87 a cgroup (on the root cgroup, sys wide << 88 << 89 Multiple cgroups: << 90 << 91 perf trace -G A -e sched:*swit << 92 << 93 the syscall ones go to the 'A' cgroup, << 94 to the 'B' cgroup. << 95 << 96 --filter-pids=:: << 97 Filter out events for these pids and f << 98 << 99 -v:: << 100 --verbose:: << 101 Increase the verbosity level. << 102 << 103 --no-inherit:: << 104 Child tasks do not inherit counters. << 105 << 106 -m:: << 107 --mmap-pages=:: << 108 Number of mmap data pages (must be a p << 109 specification in bytes with appended u << 110 The size is rounded up to the nearest << 111 << 112 -C:: << 113 --cpu:: << 114 Collect samples only on the list of CPUs provi << 115 comma-separated list with no space: 0,1. Range << 116 In per-thread mode with inheritance mode on (d << 117 the thread executes on the designated CPUs. De << 118 << 119 --duration:: << 120 Show only events that had a duration g << 121 << 122 --sched:: << 123 Accrue thread runtime and provide a su << 124 << 125 --failure:: << 126 Show only syscalls that failed, i.e. t << 127 << 128 -i:: << 129 --input:: << 130 Process events from a given perf data << 131 << 132 -T:: << 133 --time:: << 134 Print full timestamp rather time relat << 135 << 136 --comm:: << 137 Show process COMM right beside its ID, << 138 << 139 -s:: << 140 --summary:: << 141 Show only a summary of syscalls by thr << 142 (in msec) and relative stddev. << 143 << 144 -S:: << 145 --with-summary:: << 146 Show all syscalls followed by a summar << 147 average times (in msec) and relative stdde << 148 << 149 --errno-summary:: << 150 To be used with -s or -S, to show stat << 151 syscalls, using only this option will << 152 << 153 --tool_stats:: << 154 Show tool stats such as number of time << 155 hooking the open syscall return + vfs_ << 156 << 157 -f:: << 158 --force:: << 159 Don't complain, do it. << 160 << 161 -F=[all|min|maj]:: << 162 --pf=[all|min|maj]:: << 163 Trace pagefaults. Optionally, you can << 164 major or all pagefaults. Default value << 165 << 166 --syscalls:: << 167 Trace system calls. This options is en << 168 --no-syscalls. << 169 << 170 --call-graph [mode,type,min[,limit],order[,key << 171 Setup and enable call-graph (stack cha << 172 See `--call-graph` section in perf-rec << 173 man pages for details. The ones that a << 174 are 'dwarf' and 'lbr', where available << 175 << 176 Using this will, for the root user, bu << 177 times the maximum for non-root users, << 178 sysctl. This is done only if the user << 179 << 180 --kernel-syscall-graph:: << 181 Show the kernel callchains on the sys << 182 << 183 --max-events=N:: << 184 Stop after processing N events. Note t << 185 only at exit time or when a syscall is << 186 option is equivalent to the number of << 187 << 188 --switch-on EVENT_NAME:: << 189 Only consider events after this event << 190 << 191 --switch-off EVENT_NAME:: << 192 Stop considering events after this eve << 193 << 194 --show-on-off-events:: << 195 Show the --switch-on/off events too. << 196 << 197 --max-stack:: << 198 Set the stack depth limit when parsing << 199 beyond the specified depth will be ign << 200 this is just about the presentation pa << 201 not limiting, the overhead of callchai << 202 knobs in --call-graph dwarf. << 203 << 204 Implies '--call-graph dwarf' when --ca << 205 command line, on systems where DWARF u << 206 << 207 Default: /proc/sys/kernel/perf_event_m << 208 live sessions (without --inpu << 209 << 210 --min-stack:: << 211 Set the stack depth limit when parsing << 212 below the specified depth will be igno << 213 << 214 Implies '--call-graph dwarf' when --ca << 215 command line, on systems where DWARF u << 216 << 217 --print-sample:: << 218 Print the PERF_RECORD_SAMPLE PERF_SAMP << 219 raw_syscalls:sys_{enter,exit} tracepoi << 220 << 221 --proc-map-timeout:: << 222 When processing pre-existing threads / << 223 because the file may be huge. A time o << 224 This option sets the time out limit. T << 225 << 226 --sort-events:: << 227 Do sorting on batches of events, use w << 228 may happen, for instance, when a threa << 229 while processing a syscall. << 230 << 231 --libtraceevent_print:: << 232 Use libtraceevent to print tracepoint << 233 the same beautifiers used in the strac << 234 tracepoint arguments. << 235 << 236 --map-dump:: << 237 Dump BPF maps setup by events passed v << 238 living in tools/perf/examples/bpf/augm << 239 dumps just boolean map values and inte << 240 by default and use BTF when available, << 241 printing using the existing 'perf trac << 242 arguments to strings (pid to comm, sys << 243 << 244 << 245 PAGEFAULTS << 246 ---------- << 247 << 248 When tracing pagefaults, the format of the tra << 249 << 250 <min|maj>fault [<ip.symbol>+<ip.offset>] => <ad << 251 << 252 - min/maj indicates whether fault event is min << 253 - ip.symbol shows symbol for instruction point << 254 fault); if no debug symbols available, perf << 255 - addr.dso shows DSO for the faulted address; << 256 - map type is either 'd' for non-executable ma << 257 - addr level is either 'k' for kernel dso or ' << 258 << 259 For symbols resolution you may need to install << 260 << 261 Please be aware that duration is currently alw << 262 time it took for fault to be handled! << 263 << 264 When --verbose specified, perf trace tries to << 265 for both IP and fault address in the form of d << 266 << 267 EXAMPLES << 268 -------- << 269 << 270 Trace only major pagefaults: << 271 << 272 $ perf trace --no-syscalls -F << 273 << 274 Trace syscalls, major and minor pagefaults: << 275 << 276 $ perf trace -F all << 277 << 278 1416.547 ( 0.000 ms): python/20235 majfault << 279 << 280 As you can see, there was major pagefault in << 281 CRYPTO_push_info_ routine which faulted some << 282 << 283 Trace the first 4 open, openat or open_by_hand << 284 << 285 $ perf trace -e open* --max-events 4 << 286 [root@jouet perf]# trace -e open* --max-even << 287 2272.992 ( 0.037 ms): gnome-shell/1370 opena << 288 2277.481 ( 0.139 ms): gnome-shell/3039 opena << 289 3026.398 ( 0.076 ms): gnome-shell/3039 opena << 290 4294.665 ( 0.015 ms): sed/15879 openat(dfd: << 291 $ << 292 << 293 Trace the first minor page fault when running << 294 << 295 # perf trace -F min --max-stack=7 --max-even << 296 0.000 ( 0.000 ms): sleep/18006 minfault [ << 297 __clear << 298 load_el << 299 search_ << 300 __do_ex << 301 __x64_s << 302 do_sysc << 303 entry_S << 304 # << 305 << 306 Trace the next min page page fault to take pla << 307 << 308 # perf trace -F min --call-graph=dwarf --max << 309 0.000 ( 0.000 ms): Web Content/17136 minf << 310 js::gc: << 311 js::gc: << 312 js::gc: << 313 js::gc: << 314 js::gc: << 315 js::gc: << 316 js::gc: << 317 js::All << 318 js::All << 319 JSThinI << 320 Allocat << 321 js::Con << 322 [0x18b2 << 323 # << 324 << 325 Trace the next two sched:sched_switch events, << 326 next block:*_unplug and the next three net:*de << 327 with a backtrace of at most 16 entries, system << 328 << 329 # perf trace -e sched:*switch/nr=2/,block:*_ << 330 0.000 :0/0 sched:sched_switch:swapper/2:0 << 331 0.015 rcu_sched/10 sched:sched_switch:rcu << 332 254.198 irq/50-iwlwifi/680 net:net_dev_queu << 333 __dev_q << 334 273.977 :0/0 net:net_dev_queue:dev=wlp3s0 s << 335 __dev_q << 336 274.007 :0/0 net:net_dev_queue:dev=wlp3s0 s << 337 __dev_q << 338 2930.140 kworker/u16:58/2722 block:block_plu << 339 2930.162 kworker/u16:58/2722 block:block_unp << 340 4466.094 jbd2/dm-2-8/748 block:block_plug:[j << 341 8050.123 kworker/u16:30/2694 block:block_plu << 342 8050.271 kworker/u16:30/2694 block:block_plu << 343 # << 344 22 345 SEE ALSO 23 SEE ALSO 346 -------- 24 -------- 347 linkperf:perf-record[1], linkperf:perf-script[ !! 25 linkperf:perf-record[1]
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.