xref: /OK3568_Linux_fs/kernel/tools/perf/Documentation/perf-trace.txt (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunperf-trace(1)
2*4882a593Smuzhiyun=============
3*4882a593Smuzhiyun
4*4882a593SmuzhiyunNAME
5*4882a593Smuzhiyun----
6*4882a593Smuzhiyunperf-trace - strace inspired tool
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunSYNOPSIS
9*4882a593Smuzhiyun--------
10*4882a593Smuzhiyun[verse]
11*4882a593Smuzhiyun'perf trace'
12*4882a593Smuzhiyun'perf trace record'
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunDESCRIPTION
15*4882a593Smuzhiyun-----------
16*4882a593SmuzhiyunThis command will show the events associated with the target, initially
17*4882a593Smuzhiyunsyscalls, but other system events like pagefaults, task lifetime events,
18*4882a593Smuzhiyunscheduling events, etc.
19*4882a593Smuzhiyun
20*4882a593SmuzhiyunThis is a live mode tool in addition to working with perf.data files like
21*4882a593Smuzhiyunthe other perf tools. Files can be generated using the 'perf record' command
22*4882a593Smuzhiyunbut the session needs to include the raw_syscalls events (-e 'raw_syscalls:*').
23*4882a593SmuzhiyunAlternatively, 'perf trace record' can be used as a shortcut to
24*4882a593Smuzhiyunautomatically include the raw_syscalls events when writing events to a file.
25*4882a593Smuzhiyun
26*4882a593SmuzhiyunThe following options apply to perf trace; options to perf trace record are
27*4882a593Smuzhiyunfound in the perf record man page.
28*4882a593Smuzhiyun
29*4882a593SmuzhiyunOPTIONS
30*4882a593Smuzhiyun-------
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun-a::
33*4882a593Smuzhiyun--all-cpus::
34*4882a593Smuzhiyun        System-wide collection from all CPUs.
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun-e::
37*4882a593Smuzhiyun--expr::
38*4882a593Smuzhiyun--event::
39*4882a593Smuzhiyun	List of syscalls and other perf events (tracepoints, HW cache events,
40*4882a593Smuzhiyun	etc) to show. Globbing is supported, e.g.: "epoll_*", "*msg*", etc.
41*4882a593Smuzhiyun	See 'perf list' for a complete list of events.
42*4882a593Smuzhiyun	Prefixing with ! shows all syscalls but the ones specified.  You may
43*4882a593Smuzhiyun	need to escape it.
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun--filter=<filter>::
46*4882a593Smuzhiyun        Event filter. This option should follow an event selector (-e) which
47*4882a593Smuzhiyun	selects tracepoint event(s).
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun-D msecs::
51*4882a593Smuzhiyun--delay msecs::
52*4882a593SmuzhiyunAfter starting the program, wait msecs before measuring. This is useful to
53*4882a593Smuzhiyunfilter out the startup phase of the program, which is often very different.
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun-o::
56*4882a593Smuzhiyun--output=::
57*4882a593Smuzhiyun	Output file name.
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun-p::
60*4882a593Smuzhiyun--pid=::
61*4882a593Smuzhiyun	Record events on existing process ID (comma separated list).
62*4882a593Smuzhiyun
63*4882a593Smuzhiyun-t::
64*4882a593Smuzhiyun--tid=::
65*4882a593Smuzhiyun        Record events on existing thread ID (comma separated list).
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun-u::
68*4882a593Smuzhiyun--uid=::
69*4882a593Smuzhiyun        Record events in threads owned by uid. Name or number.
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun-G::
72*4882a593Smuzhiyun--cgroup::
73*4882a593Smuzhiyun	Record events in threads in a cgroup.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun	Look for cgroups to set at the /sys/fs/cgroup/perf_event directory, then
76*4882a593Smuzhiyun	remove the /sys/fs/cgroup/perf_event/ part and try:
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun		perf trace -G A -e sched:*switch
79*4882a593Smuzhiyun
80*4882a593Smuzhiyun	Will set all raw_syscalls:sys_{enter,exit}, pgfault, vfs_getname, etc
81*4882a593Smuzhiyun	_and_ sched:sched_switch to the 'A' cgroup, while:
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun		perf trace -e sched:*switch -G A
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun	will only set the sched:sched_switch event to the 'A' cgroup, all the
86*4882a593Smuzhiyun	other events (raw_syscalls:sys_{enter,exit}, etc are left "without"
87*4882a593Smuzhiyun	a cgroup (on the root cgroup, sys wide, etc).
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun	Multiple cgroups:
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun		perf trace -G A -e sched:*switch -G B
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun	the syscall ones go to the 'A' cgroup, the sched:sched_switch goes
94*4882a593Smuzhiyun	to the 'B' cgroup.
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun--filter-pids=::
97*4882a593Smuzhiyun	Filter out events for these pids and for 'trace' itself (comma separated list).
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun-v::
100*4882a593Smuzhiyun--verbose=::
101*4882a593Smuzhiyun        Verbosity level.
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun--no-inherit::
104*4882a593Smuzhiyun	Child tasks do not inherit counters.
105*4882a593Smuzhiyun
106*4882a593Smuzhiyun-m::
107*4882a593Smuzhiyun--mmap-pages=::
108*4882a593Smuzhiyun	Number of mmap data pages (must be a power of two) or size
109*4882a593Smuzhiyun	specification with appended unit character - B/K/M/G. The
110*4882a593Smuzhiyun	size is rounded up to have nearest pages power of two value.
111*4882a593Smuzhiyun
112*4882a593Smuzhiyun-C::
113*4882a593Smuzhiyun--cpu::
114*4882a593SmuzhiyunCollect samples only on the list of CPUs provided. Multiple CPUs can be provided as a
115*4882a593Smuzhiyuncomma-separated list with no space: 0,1. Ranges of CPUs are specified with -: 0-2.
116*4882a593SmuzhiyunIn per-thread mode with inheritance mode on (default), Events are captured only when
117*4882a593Smuzhiyunthe thread executes on the designated CPUs. Default is to monitor all CPUs.
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun--duration::
120*4882a593Smuzhiyun	Show only events that had a duration greater than N.M ms.
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun--sched::
123*4882a593Smuzhiyun	Accrue thread runtime and provide a summary at the end of the session.
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun--failure::
126*4882a593Smuzhiyun	Show only syscalls that failed, i.e. that returned < 0.
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun-i::
129*4882a593Smuzhiyun--input::
130*4882a593Smuzhiyun	Process events from a given perf data file.
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun-T::
133*4882a593Smuzhiyun--time::
134*4882a593Smuzhiyun	Print full timestamp rather time relative to first sample.
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun--comm::
137*4882a593Smuzhiyun        Show process COMM right beside its ID, on by default, disable with --no-comm.
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun-s::
140*4882a593Smuzhiyun--summary::
141*4882a593Smuzhiyun	Show only a summary of syscalls by thread with min, max, and average times
142*4882a593Smuzhiyun    (in msec) and relative stddev.
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun-S::
145*4882a593Smuzhiyun--with-summary::
146*4882a593Smuzhiyun	Show all syscalls followed by a summary by thread with min, max, and
147*4882a593Smuzhiyun    average times (in msec) and relative stddev.
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun--errno-summary::
150*4882a593Smuzhiyun	To be used with -s or -S, to show stats for the errnos experienced by
151*4882a593Smuzhiyun	syscalls, using only this option will trigger --summary.
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun--tool_stats::
154*4882a593Smuzhiyun	Show tool stats such as number of times fd->pathname was discovered thru
155*4882a593Smuzhiyun	hooking the open syscall return + vfs_getname or via reading /proc/pid/fd, etc.
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun-f::
158*4882a593Smuzhiyun--force::
159*4882a593Smuzhiyun	Don't complain, do it.
160*4882a593Smuzhiyun
161*4882a593Smuzhiyun-F=[all|min|maj]::
162*4882a593Smuzhiyun--pf=[all|min|maj]::
163*4882a593Smuzhiyun	Trace pagefaults. Optionally, you can specify whether you want minor,
164*4882a593Smuzhiyun	major or all pagefaults. Default value is maj.
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun--syscalls::
167*4882a593Smuzhiyun	Trace system calls. This options is enabled by default, disable with
168*4882a593Smuzhiyun	--no-syscalls.
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun--call-graph [mode,type,min[,limit],order[,key][,branch]]::
171*4882a593Smuzhiyun        Setup and enable call-graph (stack chain/backtrace) recording.
172*4882a593Smuzhiyun        See `--call-graph` section in perf-record and perf-report
173*4882a593Smuzhiyun        man pages for details. The ones that are most useful in 'perf trace'
174*4882a593Smuzhiyun        are 'dwarf' and 'lbr', where available, try: 'perf trace --call-graph dwarf'.
175*4882a593Smuzhiyun
176*4882a593Smuzhiyun        Using this will, for the root user, bump the value of --mmap-pages to 4
177*4882a593Smuzhiyun        times the maximum for non-root users, based on the kernel.perf_event_mlock_kb
178*4882a593Smuzhiyun        sysctl. This is done only if the user doesn't specify a --mmap-pages value.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun--kernel-syscall-graph::
181*4882a593Smuzhiyun	 Show the kernel callchains on the syscall exit path.
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun--max-events=N::
184*4882a593Smuzhiyun	Stop after processing N events. Note that strace-like events are considered
185*4882a593Smuzhiyun	only at exit time or when a syscall is interrupted, i.e. in those cases this
186*4882a593Smuzhiyun	option is equivalent to the number of lines printed.
187*4882a593Smuzhiyun
188*4882a593Smuzhiyun--switch-on EVENT_NAME::
189*4882a593Smuzhiyun	Only consider events after this event is found.
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun--switch-off EVENT_NAME::
192*4882a593Smuzhiyun	Stop considering events after this event is found.
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun--show-on-off-events::
195*4882a593Smuzhiyun	Show the --switch-on/off events too.
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun--max-stack::
198*4882a593Smuzhiyun        Set the stack depth limit when parsing the callchain, anything
199*4882a593Smuzhiyun        beyond the specified depth will be ignored. Note that at this point
200*4882a593Smuzhiyun        this is just about the presentation part, i.e. the kernel is still
201*4882a593Smuzhiyun        not limiting, the overhead of callchains needs to be set via the
202*4882a593Smuzhiyun        knobs in --call-graph dwarf.
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun        Implies '--call-graph dwarf' when --call-graph not present on the
205*4882a593Smuzhiyun        command line, on systems where DWARF unwinding was built in.
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun        Default: /proc/sys/kernel/perf_event_max_stack when present for
208*4882a593Smuzhiyun                 live sessions (without --input/-i), 127 otherwise.
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun--min-stack::
211*4882a593Smuzhiyun        Set the stack depth limit when parsing the callchain, anything
212*4882a593Smuzhiyun        below the specified depth will be ignored. Disabled by default.
213*4882a593Smuzhiyun
214*4882a593Smuzhiyun        Implies '--call-graph dwarf' when --call-graph not present on the
215*4882a593Smuzhiyun        command line, on systems where DWARF unwinding was built in.
216*4882a593Smuzhiyun
217*4882a593Smuzhiyun--print-sample::
218*4882a593Smuzhiyun	Print the PERF_RECORD_SAMPLE PERF_SAMPLE_ info for the
219*4882a593Smuzhiyun	raw_syscalls:sys_{enter,exit} tracepoints, for debugging.
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun--proc-map-timeout::
222*4882a593Smuzhiyun	When processing pre-existing threads /proc/XXX/mmap, it may take a long time,
223*4882a593Smuzhiyun	because the file may be huge. A time out is needed in such cases.
224*4882a593Smuzhiyun	This option sets the time out limit. The default value is 500 ms.
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun--sort-events::
227*4882a593Smuzhiyun	Do sorting on batches of events, use when noticing out of order events that
228*4882a593Smuzhiyun	may happen, for instance, when a thread gets migrated to a different CPU
229*4882a593Smuzhiyun	while processing a syscall.
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun--libtraceevent_print::
232*4882a593Smuzhiyun	Use libtraceevent to print tracepoint arguments. By default 'perf trace' uses
233*4882a593Smuzhiyun	the same beautifiers used in the strace-like enter+exit lines to augment the
234*4882a593Smuzhiyun	tracepoint arguments.
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun--map-dump::
237*4882a593Smuzhiyun	Dump BPF maps setup by events passed via -e, for instance the augmented_raw_syscalls
238*4882a593Smuzhiyun	living in tools/perf/examples/bpf/augmented_raw_syscalls.c. For now this
239*4882a593Smuzhiyun	dumps just boolean map values and integer keys, in time this will print in hex
240*4882a593Smuzhiyun	by default and use BTF when available, as well as use functions to do pretty
241*4882a593Smuzhiyun	printing using the existing 'perf trace' syscall arg beautifiers to map integer
242*4882a593Smuzhiyun	arguments to strings (pid to comm, syscall id to syscall name, etc).
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun
245*4882a593SmuzhiyunPAGEFAULTS
246*4882a593Smuzhiyun----------
247*4882a593Smuzhiyun
248*4882a593SmuzhiyunWhen tracing pagefaults, the format of the trace is as follows:
249*4882a593Smuzhiyun
250*4882a593Smuzhiyun<min|maj>fault [<ip.symbol>+<ip.offset>] => <addr.dso@addr.offset> (<map type><addr level>).
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun- min/maj indicates whether fault event is minor or major;
253*4882a593Smuzhiyun- ip.symbol shows symbol for instruction pointer (the code that generated the
254*4882a593Smuzhiyun  fault); if no debug symbols available, perf trace will print raw IP;
255*4882a593Smuzhiyun- addr.dso shows DSO for the faulted address;
256*4882a593Smuzhiyun- map type is either 'd' for non-executable maps or 'x' for executable maps;
257*4882a593Smuzhiyun- addr level is either 'k' for kernel dso or '.' for user dso.
258*4882a593Smuzhiyun
259*4882a593SmuzhiyunFor symbols resolution you may need to install debugging symbols.
260*4882a593Smuzhiyun
261*4882a593SmuzhiyunPlease be aware that duration is currently always 0 and doesn't reflect actual
262*4882a593Smuzhiyuntime it took for fault to be handled!
263*4882a593Smuzhiyun
264*4882a593SmuzhiyunWhen --verbose specified, perf trace tries to print all available information
265*4882a593Smuzhiyunfor both IP and fault address in the form of dso@symbol+offset.
266*4882a593Smuzhiyun
267*4882a593SmuzhiyunEXAMPLES
268*4882a593Smuzhiyun--------
269*4882a593Smuzhiyun
270*4882a593SmuzhiyunTrace only major pagefaults:
271*4882a593Smuzhiyun
272*4882a593Smuzhiyun $ perf trace --no-syscalls -F
273*4882a593Smuzhiyun
274*4882a593SmuzhiyunTrace syscalls, major and minor pagefaults:
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun $ perf trace -F all
277*4882a593Smuzhiyun
278*4882a593Smuzhiyun  1416.547 ( 0.000 ms): python/20235 majfault [CRYPTO_push_info_+0x0] => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0@0x61be0 (x.)
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun  As you can see, there was major pagefault in python process, from
281*4882a593Smuzhiyun  CRYPTO_push_info_ routine which faulted somewhere in libcrypto.so.
282*4882a593Smuzhiyun
283*4882a593SmuzhiyunTrace the first 4 open, openat or open_by_handle_at syscalls (in the future more syscalls may match here):
284*4882a593Smuzhiyun
285*4882a593Smuzhiyun  $ perf trace -e open* --max-events 4
286*4882a593Smuzhiyun  [root@jouet perf]# trace -e open* --max-events 4
287*4882a593Smuzhiyun  2272.992 ( 0.037 ms): gnome-shell/1370 openat(dfd: CWD, filename: /proc/self/stat) = 31
288*4882a593Smuzhiyun  2277.481 ( 0.139 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65
289*4882a593Smuzhiyun  3026.398 ( 0.076 ms): gnome-shell/3039 openat(dfd: CWD, filename: /proc/self/stat) = 65
290*4882a593Smuzhiyun  4294.665 ( 0.015 ms): sed/15879 openat(dfd: CWD, filename: /etc/ld.so.cache, flags: CLOEXEC) = 3
291*4882a593Smuzhiyun  $
292*4882a593Smuzhiyun
293*4882a593SmuzhiyunTrace the first minor page fault when running a workload:
294*4882a593Smuzhiyun
295*4882a593Smuzhiyun  # perf trace -F min --max-stack=7 --max-events 1 sleep 1
296*4882a593Smuzhiyun     0.000 ( 0.000 ms): sleep/18006 minfault [__clear_user+0x1a] => 0x5626efa56080 (?k)
297*4882a593Smuzhiyun                                       __clear_user ([kernel.kallsyms])
298*4882a593Smuzhiyun                                       load_elf_binary ([kernel.kallsyms])
299*4882a593Smuzhiyun                                       search_binary_handler ([kernel.kallsyms])
300*4882a593Smuzhiyun                                       __do_execve_file.isra.33 ([kernel.kallsyms])
301*4882a593Smuzhiyun                                       __x64_sys_execve ([kernel.kallsyms])
302*4882a593Smuzhiyun                                       do_syscall_64 ([kernel.kallsyms])
303*4882a593Smuzhiyun                                       entry_SYSCALL_64 ([kernel.kallsyms])
304*4882a593Smuzhiyun  #
305*4882a593Smuzhiyun
306*4882a593SmuzhiyunTrace the next min page page fault to take place on the first CPU:
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun  # perf trace -F min --call-graph=dwarf --max-events 1 --cpu 0
309*4882a593Smuzhiyun     0.000 ( 0.000 ms): Web Content/17136 minfault [js::gc::Chunk::fetchNextDecommittedArena+0x4b] => 0x7fbe6181b000 (?.)
310*4882a593Smuzhiyun                                       js::gc::FreeSpan::initAsEmpty (inlined)
311*4882a593Smuzhiyun                                       js::gc::Arena::setAsNotAllocated (inlined)
312*4882a593Smuzhiyun                                       js::gc::Chunk::fetchNextDecommittedArena (/usr/lib64/firefox/libxul.so)
313*4882a593Smuzhiyun                                       js::gc::Chunk::allocateArena (/usr/lib64/firefox/libxul.so)
314*4882a593Smuzhiyun                                       js::gc::GCRuntime::allocateArena (/usr/lib64/firefox/libxul.so)
315*4882a593Smuzhiyun                                       js::gc::ArenaLists::allocateFromArena (/usr/lib64/firefox/libxul.so)
316*4882a593Smuzhiyun                                       js::gc::GCRuntime::tryNewTenuredThing<JSString, (js::AllowGC)1> (inlined)
317*4882a593Smuzhiyun                                       js::AllocateString<JSString, (js::AllowGC)1> (/usr/lib64/firefox/libxul.so)
318*4882a593Smuzhiyun                                       js::Allocate<JSThinInlineString, (js::AllowGC)1> (inlined)
319*4882a593Smuzhiyun                                       JSThinInlineString::new_<(js::AllowGC)1> (inlined)
320*4882a593Smuzhiyun                                       AllocateInlineString<(js::AllowGC)1, unsigned char> (inlined)
321*4882a593Smuzhiyun                                       js::ConcatStrings<(js::AllowGC)1> (/usr/lib64/firefox/libxul.so)
322*4882a593Smuzhiyun                                       [0x18b26e6bc2bd] (/tmp/perf-17136.map)
323*4882a593Smuzhiyun  #
324*4882a593Smuzhiyun
325*4882a593SmuzhiyunTrace the next two sched:sched_switch events, four block:*_plug events, the
326*4882a593Smuzhiyunnext block:*_unplug and the next three net:*dev_queue events, this last one
327*4882a593Smuzhiyunwith a backtrace of at most 16 entries, system wide:
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun  # perf trace -e sched:*switch/nr=2/,block:*_plug/nr=4/,block:*_unplug/nr=1/,net:*dev_queue/nr=3,max-stack=16/
330*4882a593Smuzhiyun     0.000 :0/0 sched:sched_switch:swapper/2:0 [120] S ==> rcu_sched:10 [120]
331*4882a593Smuzhiyun     0.015 rcu_sched/10 sched:sched_switch:rcu_sched:10 [120] R ==> swapper/2:0 [120]
332*4882a593Smuzhiyun   254.198 irq/50-iwlwifi/680 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=66
333*4882a593Smuzhiyun                                       __dev_queue_xmit ([kernel.kallsyms])
334*4882a593Smuzhiyun   273.977 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051f600 len=78
335*4882a593Smuzhiyun                                       __dev_queue_xmit ([kernel.kallsyms])
336*4882a593Smuzhiyun   274.007 :0/0 net:net_dev_queue:dev=wlp3s0 skbaddr=0xffff93498051ff00 len=78
337*4882a593Smuzhiyun                                       __dev_queue_xmit ([kernel.kallsyms])
338*4882a593Smuzhiyun  2930.140 kworker/u16:58/2722 block:block_plug:[kworker/u16:58]
339*4882a593Smuzhiyun  2930.162 kworker/u16:58/2722 block:block_unplug:[kworker/u16:58] 1
340*4882a593Smuzhiyun  4466.094 jbd2/dm-2-8/748 block:block_plug:[jbd2/dm-2-8]
341*4882a593Smuzhiyun  8050.123 kworker/u16:30/2694 block:block_plug:[kworker/u16:30]
342*4882a593Smuzhiyun  8050.271 kworker/u16:30/2694 block:block_plug:[kworker/u16:30]
343*4882a593Smuzhiyun  #
344*4882a593Smuzhiyun
345*4882a593SmuzhiyunSEE ALSO
346*4882a593Smuzhiyun--------
347*4882a593Smuzhiyunlinkperf:perf-record[1], linkperf:perf-script[1]
348