^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) perf-timechart(1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) NAME
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) perf-timechart - Tool to visualize total system behavior during a workload
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) SYNOPSIS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) [verse]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 'perf timechart' [<timechart options>] {record} [<record options>]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) DESCRIPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) There are two variants of perf timechart:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 'perf timechart record <command>' to record the system level events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) of an arbitrary workload. By default timechart records only scheduler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) and CPU events (task switches, running times, CPU power states, etc),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) but it's possible to record IO (disk, network) activity using -I argument.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 'perf timechart' to turn a trace into a Scalable Vector Graphics file,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) that can be viewed with popular SVG viewers such as 'Inkscape'. Depending
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) on the events in the perf.data file, timechart will contain scheduler/cpu
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) events or IO events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) In IO mode, every bar has two charts: upper and lower.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) Upper bar shows incoming events (disk reads, ingress network packets).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) Lower bar shows outgoing events (disk writes, egress network packets).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) There are also poll bars which show how much time application spent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) in poll/epoll/select syscalls.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) TIMECHART OPTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) -----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) -o::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) --output=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Select the output file (default: output.svg)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) -i::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) --input=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) Select the input file (default: perf.data unless stdin is a fifo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) -w::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) --width=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) Select the width of the SVG file (default: 1000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) -P::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) --power-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) Only output the CPU power section of the diagram
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) -T::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) --tasks-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) Don't output processor state transitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) -p::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) --process::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Select the processes to display, by name or PID
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) -f::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) --force::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) Don't complain, do it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) --symfs=<directory>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) Look for files with symbols relative to this directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) -n::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) --proc-num::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) Print task info for at least given number of tasks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) -t::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) --topology::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) Sort CPUs according to topology.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) --highlight=<duration_nsecs|task_name>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Highlight tasks (using different color) that run more than given
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) duration or tasks with given name. If number is given it's interpreted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) as number of nanoseconds. If non-numeric string is given it's
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) interpreted as task name.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) --io-skip-eagain::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) Don't draw EAGAIN IO events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) --io-min-time=<nsecs>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) Draw small events as if they lasted min-time. Useful when you need
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) to see very small and fast IO. It's possible to specify ms or us
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) suffix to specify time in milliseconds or microseconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) Default value is 1ms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) --io-merge-dist=<nsecs>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) Merge events that are merge-dist nanoseconds apart.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) Reduces number of figures on the SVG and makes it more render-friendly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) It's possible to specify ms or us suffix to specify time in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) milliseconds or microseconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) Default value is 1us.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) RECORD OPTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) --------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) -P::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) --power-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) Record only power-related events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) -T::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) --tasks-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) Record only tasks-related events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) -I::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) --io-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) Record only io-related events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) -g::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) --callchain::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) Do call-graph (stack chain/backtrace) recording
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) EXAMPLES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) $ perf timechart record git pull
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) [ perf record: Woken up 13 times to write data ]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) [ perf record: Captured and wrote 4.253 MB perf.data (~185801 samples) ]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) $ perf timechart
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) Written 10.2 seconds of trace to output.svg.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) Record system-wide timechart:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) $ perf timechart record
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) then generate timechart and highlight 'gcc' tasks:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) $ perf timechart --highlight gcc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) Record system-wide IO events:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) $ perf timechart record -I
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) then generate timechart:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) $ perf timechart
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) SEE ALSO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) linkperf:perf-record[1]