hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/tools/perf/Documentation/perf-trace.txt
....@@ -42,6 +42,11 @@
4242 Prefixing with ! shows all syscalls but the ones specified. You may
4343 need to escape it.
4444
45
+--filter=<filter>::
46
+ Event filter. This option should follow an event selector (-e) which
47
+ selects tracepoint event(s).
48
+
49
+
4550 -D msecs::
4651 --delay msecs::
4752 After starting the program, wait msecs before measuring. This is useful to
....@@ -141,6 +146,10 @@
141146 Show all syscalls followed by a summary by thread with min, max, and
142147 average times (in msec) and relative stddev.
143148
149
+--errno-summary::
150
+ To be used with -s or -S, to show stats for the errnos experienced by
151
+ syscalls, using only this option will trigger --summary.
152
+
144153 --tool_stats::
145154 Show tool stats such as number of times fd->pathname was discovered thru
146155 hooking the open syscall return + vfs_getname or via reading /proc/pid/fd, etc.
....@@ -171,6 +180,20 @@
171180 --kernel-syscall-graph::
172181 Show the kernel callchains on the syscall exit path.
173182
183
+--max-events=N::
184
+ Stop after processing N events. Note that strace-like events are considered
185
+ only at exit time or when a syscall is interrupted, i.e. in those cases this
186
+ option is equivalent to the number of lines printed.
187
+
188
+--switch-on EVENT_NAME::
189
+ Only consider events after this event is found.
190
+
191
+--switch-off EVENT_NAME::
192
+ Stop considering events after this event is found.
193
+
194
+--show-on-off-events::
195
+ Show the --switch-on/off events too.
196
+
174197 --max-stack::
175198 Set the stack depth limit when parsing the callchain, anything
176199 beyond the specified depth will be ignored. Note that at this point
....@@ -199,6 +222,25 @@
199222 When processing pre-existing threads /proc/XXX/mmap, it may take a long time,
200223 because the file may be huge. A time out is needed in such cases.
201224 This option sets the time out limit. The default value is 500 ms.
225
+
226
+--sort-events::
227
+ Do sorting on batches of events, use when noticing out of order events that
228
+ may happen, for instance, when a thread gets migrated to a different CPU
229
+ while processing a syscall.
230
+
231
+--libtraceevent_print::
232
+ Use libtraceevent to print tracepoint arguments. By default 'perf trace' uses
233
+ the same beautifiers used in the strace-like enter+exit lines to augment the
234
+ tracepoint arguments.
235
+
236
+--map-dump::
237
+ Dump BPF maps setup by events passed via -e, for instance the augmented_raw_syscalls
238
+ living in tools/perf/examples/bpf/augmented_raw_syscalls.c. For now this
239
+ dumps just boolean map values and integer keys, in time this will print in hex
240
+ by default and use BTF when available, as well as use functions to do pretty
241
+ printing using the existing 'perf trace' syscall arg beautifiers to map integer
242
+ arguments to strings (pid to comm, syscall id to syscall name, etc).
243
+
202244
203245 PAGEFAULTS
204246 ----------
....@@ -238,6 +280,68 @@
238280 As you can see, there was major pagefault in python process, from
239281 CRYPTO_push_info_ routine which faulted somewhere in libcrypto.so.
240282
283
+Trace the first 4 open, openat or open_by_handle_at syscalls (in the future more syscalls may match here):
284
+
285
+ $ perf trace -e open* --max-events 4
286
+ [root@jouet perf]# trace -e open* --max-events 4
287
+ 2272.992 ( 0.037 ms): gnome-shell/1370 openat(dfd: CWD, filename: /proc/self/stat) = 31
288
+ 2277.481 ( 0.139 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65
289
+ 3026.398 ( 0.076 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65
290
+ 4294.665 ( 0.015 ms): sed/15879 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC) = 3
291
+ $
292
+
293
+Trace the first minor page fault when running a workload:
294
+
295
+ # perf trace -F min --max-stack=7 --max-events 1 sleep 1
296
+ 0.000 ( 0.000 ms): sleep/18006 minfault [__clear_user+0x1a] => 0x5626efa56080 (?k)
297
+ __clear_user ([kernel.kallsyms])
298
+ load_elf_binary ([kernel.kallsyms])
299
+ search_binary_handler ([kernel.kallsyms])
300
+ __do_execve_file.isra.33 ([kernel.kallsyms])
301
+ __x64_sys_execve ([kernel.kallsyms])
302
+ do_syscall_64 ([kernel.kallsyms])
303
+ entry_SYSCALL_64 ([kernel.kallsyms])
304
+ #
305
+
306
+Trace the next min page page fault to take place on the first CPU:
307
+
308
+ # perf trace -F min --call-graph=dwarf --max-events 1 --cpu 0
309
+ 0.000 ( 0.000 ms): Web Content/17136 minfault [js::gc::Chunk::fetchNextDecommittedArena+0x4b] => 0x7fbe6181b000 (?.)
310
+ js::gc::FreeSpan::initAsEmpty (inlined)
311
+ js::gc::Arena::setAsNotAllocated (inlined)
312
+ js::gc::Chunk::fetchNextDecommittedArena (/usr/lib64/firefox/libxul.so)
313
+ js::gc::Chunk::allocateArena (/usr/lib64/firefox/libxul.so)
314
+ js::gc::GCRuntime::allocateArena (/usr/lib64/firefox/libxul.so)
315
+ js::gc::ArenaLists::allocateFromArena (/usr/lib64/firefox/libxul.so)
316
+ js::gc::GCRuntime::tryNewTenuredThing<JSString, (js::AllowGC)1> (inlined)
317
+ js::AllocateString<JSString, (js::AllowGC)1> (/usr/lib64/firefox/libxul.so)
318
+ js::Allocate<JSThinInlineString, (js::AllowGC)1> (inlined)
319
+ JSThinInlineString::new_<(js::AllowGC)1> (inlined)
320
+ AllocateInlineString<(js::AllowGC)1, unsigned char> (inlined)
321
+ js::ConcatStrings<(js::AllowGC)1> (/usr/lib64/firefox/libxul.so)
322
+ [0x18b26e6bc2bd] (/tmp/perf-17136.map)
323
+ #
324
+
325
+Trace the next two sched:sched_switch events, four block:*_plug events, the
326
+next block:*_unplug and the next three net:*dev_queue events, this last one
327
+with a backtrace of at most 16 entries, system wide:
328
+
329
+ # perf trace -e sched:*switch/nr=2/,block:*_plug/nr=4/,block:*_unplug/nr=1/,net:*dev_queue/nr=3,max-stack=16/
330
+ 0.000 :0/0 sched:sched_switch:swapper/2:0 [120] S ==> rcu_sched:10 [120]
331
+ 0.015 rcu_sched/10 sched:sched_switch:rcu_sched:10 [120] R ==> swapper/2:0 [120]
332
+ 254.198 irq/50-iwlwifi/680 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=66
333
+ __dev_queue_xmit ([kernel.kallsyms])
334
+ 273.977 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=78
335
+ __dev_queue_xmit ([kernel.kallsyms])
336
+ 274.007 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051ff00 len=78
337
+ __dev_queue_xmit ([kernel.kallsyms])
338
+ 2930.140 kworker/u16:58/2722 block:block_plug:[kworker/u16:58]
339
+ 2930.162 kworker/u16:58/2722 block:block_unplug:[kworker/u16:58] 1
340
+ 4466.094 jbd2/dm-2-8/748 block:block_plug:[jbd2/dm-2-8]
341
+ 8050.123 kworker/u16:30/2694 block:block_plug:[kworker/u16:30]
342
+ 8050.271 kworker/u16:30/2694 block:block_plug:[kworker/u16:30]
343
+ #
344
+
241345 SEE ALSO
242346 --------
243347 linkperf:perf-record[1], linkperf:perf-script[1]