181 lines
5.0 KiB
Plaintext
181 lines
5.0 KiB
Plaintext
|
perf-kowrk(1)
|
||
|
=============
|
||
|
|
||
|
NAME
|
||
|
----
|
||
|
perf-kwork - Tool to trace/measure kernel work properties (latencies)
|
||
|
|
||
|
SYNOPSIS
|
||
|
--------
|
||
|
[verse]
|
||
|
'perf kwork' {record}
|
||
|
|
||
|
DESCRIPTION
|
||
|
-----------
|
||
|
There are several variants of 'perf kwork':
|
||
|
|
||
|
'perf kwork record <command>' to record the kernel work
|
||
|
of an arbitrary workload.
|
||
|
|
||
|
'perf kwork report' to report the per kwork runtime.
|
||
|
|
||
|
'perf kwork latency' to report the per kwork latencies.
|
||
|
|
||
|
'perf kwork timehist' provides an analysis of kernel work events.
|
||
|
|
||
|
Example usage:
|
||
|
perf kwork record -- sleep 1
|
||
|
perf kwork report
|
||
|
perf kwork report -b
|
||
|
perf kwork latency
|
||
|
perf kwork latency -b
|
||
|
perf kwork timehist
|
||
|
|
||
|
By default it shows the individual work events such as irq, workqeueu,
|
||
|
including the run time and delay (time between raise and actually entry):
|
||
|
|
||
|
Runtime start Runtime end Cpu Kwork name Runtime Delaytime
|
||
|
(TYPE)NAME:NUM (msec) (msec)
|
||
|
----------------- ----------------- ------ ------------------------- ---------- ----------
|
||
|
1811186.976062 1811186.976327 [0000] (s)RCU:9 0.266 0.114
|
||
|
1811186.978452 1811186.978547 [0000] (s)SCHED:7 0.095 0.171
|
||
|
1811186.980327 1811186.980490 [0000] (s)SCHED:7 0.162 0.083
|
||
|
1811186.981221 1811186.981271 [0000] (s)SCHED:7 0.050 0.077
|
||
|
1811186.984267 1811186.984318 [0000] (s)SCHED:7 0.051 0.075
|
||
|
1811186.987252 1811186.987315 [0000] (s)SCHED:7 0.063 0.081
|
||
|
1811186.987785 1811186.987843 [0006] (s)RCU:9 0.058 0.645
|
||
|
1811186.988319 1811186.988383 [0000] (s)SCHED:7 0.064 0.143
|
||
|
1811186.989404 1811186.989607 [0002] (s)TIMER:1 0.203 0.111
|
||
|
1811186.989660 1811186.989732 [0002] (s)SCHED:7 0.072 0.310
|
||
|
1811186.991295 1811186.991407 [0002] eth0:10 0.112
|
||
|
1811186.991639 1811186.991734 [0002] (s)NET_RX:3 0.095 0.277
|
||
|
1811186.989860 1811186.991826 [0002] (w)vmstat_shepherd 1.966 0.345
|
||
|
...
|
||
|
|
||
|
Times are in msec.usec.
|
||
|
|
||
|
OPTIONS
|
||
|
-------
|
||
|
-D::
|
||
|
--dump-raw-trace=::
|
||
|
Display verbose dump of the sched data.
|
||
|
|
||
|
-f::
|
||
|
--force::
|
||
|
Don't complain, do it.
|
||
|
|
||
|
-k::
|
||
|
--kwork::
|
||
|
List of kwork to profile (irq, softirq, workqueue, etc)
|
||
|
|
||
|
-v::
|
||
|
--verbose::
|
||
|
Be more verbose. (show symbol address, etc)
|
||
|
|
||
|
OPTIONS for 'perf kwork report'
|
||
|
----------------------------
|
||
|
|
||
|
-b::
|
||
|
--use-bpf::
|
||
|
Use BPF to measure kwork runtime
|
||
|
|
||
|
-C::
|
||
|
--cpu::
|
||
|
Only show events for the given CPU(s) (comma separated list).
|
||
|
|
||
|
-i::
|
||
|
--input::
|
||
|
Input file name. (default: perf.data unless stdin is a fifo)
|
||
|
|
||
|
-n::
|
||
|
--name::
|
||
|
Only show events for the given name.
|
||
|
|
||
|
-s::
|
||
|
--sort::
|
||
|
Sort by key(s): runtime, max, count
|
||
|
|
||
|
-S::
|
||
|
--with-summary::
|
||
|
Show summary with statistics
|
||
|
|
||
|
--time::
|
||
|
Only analyze samples within given time window: <start>,<stop>. Times
|
||
|
have the format seconds.microseconds. If start is not given (i.e., time
|
||
|
string is ',x.y') then analysis starts at the beginning of the file. If
|
||
|
stop time is not given (i.e, time string is 'x.y,') then analysis goes
|
||
|
to end of file.
|
||
|
|
||
|
OPTIONS for 'perf kwork latency'
|
||
|
----------------------------
|
||
|
|
||
|
-b::
|
||
|
--use-bpf::
|
||
|
Use BPF to measure kwork latency
|
||
|
|
||
|
-C::
|
||
|
--cpu::
|
||
|
Only show events for the given CPU(s) (comma separated list).
|
||
|
|
||
|
-i::
|
||
|
--input::
|
||
|
Input file name. (default: perf.data unless stdin is a fifo)
|
||
|
|
||
|
-n::
|
||
|
--name::
|
||
|
Only show events for the given name.
|
||
|
|
||
|
-s::
|
||
|
--sort::
|
||
|
Sort by key(s): avg, max, count
|
||
|
|
||
|
--time::
|
||
|
Only analyze samples within given time window: <start>,<stop>. Times
|
||
|
have the format seconds.microseconds. If start is not given (i.e., time
|
||
|
string is ',x.y') then analysis starts at the beginning of the file. If
|
||
|
stop time is not given (i.e, time string is 'x.y,') then analysis goes
|
||
|
to end of file.
|
||
|
|
||
|
OPTIONS for 'perf kwork timehist'
|
||
|
---------------------------------
|
||
|
|
||
|
-C::
|
||
|
--cpu::
|
||
|
Only show events for the given CPU(s) (comma separated list).
|
||
|
|
||
|
-g::
|
||
|
--call-graph::
|
||
|
Display call chains if present (default off).
|
||
|
|
||
|
-i::
|
||
|
--input::
|
||
|
Input file name. (default: perf.data unless stdin is a fifo)
|
||
|
|
||
|
-k::
|
||
|
--vmlinux=<file>::
|
||
|
Vmlinux pathname
|
||
|
|
||
|
-n::
|
||
|
--name::
|
||
|
Only show events for the given name.
|
||
|
|
||
|
--kallsyms=<file>::
|
||
|
Kallsyms pathname
|
||
|
|
||
|
--max-stack::
|
||
|
Maximum number of functions to display in backtrace, default 5.
|
||
|
|
||
|
--symfs=<directory>::
|
||
|
Look for files with symbols relative to this directory.
|
||
|
|
||
|
--time::
|
||
|
Only analyze samples within given time window: <start>,<stop>. Times
|
||
|
have the format seconds.microseconds. If start is not given (i.e., time
|
||
|
string is ',x.y') then analysis starts at the beginning of the file. If
|
||
|
stop time is not given (i.e, time string is 'x.y,') then analysis goes
|
||
|
to end of file.
|
||
|
|
||
|
SEE ALSO
|
||
|
--------
|
||
|
linkperf:perf-record[1]
|