^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) perf-report(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-report - Read perf.data (created by perf record) and display the profile
^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 report' [-i <file> | --input=file]
^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) This command displays the performance counter profile information recorded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) via perf record.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) OPTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) -i::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) --input=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) Input file name. (default: perf.data unless stdin is a fifo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) -v::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) --verbose::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) Be more verbose. (show symbol address, etc)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) -q::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) --quiet::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) Do not show any message. (Suppress -v)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) -n::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) --show-nr-samples::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) Show the number of samples for each symbol
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) --show-cpu-utilization::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) Show sample percentage for different cpu modes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) -T::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) --threads::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) Show per-thread event counters. The input data file should be recorded
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) with -s option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) -c::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) --comms=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) Only consider symbols in these comms. CSV that understands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) file://filename entries. This option will affect the percentage of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) the overhead column. See --percentage for more info.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) --pid=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) Only show events for given process ID (comma separated list).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) --tid=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) Only show events for given thread ID (comma separated list).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) -d::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) --dsos=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) Only consider symbols in these dsos. CSV that understands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) file://filename entries. This option will affect the percentage of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) the overhead column. See --percentage for more info.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) -S::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) --symbols=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) Only consider these symbols. CSV that understands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) file://filename entries. This option will affect the percentage of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) the overhead column. See --percentage for more info.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) --symbol-filter=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) Only show symbols that match (partially) with this filter.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) -U::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) --hide-unresolved::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Only display entries resolved to a symbol.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) -s::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) --sort=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) Sort histogram entries by given key(s) - multiple keys can be specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) in CSV format. Following sort keys are available:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) pid, comm, dso, symbol, parent, cpu, socket, srcline, weight,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) local_weight, cgroup_id.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) Each key has following meaning:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) - comm: command (name) of the task which can be read via /proc/<pid>/comm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) - pid: command and tid of the task
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) - dso: name of library or module executed at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) - dso_size: size of library or module executed at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) - symbol: name of function executed at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) - symbol_size: size of function executed at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) - parent: name of function matched to the parent regex filter. Unmatched
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) entries are displayed as "[other]".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) - cpu: cpu number the task ran at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) - socket: processor socket number the task ran at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) - srcline: filename and line number executed at the time of sample. The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) DWARF debugging info must be provided.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) - srcfile: file name of the source file of the samples. Requires dwarf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) - weight: Event specific weight, e.g. memory latency or transaction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) abort cost. This is the global weight.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) - local_weight: Local weight version of the weight above.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) - cgroup_id: ID derived from cgroup namespace device and inode numbers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) - cgroup: cgroup pathname in the cgroupfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) - transaction: Transaction abort flags.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) - overhead: Overhead percentage of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) - overhead_sys: Overhead percentage of sample running in system mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) - overhead_us: Overhead percentage of sample running in user mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) - overhead_guest_sys: Overhead percentage of sample running in system mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) on guest machine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) - overhead_guest_us: Overhead percentage of sample running in user mode on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) guest machine
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) - sample: Number of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) - period: Raw number of event count of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) - time: Separate the samples by time stamp with the resolution specified by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) --time-quantum (default 100ms). Specify with overhead and before it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) By default, comm, dso and symbol keys are used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) (i.e. --sort comm,dso,symbol)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) If --branch-stack option is used, following sort keys are also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) available:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) - dso_from: name of library or module branched from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) - dso_to: name of library or module branched to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) - symbol_from: name of function branched from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) - symbol_to: name of function branched to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) - srcline_from: source file and line branched from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) - srcline_to: source file and line branched to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) - mispredict: "N" for predicted branch, "Y" for mispredicted branch
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) - in_tx: branch in TSX transaction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) - abort: TSX transaction abort.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) - cycles: Cycles in basic block
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) And default sort keys are changed to comm, dso_from, symbol_from, dso_to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) and symbol_to, see '--branch-stack'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) When the sort key symbol is specified, columns "IPC" and "IPC Coverage"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) are enabled automatically. Column "IPC" reports the average IPC per function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) and column "IPC coverage" reports the percentage of instructions with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) sampled IPC in this function. IPC means Instruction Per Cycle. If it's low,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) it indicates there may be a performance bottleneck when the function is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) executed, such as a memory access bottleneck. If a function has high overhead
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) and low IPC, it's worth further analyzing it to optimize its performance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) If the --mem-mode option is used, the following sort keys are also available
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) (incompatible with --branch-stack):
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) - symbol_daddr: name of data symbol being executed on at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) - dso_daddr: name of library or module containing the data being executed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) on at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) - locked: whether the bus was locked at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) - tlb: type of tlb access for the data at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) - mem: type of memory access for the data at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) - snoop: type of snoop (if any) for the data at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) - dcacheline: the cacheline the data address is on at the time of the sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) - phys_daddr: physical address of data being executed on at the time of sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) And the default sort keys are changed to local_weight, mem, sym, dso,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) If the data file has tracepoint event(s), following (dynamic) sort keys
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) are also available:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) trace, trace_fields, [<event>.]<field>[/raw]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) - trace: pretty printed trace output in a single column
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) - trace_fields: fields in tracepoints in separate columns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) - <field name>: optional event and field name for a specific field
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) The last form consists of event and field names. If event name is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) omitted, it searches all events for matching field name. The matched
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) field will be shown only for the event has the field. The event name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) supports substring match so user doesn't need to specify full subsystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) and event name everytime. For example, 'sched:sched_switch' event can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) be shortened to 'switch' as long as it's not ambiguous. Also event can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) be specified by its index (starting from 1) preceded by the '%'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) So '%1' is the first event, '%2' is the second, and so on.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) The field name can have '/raw' suffix which disables pretty printing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) and shows raw field value like hex numbers. The --raw-trace option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) has the same effect for all dynamic sort keys.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) The default sort keys are changed to 'trace' if all events in the data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) file are tracepoint.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) -F::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) --fields=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) Specify output field - multiple keys can be specified in CSV format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) Following fields are available:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) overhead, overhead_sys, overhead_us, overhead_children, sample and period.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) Also it can contain any sort key(s).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) By default, every sort keys not specified in -F will be appended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) automatically.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) If the keys starts with a prefix '+', then it will append the specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) field(s) to the default field order. For example: perf report -F +period,sample.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) -p::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) --parent=<regex>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) A regex filter to identify parent. The parent is a caller of this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) function and searched through the callchain, thus it requires callchain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) information recorded. The pattern is in the extended regex format and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) defaults to "\^sys_|^do_page_fault", see '--sort parent'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) -x::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) --exclude-other::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) Only display entries with parent-match.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) -w::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) --column-widths=<width[,width...]>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) Force each column width to the provided list, for large terminal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) readability. 0 means no limit (default behavior).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) -t::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) --field-separator=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) Use a special separator character and don't pad with spaces, replacing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) all occurrences of this separator in symbol names (and other output)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) with a '.' character, that thus it's the only non valid separator.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) -D::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) --dump-raw-trace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) Dump raw trace in ASCII.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) -g::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) --call-graph=<print_type,threshold[,print_limit],order,sort_key[,branch],value>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) Display call chains using type, min percent threshold, print limit,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) call order, sort key, optional branch and value. Note that ordering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) is not fixed so any parameter can be given in an arbitrary order.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) One exception is the print_limit which should be preceded by threshold.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) print_type can be either:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) - flat: single column, linear exposure of call chains.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) - graph: use a graph tree, displaying absolute overhead rates. (default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) - fractal: like graph, but displays relative rates. Each branch of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) the tree is considered as a new profiled object.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) - folded: call chains are displayed in a line, separated by semicolons
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) - none: disable call chain display.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) threshold is a percentage value which specifies a minimum percent to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) included in the output call graph. Default is 0.5 (%).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) print_limit is only applied when stdio interface is used. It's to limit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) number of call graph entries in a single hist entry. Note that it needs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) to be given after threshold (but not necessarily consecutive).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) Default is 0 (unlimited).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) order can be either:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) - callee: callee based call graph.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) - caller: inverted caller based call graph.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) Default is 'caller' when --children is used, otherwise 'callee'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) sort_key can be:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249) - function: compare on functions (default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) - address: compare on individual code addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) - srcline: compare on source filename and line number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) branch can be:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) - branch: include last branch information in callgraph when available.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) Usually more convenient to use --branch-history for this.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) value can be:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) - percent: display overhead percent (default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) - period: display event period
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) - count: display event count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) --children::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) Accumulate callchain of children to parent entry so that then can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) show up in the output. The output will have a new "Children" column
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) and will be sorted on the data. It requires callchains are recorded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) See the `overhead calculation' section for more details. Enabled by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) default, disable with --no-children.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) --max-stack::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) Set the stack depth limit when parsing the callchain, anything
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) beyond the specified depth will be ignored. This is a trade-off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) between information loss and faster processing especially for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) workloads that can have a very long callchain stack.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) Note that when using the --itrace option the synthesized callchain size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) will override this value if the synthesized callchain size is bigger.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) Default: 127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) -G::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) --inverted::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) alias for inverted caller based call graph.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) --ignore-callees=<regex>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) Ignore callees of the function(s) matching the given regex.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) This has the effect of collecting the callers of each such
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) function into one place in the call-graph tree.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) --pretty=<key>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) Pretty printing style. key: normal, raw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) --stdio:: Use the stdio interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) --stdio-color::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) 'always', 'never' or 'auto', allowing configuring color output
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) via the command line, in addition to via "color.ui" .perfconfig.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) Use '--stdio-color always' to generate color even when redirecting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) to a pipe or file. Using just '--stdio-color' is equivalent to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) using 'always'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) --tui:: Use the TUI interface, that is integrated with annotate and allows
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) zooming into DSOs or threads, among other features. Use of --tui
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) requires a tty, if one is not present, as when piping to other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) commands, the stdio interface is used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) --gtk:: Use the GTK2 interface.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) -k::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) --vmlinux=<file>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) vmlinux pathname
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) --ignore-vmlinux::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) Ignore vmlinux files.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) --kallsyms=<file>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) kallsyms pathname
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) -m::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318) --modules::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) Load module symbols. WARNING: This should only be used with -k and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) a LIVE kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) -f::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) --force::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) Don't do ownership validation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) --symfs=<directory>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) Look for files with symbols relative to this directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) -C::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) --cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) be provided as a comma-separated list with no space: 0,1. Ranges of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332) CPUs are specified with -: 0-2. Default is to report samples on all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) CPUs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) -M::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) --disassembler-style=:: Set disassembler style for objdump.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338) --source::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) Interleave source code with assembly code. Enabled by default,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) disable with --no-source.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) --asm-raw::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) Show raw instruction encoding of assembly instructions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) --show-total-period:: Show a column with the sum of periods.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) -I::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) --show-info::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) Display extended information about the perf.data file. This adds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) information which may be very large and thus may clutter the display.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351) It currently includes: cpu and numa topology of the host system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) -b::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) --branch-stack::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) Use the addresses of sampled taken branches instead of the instruction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) address to build the histograms. To generate meaningful output, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) perf.data file must have been obtained using perf record -b or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) perf record --branch-filter xxx where xxx is a branch filter option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359) perf report is able to auto-detect whether a perf.data file contains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) branch stacks and it will automatically switch to the branch view mode,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361) unless --no-branch-stack is used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) --branch-history::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364) Add the addresses of sampled taken branches to the callstack.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) This allows to examine the path the program took to each sample.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) The data collection must have used -b (or -j) and -g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368) --objdump=<path>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) Path to objdump binary.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) --prefix=PREFIX::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) --prefix-strip=N::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) Remove first N entries from source file path names in executables
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) and add PREFIX. This allows to display source code compiled on systems
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) with different file system layout.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) --group::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) Show event group information together. It forces group output also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379) if there are no groups defined in data file.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) --group-sort-idx::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) Sort the output by the event at the index n in group. If n is invalid,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383) sort by the first event. It can support multiple groups with different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) amount of events. WARNING: This should be used on grouped events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386) --demangle::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) Demangle symbol names to human readable form. It's enabled by default,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) disable with --no-demangle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) --demangle-kernel::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) Demangle kernel symbol names to human readable form (for C++ kernels).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) --mem-mode::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) Use the data addresses of samples in addition to instruction addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) to build the histograms. To generate meaningful output, the perf.data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396) file must have been obtained using perf record -d -W and using a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) special event -e cpu/mem-loads/p or -e cpu/mem-stores/p. See
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) 'perf mem' for simpler access.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) --percent-limit::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) Do not show entries which have an overhead under that percent.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402) (Default: 0). Note that this option also sets the percent limit (threshold)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) of callchains. However the default value of callchain threshold is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) different than the default value of hist entries. Please see the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) --call-graph option for details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) --percentage::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) Determine how to display the overhead percentage of filtered entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) Filters can be applied by --comms, --dsos and/or --symbols options and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) Zoom operations on the TUI (thread, dso, etc).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) "relative" means it's relative to filtered entries only so that the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) sum of shown entries will be always 100%. "absolute" means it retains
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) the original value before and after the filter is applied.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) --header::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) Show header information in the perf.data file. This includes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418) various information like hostname, OS and perf version, cpu/mem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) info, perf command line, event list and so on. Currently only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) --stdio output supports this feature.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) --header-only::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423) Show only perf.data header (forces --stdio).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) --time::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426) Only analyze samples within given time window: <start>,<stop>. Times
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) have the format seconds.nanoseconds. If start is not given (i.e. time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) string is ',x.y') then analysis starts at the beginning of the file. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) stop time is not given (i.e. time string is 'x.y,') then analysis goes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430) to end of file. Multiple ranges can be separated by spaces, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) requires the argument to be quoted e.g. --time "1234.567,1234.789 1235,"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433) Also support time percent with multiple time ranges. Time string is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) 'a%/n,b%/m,...' or 'a%-b%,c%-%d,...'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437) Select the second 10% time slice:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) perf report --time 10%/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) Select from 0% to 10% time slice:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443) perf report --time 0%-10%
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) Select the first and second 10% time slices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) perf report --time 10%/1,10%/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) Select from 0% to 10% and 30% to 40% slices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) perf report --time 0%-10%,30%-40%
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) --switch-on EVENT_NAME::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) Only consider events after this event is found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) This may be interesting to measure a workload only after some initialization
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457) phase is over, i.e. insert a perf probe at that point and then using this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) option with that probe.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) --switch-off EVENT_NAME::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) Stop considering events after this event is found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 462)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 463) --show-on-off-events::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 464) Show the --switch-on/off events too. This has no effect in 'perf report' now
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 465) but probably we'll make the default not to show the switch-on/off events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 466) on the --group mode and if there is only one event besides the off/on ones,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 467) go straight to the histogram browser, just like 'perf report' with no events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 468) explicitely specified does.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 469)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 470) --itrace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 471) Options for decoding instruction tracing data. The options are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 472)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 473) include::itrace.txt[]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 474)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 475) To disable decoding entirely, use --no-itrace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 476)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 477) --full-source-path::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 478) Show the full path for source files for srcline output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 479)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 480) --show-ref-call-graph::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 481) When multiple events are sampled, it may not be needed to collect
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 482) callgraphs for all of them. The sample sites are usually nearby,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 483) and it's enough to collect the callgraphs on a reference event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 484) So user can use "call-graph=no" event modifier to disable callgraph
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 485) for other events to reduce the overhead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 486) However, perf report cannot show callgraphs for the event which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 487) disable the callgraph.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 488) This option extends the perf report to show reference callgraphs,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 489) which collected by reference event, in no callgraph event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 490)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 491) --stitch-lbr::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 492) Show callgraph with stitched LBRs, which may have more complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 493) callgraph. The perf.data file must have been obtained using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 494) perf record --call-graph lbr.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 495) Disabled by default. In common cases with call stack overflows,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 496) it can recreate better call stacks than the default lbr call stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 497) output. But this approach is not full proof. There can be cases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 498) where it creates incorrect call stacks from incorrect matches.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 499) The known limitations include exception handing such as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 500) setjmp/longjmp will have calls/returns not match.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 501)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 502) --socket-filter::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 503) Only report the samples on the processor socket that match with this filter
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 504)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 505) --samples=N::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 506) Save N individual samples for each histogram entry to show context in perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 507) report tui browser.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 508)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 509) --raw-trace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 510) When displaying traceevent output, do not use print fmt or plugins.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 511)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 512) --hierarchy::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 513) Enable hierarchical output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 514)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 515) --inline::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 516) If a callgraph address belongs to an inlined function, the inline stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 517) will be printed. Each entry is function name or file/line. Enabled by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 518) default, disable with --no-inline.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 519)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 520) --mmaps::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 521) Show --tasks output plus mmap information in a format similar to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 522) /proc/<PID>/maps.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 523)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 524) Please note that not all mmaps are stored, options affecting which ones
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 525) are include 'perf record --data', for instance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 526)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 527) --ns::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 528) Show time stamps in nanoseconds.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 529)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 530) --stats::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 531) Display overall events statistics without any further processing.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 532) (like the one at the end of the perf report -D command)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 533)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 534) --tasks::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 535) Display monitored tasks stored in perf data. Displaying pid/tid/ppid
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 536) plus the command string aligned to distinguish parent and child tasks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 537)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 538) --percent-type::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 539) Set annotation percent type from following choices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 540) global-period, local-period, global-hits, local-hits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 541)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 542) The local/global keywords set if the percentage is computed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 543) in the scope of the function (local) or the whole data (global).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 544) The period/hits keywords set the base the percentage is computed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 545) on - the samples period or the number of samples (hits).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 546)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 547) --time-quantum::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 548) Configure time quantum for time sort key. Default 100ms.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 549) Accepts s, us, ms, ns units.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 550)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 551) --total-cycles::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 552) When --total-cycles is specified, it supports sorting for all blocks by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 553) 'Sampled Cycles%'. This is useful to concentrate on the globally hottest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 554) blocks. In output, there are some new columns:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 555)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 556) 'Sampled Cycles%' - block sampled cycles aggregation / total sampled cycles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 557) 'Sampled Cycles' - block sampled cycles aggregation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 558) 'Avg Cycles%' - block average sampled cycles / sum of total block average
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 559) sampled cycles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 560) 'Avg Cycles' - block average sampled cycles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 561)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 562) include::callchain-overhead-calculation.txt[]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 563)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 564) SEE ALSO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 565) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 566) linkperf:perf-stat[1], linkperf:perf-annotate[1], linkperf:perf-record[1],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 567) linkperf:perf-intel-pt[1]