| perf-kwork(1) |
| ============= |
| |
| NAME |
| ---- |
| perf-kwork - Tool to trace/measure kernel work properties (latencies) |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'perf kwork' {record|report|latency|timehist|top} |
| |
| 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. |
| |
| 'perf kwork top' to report the task cpu usage. |
| |
| Example usage: |
| perf kwork record -- sleep 1 |
| perf kwork report |
| perf kwork report -b |
| perf kwork latency |
| perf kwork latency -b |
| perf kwork timehist |
| perf kwork top |
| perf kwork top -b |
| |
| By default it shows the individual work events such as irq, workqueue, |
| 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, sched, 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. |
| |
| OPTIONS for 'perf kwork top' |
| --------------------------------- |
| |
| -b:: |
| --use-bpf:: |
| Use BPF to measure task cpu usage. |
| |
| -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): rate, runtime, tid |
| |
| --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] |