| perf-timechart(1) |
| ================= |
| |
| NAME |
| ---- |
| perf-timechart - Tool to visualize total system behavior during a workload |
| |
| SYNOPSIS |
| -------- |
| [verse] |
| 'perf timechart' [<timechart options>] {record} [<record options>] |
| |
| DESCRIPTION |
| ----------- |
| There are two variants of perf timechart: |
| |
| 'perf timechart record <command>' to record the system level events |
| of an arbitrary workload. By default timechart records only scheduler |
| and CPU events (task switches, running times, CPU power states, etc), |
| but it's possible to record IO (disk, network) activity using -I argument. |
| |
| 'perf timechart' to turn a trace into a Scalable Vector Graphics file, |
| that can be viewed with popular SVG viewers such as 'Inkscape'. Depending |
| on the events in the perf.data file, timechart will contain scheduler/cpu |
| events or IO events. |
| |
| In IO mode, every bar has two charts: upper and lower. |
| Upper bar shows incoming events (disk reads, ingress network packets). |
| Lower bar shows outgoing events (disk writes, egress network packets). |
| There are also poll bars which show how much time application spent |
| in poll/epoll/select syscalls. |
| |
| TIMECHART OPTIONS |
| ----------------- |
| -o:: |
| --output=:: |
| Select the output file (default: output.svg) |
| -i:: |
| --input=:: |
| Select the input file (default: perf.data unless stdin is a fifo) |
| -w:: |
| --width=:: |
| Select the width of the SVG file (default: 1000) |
| -P:: |
| --power-only:: |
| Only output the CPU power section of the diagram |
| -T:: |
| --tasks-only:: |
| Don't output processor state transitions |
| -p:: |
| --process:: |
| Select the processes to display, by name or PID |
| -f:: |
| --force:: |
| Don't complain, do it. |
| --symfs=<directory>:: |
| Look for files with symbols relative to this directory. |
| -n:: |
| --proc-num:: |
| Print task info for at least given number of tasks. |
| -t:: |
| --topology:: |
| Sort CPUs according to topology. |
| --highlight=<duration_nsecs|task_name>:: |
| Highlight tasks (using different color) that run more than given |
| duration or tasks with given name. If number is given it's interpreted |
| as number of nanoseconds. If non-numeric string is given it's |
| interpreted as task name. |
| --io-skip-eagain:: |
| Don't draw EAGAIN IO events. |
| --io-min-time=<nsecs>:: |
| Draw small events as if they lasted min-time. Useful when you need |
| to see very small and fast IO. It's possible to specify ms or us |
| suffix to specify time in milliseconds or microseconds. |
| Default value is 1ms. |
| --io-merge-dist=<nsecs>:: |
| Merge events that are merge-dist nanoseconds apart. |
| Reduces number of figures on the SVG and makes it more render-friendly. |
| It's possible to specify ms or us suffix to specify time in |
| milliseconds or microseconds. |
| Default value is 1us. |
| |
| RECORD OPTIONS |
| -------------- |
| -P:: |
| --power-only:: |
| Record only power-related events |
| -T:: |
| --tasks-only:: |
| Record only tasks-related events |
| -I:: |
| --io-only:: |
| Record only io-related events |
| -g:: |
| --callchain:: |
| Do call-graph (stack chain/backtrace) recording |
| |
| EXAMPLES |
| -------- |
| |
| $ perf timechart record git pull |
| |
| [ perf record: Woken up 13 times to write data ] |
| [ perf record: Captured and wrote 4.253 MB perf.data (~185801 samples) ] |
| |
| $ perf timechart |
| |
| Written 10.2 seconds of trace to output.svg. |
| |
| Record system-wide timechart: |
| |
| $ perf timechart record |
| |
| then generate timechart and highlight 'gcc' tasks: |
| |
| $ perf timechart --highlight gcc |
| |
| Record system-wide IO events: |
| |
| $ perf timechart record -I |
| |
| then generate timechart: |
| |
| $ perf timechart |
| |
| SEE ALSO |
| -------- |
| linkperf:perf-record[1] |