^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) perf-script(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-script - Read perf.data (created by perf record) and display trace output
^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 script' [<options>]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 'perf script' [<options>] record <script> [<record-options>] <command>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 'perf script' [<options>] report <script> [script-args]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) 'perf script' [<options>] <script> <required-script-args> [<record-options>] <command>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 'perf script' [<options>] <top-script> [script-args]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) DESCRIPTION
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) This command reads the input file and displays the trace recorded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) There are several variants of perf script:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 'perf script' to see a detailed trace of the workload that was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) recorded.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) You can also run a set of pre-canned scripts that aggregate and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) summarize the raw trace data in various ways (the list of scripts is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) available via 'perf script -l'). The following variants allow you to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) record and run those scripts:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 'perf script record <script> <command>' to record the events required
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) for 'perf script report'. <script> is the name displayed in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) output of 'perf script --list' i.e. the actual script name minus any
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) language extension. If <command> is not specified, the events are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) recorded using the -a (system-wide) 'perf record' option.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) 'perf script report <script> [args]' to run and display the results
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) of <script>. <script> is the name displayed in the output of 'perf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) script --list' i.e. the actual script name minus any language
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) extension. The perf.data output from a previous run of 'perf script
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) record <script>' is used and should be present for this command to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) succeed. [args] refers to the (mainly optional) args expected by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) the script.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 'perf script <script> <required-script-args> <command>' to both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) record the events required for <script> and to run the <script>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) using 'live-mode' i.e. without writing anything to disk. <script>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) is the name displayed in the output of 'perf script --list' i.e. the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) actual script name minus any language extension. If <command> is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) not specified, the events are recorded using the -a (system-wide)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 'perf record' option. If <script> has any required args, they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) should be specified before <command>. This mode doesn't allow for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) optional script args to be specified; if optional script args are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) desired, they can be specified using separate 'perf script record'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) and 'perf script report' commands, with the stdout of the record step
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) piped to the stdin of the report script, using the '-o -' and '-i -'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) options of the corresponding commands.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 'perf script <top-script>' to both record the events required for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) <top-script> and to run the <top-script> using 'live-mode'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) i.e. without writing anything to disk. <top-script> is the name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) displayed in the output of 'perf script --list' i.e. the actual
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) script name minus any language extension; a <top-script> is defined
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) as any script name ending with the string 'top'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) [<record-options>] can be passed to the record steps of 'perf script
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) record' and 'live-mode' variants; this isn't possible however for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) <top-script> 'live-mode' or 'perf script report' variants.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) See the 'SEE ALSO' section for links to language-specific
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) information on how to write and run your own trace scripts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) OPTIONS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) -------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) <command>...::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) Any command you can specify in a shell.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) -D::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) --dump-raw-trace=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) Display verbose dump of the trace data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) -L::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) --Latency=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) Show latency attributes (irqs/preemption disabled, etc).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) -l::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) --list=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) Display a list of available trace scripts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) -s ['lang']::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) --script=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) Process trace data with the given script ([lang]:script[.ext]).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) If the string 'lang' is specified in place of a script name, a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) list of supported languages will be displayed instead.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) -g::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) --gen-script=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) Generate perf-script.[ext] starter script for given language,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) using current perf.data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) -a::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) Force system-wide collection. Scripts run without a <command>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) normally use -a by default, while scripts run with a <command>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) normally don't - this option allows the latter to be run in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) system-wide mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) -i::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) --input=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) Input file name. (default: perf.data unless stdin is a fifo)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) -d::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) --debug-mode::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) Do various checks like samples ordering and lost events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) -F::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) --fields::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) Comma separated list of fields to print. Options are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) comm, tid, pid, time, cpu, event, trace, ip, sym, dso, addr, symoff,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) srcline, period, iregs, uregs, brstack, brstacksym, flags, bpf-output, brstackinsn,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) brstackoff, callindent, insn, insnlen, synth, phys_addr, metric, misc, srccode, ipc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) Field list can be prepended with the type, trace, sw or hw,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) to indicate to which event type the field list applies.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) e.g., -F sw:comm,tid,time,ip,sym and -F trace:time,cpu,trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) perf script -F <fields>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) is equivalent to:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) perf script -F trace:<fields> -F sw:<fields> -F hw:<fields>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) i.e., the specified fields apply to all event types if the type string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) is not given.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) In addition to overriding fields, it is also possible to add or remove
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) fields from the defaults. For example
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) -F -cpu,+insn
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) removes the cpu field and adds the insn field. Adding/removing fields
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) cannot be mixed with normal overriding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) The arguments are processed in the order received. A later usage can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) reset a prior request. e.g.:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) -F trace: -F comm,tid,time,ip,sym
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) The first -F suppresses trace events (field list is ""), but then the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) second invocation sets the fields to comm,tid,time,ip,sym. In this case a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) warning is given to the user:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) "Overriding previous field request for all events."
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) Alternatively, consider the order:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) -F comm,tid,time,ip,sym -F trace:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) The first -F sets the fields for all events and the second -F
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) suppresses trace events. The user is given a warning message about
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) the override, and the result of the above is that only S/W and H/W
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) events are displayed with the given fields.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) It's possible tp add/remove fields only for specific event type:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) -Fsw:-cpu,-period
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) removes cpu and period from software events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) For the 'wildcard' option if a user selected field is invalid for an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) event type, a message is displayed to the user that the option is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) ignored for that type. For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) $ perf script -F comm,tid,trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 'trace' not valid for hardware events. Ignoring.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 'trace' not valid for software events. Ignoring.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) Alternatively, if the type is given an invalid field is specified it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) is an error. For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) perf script -v -F sw:comm,tid,trace
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) 'trace' not valid for software events.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) At this point usage is displayed, and perf-script exits.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) The flags field is synthesized and may have a value when Instruction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) Trace decoding. The flags are "bcrosyiABEx" which stand for branch,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) call, return, conditional, system, asynchronous, interrupt,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) transaction abort, trace begin, trace end, and in transaction,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) respectively. Known combinations of flags are printed more nicely e.g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) "call" for "bc", "return" for "br", "jcc" for "bo", "jmp" for "b",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) "int" for "bci", "iret" for "bri", "syscall" for "bcs", "sysret" for "brs",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) "async" for "by", "hw int" for "bcyi", "tx abrt" for "bA", "tr strt" for "bB",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) "tr end" for "bE". However the "x" flag will be display separately in those
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) cases e.g. "jcc (x)" for a condition branch within a transaction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) The callindent field is synthesized and may have a value when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) Instruction Trace decoding. For calls and returns, it will display the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) name of the symbol indented with spaces to reflect the stack depth.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) When doing instruction trace decoding insn and insnlen give the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) instruction bytes and the instruction length of the current
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) instruction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) The synth field is used by synthesized events which may be created when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) Instruction Trace decoding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) The ipc (instructions per cycle) field is synthesized and may have a value when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) Instruction Trace decoding.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) Finally, a user may not set fields to none for all event types.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) i.e., -F "" is not allowed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) The brstack output includes branch related information with raw addresses using the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) /v/v/v/v/cycles syntax in the following order:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) FROM: branch source instruction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) TO : branch target instruction
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) M/P/-: M=branch target mispredicted or branch direction was mispredicted, P=target predicted or direction predicted, -=not supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) X/- : X=branch inside a transactional region, -=not in transaction region or not supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) A/- : A=TSX abort entry, -=not aborted region or not supported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) cycles
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) The brstacksym is identical to brstack, except that the FROM and TO addresses are printed in a symbolic form if possible.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) When brstackinsn is specified the full assembler sequences of branch sequences for each sample
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) is printed. This is the full execution path leading to the sample. This is only supported when the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) sample was recorded with perf record -b or -j any.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) The brstackoff field will print an offset into a specific dso/binary.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) With the metric option perf script can compute metrics for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) sampling periods, similar to perf stat. This requires
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) specifying a group with multiple events defining metrics with the :S option
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) for perf record. perf will sample on the first event, and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) print computed metrics for all the events in the group. Please note
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) that the metric computed is averaged over the whole sampling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) period (since the last sample), not just for the sample point.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) For sample events it's possible to display misc field with -F +misc option,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) following letters are displayed for each bit:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) PERF_RECORD_MISC_KERNEL K
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) PERF_RECORD_MISC_USER U
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) PERF_RECORD_MISC_HYPERVISOR H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) PERF_RECORD_MISC_GUEST_KERNEL G
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) PERF_RECORD_MISC_GUEST_USER g
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) PERF_RECORD_MISC_MMAP_DATA* M
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) PERF_RECORD_MISC_COMM_EXEC E
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) PERF_RECORD_MISC_SWITCH_OUT S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) PERF_RECORD_MISC_SWITCH_OUT_PREEMPT Sp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) $ perf script -F +misc ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) sched-messaging 1414 K 28690.636582: 4590 cycles ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) sched-messaging 1407 U 28690.636600: 325620 cycles ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) sched-messaging 1414 K 28690.636608: 19473 cycles ...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) misc field ___________/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) -k::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) --vmlinux=<file>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) vmlinux pathname
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) --kallsyms=<file>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) kallsyms pathname
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263) --symfs=<directory>::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) Look for files with symbols relative to this directory.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) -G::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) --hide-call-graph::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) When printing symbols do not display call chain.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) --stop-bt::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) Stop display of callgraph at these symbols
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) -C::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) --cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) be provided as a comma-separated list with no space: 0,1. Ranges of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) CPUs are specified with -: 0-2. Default is to report samples on all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) CPUs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) -c::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) --comms=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) Only display events for these comms. CSV that understands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) file://filename entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) --pid=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) Only show events for given process ID (comma separated list).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) --tid=::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) Only show events for given thread ID (comma separated list).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) -I::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) --show-info::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) Display extended information about the perf.data file. This adds
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) information which may be very large and thus may clutter the display.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) It currently includes: cpu and numa topology of the host system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) It can only be used with the perf script report mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) --show-kernel-path::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) Try to resolve the path of [kernel.kallsyms]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) --show-task-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) Display task related events (e.g. FORK, COMM, EXIT).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) --show-mmap-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) Display mmap related events (e.g. MMAP, MMAP2).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) --show-namespace-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) Display namespace events i.e. events of type PERF_RECORD_NAMESPACES.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) --show-switch-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) Display context switch events i.e. events of type PERF_RECORD_SWITCH or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) PERF_RECORD_SWITCH_CPU_WIDE.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) --show-lost-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) Display lost events i.e. events of type PERF_RECORD_LOST.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) --show-round-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) Display finished round events i.e. events of type PERF_RECORD_FINISHED_ROUND.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) --show-bpf-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) Display bpf events i.e. events of type PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) --show-cgroup-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) Display cgroup events i.e. events of type PERF_RECORD_CGROUP.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) --show-text-poke-events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326) Display text poke events i.e. events of type PERF_RECORD_TEXT_POKE and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327) PERF_RECORD_KSYMBOL.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329) --demangle::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) Demangle symbol names to human readable form. It's enabled by default,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) disable with --no-demangle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) --demangle-kernel::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334) Demangle kernel symbol names to human readable form (for C++ kernels).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) --header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) Show perf.data header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) --header-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340) Show only perf.data header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) --itrace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343) Options for decoding instruction tracing data. The options are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345) include::itrace.txt[]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347) To disable decoding entirely, use --no-itrace.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) --full-source-path::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) Show the full path for source files for srcline output.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) --max-stack::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) Set the stack depth limit when parsing the callchain, anything
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 354) beyond the specified depth will be ignored. This is a trade-off
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 355) between information loss and faster processing especially for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 356) workloads that can have a very long callchain stack.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 357) Note that when using the --itrace option the synthesized callchain size
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 358) will override this value if the synthesized callchain size is bigger.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 359)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 360) Default: 127
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 361)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 362) --ns::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 363) Use 9 decimal places when displaying time (i.e. show the nanoseconds)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 364)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 365) -f::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 366) --force::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 367) Don't do ownership validation.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 368)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 369) --time::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 370) Only analyze samples within given time window: <start>,<stop>. Times
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 371) have the format seconds.nanoseconds. If start is not given (i.e. time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 372) string is ',x.y') then analysis starts at the beginning of the file. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 373) stop time is not given (i.e. time string is 'x.y,') then analysis goes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 374) to end of file. Multiple ranges can be separated by spaces, which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 375) requires the argument to be quoted e.g. --time "1234.567,1234.789 1235,"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 376)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 377) Also support time percent with multiple time ranges. Time string is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 378) 'a%/n,b%/m,...' or 'a%-b%,c%-%d,...'.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 379)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 380) For example:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 381) Select the second 10% time slice:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 382) perf script --time 10%/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 383)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 384) Select from 0% to 10% time slice:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 385) perf script --time 0%-10%
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 386)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 387) Select the first and second 10% time slices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 388) perf script --time 10%/1,10%/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 389)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 390) Select from 0% to 10% and 30% to 40% slices:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 391) perf script --time 0%-10%,30%-40%
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 392)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 393) --max-blocks::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 394) Set the maximum number of program blocks to print with brstackinsn for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 395) each sample.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 396)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 397) --reltime::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 398) Print time stamps relative to trace start.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 399)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 400) --deltatime::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 401) Print time stamps relative to previous event.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 402)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 403) --per-event-dump::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 404) Create per event files with a "perf.data.EVENT.dump" name instead of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 405) printing to stdout, useful, for instance, for generating flamegraphs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 406)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 407) --inline::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 408) If a callgraph address belongs to an inlined function, the inline stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 409) will be printed. Each entry has function name and file/line. Enabled by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 410) default, disable with --no-inline.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 411)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 412) --insn-trace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 413) Show instruction stream for intel_pt traces. Combine with --xed to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 414) show disassembly.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 415)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 416) --xed::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 417) Run xed disassembler on output. Requires installing the xed disassembler.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 418)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 419) -S::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 420) --symbols=symbol[,symbol...]::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 421) Only consider the listed symbols. Symbols are typically a name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 422) but they may also be hexadecimal address.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 423)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 424) For example, to select the symbol noploop or the address 0x4007a0:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 425) perf script --symbols=noploop,0x4007a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 426)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 427) --call-trace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 428) Show call stream for intel_pt traces. The CPUs are interleaved, but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 429) can be filtered with -C.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 430)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 431) --call-ret-trace::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 432) Show call and return stream for intel_pt traces.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 433)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 434) --graph-function::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 435) For itrace only show specified functions and their callees for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 436) itrace. Multiple functions can be separated by comma.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 437)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 438) --switch-on EVENT_NAME::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 439) Only consider events after this event is found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 440)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 441) --switch-off EVENT_NAME::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 442) Stop considering events after this event is found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 443)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 444) --show-on-off-events::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 445) Show the --switch-on/off events too.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 446)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 447) --stitch-lbr::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 448) Show callgraph with stitched LBRs, which may have more complete
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 449) callgraph. The perf.data file must have been obtained using
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 450) perf record --call-graph lbr.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 451) Disabled by default. In common cases with call stack overflows,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 452) it can recreate better call stacks than the default lbr call stack
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 453) output. But this approach is not full proof. There can be cases
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 454) where it creates incorrect call stacks from incorrect matches.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 455) The known limitations include exception handing such as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 456) setjmp/longjmp will have calls/returns not match.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 457)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 458) SEE ALSO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 459) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 460) linkperf:perf-record[1], linkperf:perf-script-perl[1],
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 461) linkperf:perf-script-python[1], linkperf:perf-intel-pt[1]