530 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			530 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
perf-script(1)
 | 
						||
=============
 | 
						||
 | 
						||
NAME
 | 
						||
----
 | 
						||
perf-script - Read perf.data (created by perf record) and display trace output
 | 
						||
 | 
						||
SYNOPSIS
 | 
						||
--------
 | 
						||
[verse]
 | 
						||
'perf script' [<options>]
 | 
						||
'perf script' [<options>] record <script> [<record-options>] <command>
 | 
						||
'perf script' [<options>] report <script> [script-args]
 | 
						||
'perf script' [<options>] <script> <required-script-args> [<record-options>] <command>
 | 
						||
'perf script' [<options>] <top-script> [script-args]
 | 
						||
 | 
						||
DESCRIPTION
 | 
						||
-----------
 | 
						||
This command reads the input file and displays the trace recorded.
 | 
						||
 | 
						||
There are several variants of perf script:
 | 
						||
 | 
						||
  'perf script' to see a detailed trace of the workload that was
 | 
						||
  recorded.
 | 
						||
 | 
						||
  You can also run a set of pre-canned scripts that aggregate and
 | 
						||
  summarize the raw trace data in various ways (the list of scripts is
 | 
						||
  available via 'perf script -l').  The following variants allow you to
 | 
						||
  record and run those scripts:
 | 
						||
 | 
						||
  'perf script record <script> <command>' to record the events required
 | 
						||
  for 'perf script report'.  <script> is the name displayed in the
 | 
						||
  output of 'perf script --list' i.e. the actual script name minus any
 | 
						||
  language extension.  If <command> is not specified, the events are
 | 
						||
  recorded using the -a (system-wide) 'perf record' option.
 | 
						||
 | 
						||
  'perf script report <script> [args]' to run and display the results
 | 
						||
  of <script>.  <script> is the name displayed in the output of 'perf
 | 
						||
  script --list' i.e. the actual script name minus any language
 | 
						||
  extension.  The perf.data output from a previous run of 'perf script
 | 
						||
  record <script>' is used and should be present for this command to
 | 
						||
  succeed.  [args] refers to the (mainly optional) args expected by
 | 
						||
  the script.
 | 
						||
 | 
						||
  'perf script <script> <required-script-args> <command>' to both
 | 
						||
  record the events required for <script> and to run the <script>
 | 
						||
  using 'live-mode' i.e. without writing anything to disk.  <script>
 | 
						||
  is the name displayed in the output of 'perf script --list' i.e. the
 | 
						||
  actual script name minus any language extension.  If <command> is
 | 
						||
  not specified, the events are recorded using the -a (system-wide)
 | 
						||
  'perf record' option.  If <script> has any required args, they
 | 
						||
  should be specified before <command>.  This mode doesn't allow for
 | 
						||
  optional script args to be specified; if optional script args are
 | 
						||
  desired, they can be specified using separate 'perf script record'
 | 
						||
  and 'perf script report' commands, with the stdout of the record step
 | 
						||
  piped to the stdin of the report script, using the '-o -' and '-i -'
 | 
						||
  options of the corresponding commands.
 | 
						||
 | 
						||
  'perf script <top-script>' to both record the events required for
 | 
						||
  <top-script> and to run the <top-script> using 'live-mode'
 | 
						||
  i.e. without writing anything to disk.  <top-script> is the name
 | 
						||
  displayed in the output of 'perf script --list' i.e. the actual
 | 
						||
  script name minus any language extension; a <top-script> is defined
 | 
						||
  as any script name ending with the string 'top'.
 | 
						||
 | 
						||
  [<record-options>] can be passed to the record steps of 'perf script
 | 
						||
  record' and 'live-mode' variants; this isn't possible however for
 | 
						||
  <top-script> 'live-mode' or 'perf script report' variants.
 | 
						||
 | 
						||
  See the 'SEE ALSO' section for links to language-specific
 | 
						||
  information on how to write and run your own trace scripts.
 | 
						||
 | 
						||
OPTIONS
 | 
						||
-------
 | 
						||
<command>...::
 | 
						||
	Any command you can specify in a shell.
 | 
						||
 | 
						||
-D::
 | 
						||
--dump-raw-trace=::
 | 
						||
        Display verbose dump of the trace data.
 | 
						||
 | 
						||
--dump-unsorted-raw-trace=::
 | 
						||
        Same as --dump-raw-trace but not sorted in time order.
 | 
						||
 | 
						||
-L::
 | 
						||
--Latency=::
 | 
						||
        Show latency attributes (irqs/preemption disabled, etc).
 | 
						||
 | 
						||
-l::
 | 
						||
--list=::
 | 
						||
        Display a list of available trace scripts.
 | 
						||
 | 
						||
-s ['lang']::
 | 
						||
--script=::
 | 
						||
        Process trace data with the given script ([lang]:script[.ext]).
 | 
						||
	If the string 'lang' is specified in place of a script name, a
 | 
						||
        list of supported languages will be displayed instead.
 | 
						||
 | 
						||
-g::
 | 
						||
--gen-script=::
 | 
						||
        Generate perf-script.[ext] starter script for given language,
 | 
						||
        using current perf.data.
 | 
						||
 | 
						||
--dlfilter=<file>::
 | 
						||
	Filter sample events using the given shared object file.
 | 
						||
	Refer linkperf:perf-dlfilter[1]
 | 
						||
 | 
						||
--dlarg=<arg>::
 | 
						||
	Pass 'arg' as an argument to the dlfilter. --dlarg may be repeated
 | 
						||
	to add more arguments.
 | 
						||
 | 
						||
--list-dlfilters::
 | 
						||
        Display a list of available dlfilters. Use with option -v (must come
 | 
						||
        before option --list-dlfilters) to show long descriptions.
 | 
						||
 | 
						||
-a::
 | 
						||
        Force system-wide collection.  Scripts run without a <command>
 | 
						||
        normally use -a by default, while scripts run with a <command>
 | 
						||
        normally don't - this option allows the latter to be run in
 | 
						||
        system-wide mode.
 | 
						||
 | 
						||
-i::
 | 
						||
--input=::
 | 
						||
        Input file name. (default: perf.data unless stdin is a fifo)
 | 
						||
 | 
						||
-d::
 | 
						||
--debug-mode::
 | 
						||
        Do various checks like samples ordering and lost events.
 | 
						||
 | 
						||
-F::
 | 
						||
--fields::
 | 
						||
        Comma separated list of fields to print. Options are:
 | 
						||
        comm, tid, pid, time, cpu, event, trace, ip, sym, dso, dsoff, addr, symoff,
 | 
						||
        srcline, period, iregs, uregs, brstack, brstacksym, flags, bpf-output,
 | 
						||
        brstackinsn, brstackinsnlen, brstackdisasm, brstackoff, callindent, insn, disasm,
 | 
						||
        insnlen, synth, phys_addr, metric, misc, srccode, ipc, data_page_size,
 | 
						||
        code_page_size, ins_lat, machine_pid, vcpu, cgroup, retire_lat, brcntr,
 | 
						||
 | 
						||
        Field list can be prepended with the type, trace, sw or hw,
 | 
						||
        to indicate to which event type the field list applies.
 | 
						||
        e.g., -F sw:comm,tid,time,ip,sym  and -F trace:time,cpu,trace
 | 
						||
 | 
						||
		perf script -F <fields>
 | 
						||
 | 
						||
	is equivalent to:
 | 
						||
 | 
						||
		perf script -F trace:<fields> -F sw:<fields> -F hw:<fields>
 | 
						||
 | 
						||
	i.e., the specified fields apply to all event types if the type string
 | 
						||
	is not given.
 | 
						||
 | 
						||
	In addition to overriding fields, it is also possible to add or remove
 | 
						||
	fields from the defaults. For example
 | 
						||
 | 
						||
		-F -cpu,+insn
 | 
						||
 | 
						||
	removes the cpu field and adds the insn field. Adding/removing fields
 | 
						||
	cannot be mixed with normal overriding.
 | 
						||
 | 
						||
	The arguments are processed in the order received. A later usage can
 | 
						||
	reset a prior request. e.g.:
 | 
						||
 | 
						||
		-F trace: -F comm,tid,time,ip,sym
 | 
						||
 | 
						||
	The first -F suppresses trace events (field list is ""), but then the
 | 
						||
	second invocation sets the fields to comm,tid,time,ip,sym. In this case a
 | 
						||
	warning is given to the user:
 | 
						||
 | 
						||
		"Overriding previous field request for all events."
 | 
						||
 | 
						||
	Alternatively, consider the order:
 | 
						||
 | 
						||
		-F comm,tid,time,ip,sym -F trace:
 | 
						||
 | 
						||
	The first -F sets the fields for all events and the second -F
 | 
						||
	suppresses trace events. The user is given a warning message about
 | 
						||
	the override, and the result of the above is that only S/W and H/W
 | 
						||
	events are displayed with the given fields.
 | 
						||
 | 
						||
	It's possible tp add/remove fields only for specific event type:
 | 
						||
 | 
						||
		-Fsw:-cpu,-period
 | 
						||
 | 
						||
	removes cpu and period from software events.
 | 
						||
 | 
						||
	For the 'wildcard' option if a user selected field is invalid for an
 | 
						||
	event type, a message is displayed to the user that the option is
 | 
						||
	ignored for that type. For example:
 | 
						||
 | 
						||
		$ perf script -F comm,tid,trace
 | 
						||
		'trace' not valid for hardware events. Ignoring.
 | 
						||
		'trace' not valid for software events. Ignoring.
 | 
						||
 | 
						||
	Alternatively, if the type is given an invalid field is specified it
 | 
						||
	is an error. For example:
 | 
						||
 | 
						||
        perf script -v -F sw:comm,tid,trace
 | 
						||
        'trace' not valid for software events.
 | 
						||
 | 
						||
	At this point usage is displayed, and perf-script exits.
 | 
						||
 | 
						||
	The flags field is synthesized and may have a value when Instruction
 | 
						||
	Trace decoding. The flags are "bcrosyiABExghDt" which stand for branch,
 | 
						||
	call, return, conditional, system, asynchronous, interrupt,
 | 
						||
	transaction abort, trace begin, trace end, in transaction, VM-Entry,
 | 
						||
	VM-Exit, interrupt disabled and interrupt disable toggle respectively.
 | 
						||
	Known combinations of flags are printed more nicely e.g.
 | 
						||
	"call" for "bc", "return" for "br", "jcc" for "bo", "jmp" for "b",
 | 
						||
	"int" for "bci", "iret" for "bri", "syscall" for "bcs", "sysret" for "brs",
 | 
						||
	"async" for "by", "hw int" for "bcyi", "tx abrt" for "bA", "tr strt" for "bB",
 | 
						||
	"tr end" for "bE", "vmentry" for "bcg", "vmexit" for "bch".
 | 
						||
	However the "x", "D" and "t" flags will be displayed separately in those
 | 
						||
	cases e.g. "jcc     (xD)" for a condition branch within a transaction
 | 
						||
	with interrupts disabled. Note, interrupts becoming disabled is "t",
 | 
						||
	whereas interrupts becoming enabled is "Dt".
 | 
						||
 | 
						||
	The callindent field is synthesized and may have a value when
 | 
						||
	Instruction Trace decoding. For calls and returns, it will display the
 | 
						||
	name of the symbol indented with spaces to reflect the stack depth.
 | 
						||
 | 
						||
	When doing instruction trace decoding, insn, disasm and insnlen give the
 | 
						||
	instruction bytes, disassembled instructions (requires libcapstone support)
 | 
						||
	and the instruction length of the current instruction respectively.
 | 
						||
 | 
						||
	The synth field is used by synthesized events which may be created when
 | 
						||
	Instruction Trace decoding.
 | 
						||
 | 
						||
	The ipc (instructions per cycle) field is synthesized and may have a value when
 | 
						||
	Instruction Trace decoding.
 | 
						||
 | 
						||
	The machine_pid and vcpu fields are derived from data resulting from using
 | 
						||
	perf inject to insert a perf.data file recorded inside a virtual machine into
 | 
						||
	a perf.data file recorded on the host at the same time.
 | 
						||
 | 
						||
	The cgroup fields requires sample having the cgroup id which is saved
 | 
						||
	when "--all-cgroups" option is passed to 'perf record'.
 | 
						||
 | 
						||
	Finally, a user may not set fields to none for all event types.
 | 
						||
	i.e., -F "" is not allowed.
 | 
						||
 | 
						||
	The brstack output includes branch related information with raw addresses using the
 | 
						||
	/v/v/v/v/cycles syntax in the following order:
 | 
						||
	FROM: branch source instruction
 | 
						||
	TO  : branch target instruction
 | 
						||
        M/P/-: M=branch target mispredicted or branch direction was mispredicted, P=target predicted or direction predicted, -=not supported
 | 
						||
	X/- : X=branch inside a transactional region, -=not in transaction region or not supported
 | 
						||
	A/- : A=TSX abort entry, -=not aborted region or not supported
 | 
						||
	cycles
 | 
						||
 | 
						||
	The brstacksym is identical to brstack, except that the FROM and TO addresses are printed in a symbolic form if possible.
 | 
						||
 | 
						||
	When brstackinsn is specified the full assembler sequences of branch sequences for each sample
 | 
						||
	is printed. This is the full execution path leading to the sample. This is only supported when the
 | 
						||
	sample was recorded with perf record -b or -j any.
 | 
						||
 | 
						||
	Use brstackinsnlen to print the brstackinsn lenght. For example, you
 | 
						||
	can’t know the next sequential instruction after an unconditional branch unless
 | 
						||
	you calculate that based on its length.
 | 
						||
 | 
						||
	brstackdisasm acts like brstackinsn, but will print disassembled instructions if
 | 
						||
	perf is built with the capstone library.
 | 
						||
 | 
						||
	The brstackoff field will print an offset into a specific dso/binary.
 | 
						||
 | 
						||
	With the metric option perf script can compute metrics for
 | 
						||
	sampling periods, similar to perf stat. This requires
 | 
						||
	specifying a group with multiple events defining metrics with the :S option
 | 
						||
	for perf record. perf will sample on the first event, and
 | 
						||
	print computed metrics for all the events in the group. Please note
 | 
						||
	that the metric computed is averaged over the whole sampling
 | 
						||
	period (since the last sample), not just for the sample point.
 | 
						||
 | 
						||
	For sample events it's possible to display misc field with -F +misc option,
 | 
						||
	following letters are displayed for each bit:
 | 
						||
 | 
						||
	  PERF_RECORD_MISC_KERNEL               K
 | 
						||
	  PERF_RECORD_MISC_USER                 U
 | 
						||
	  PERF_RECORD_MISC_HYPERVISOR           H
 | 
						||
	  PERF_RECORD_MISC_GUEST_KERNEL         G
 | 
						||
	  PERF_RECORD_MISC_GUEST_USER           g
 | 
						||
	  PERF_RECORD_MISC_MMAP_DATA*           M
 | 
						||
	  PERF_RECORD_MISC_COMM_EXEC            E
 | 
						||
	  PERF_RECORD_MISC_SWITCH_OUT           S
 | 
						||
	  PERF_RECORD_MISC_SWITCH_OUT_PREEMPT   Sp
 | 
						||
 | 
						||
	  $ perf script -F +misc ...
 | 
						||
	   sched-messaging  1414 K     28690.636582:       4590 cycles ...
 | 
						||
	   sched-messaging  1407 U     28690.636600:     325620 cycles ...
 | 
						||
	   sched-messaging  1414 K     28690.636608:      19473 cycles ...
 | 
						||
	  misc field ___________/
 | 
						||
 | 
						||
-k::
 | 
						||
--vmlinux=<file>::
 | 
						||
        vmlinux pathname
 | 
						||
 | 
						||
--kallsyms=<file>::
 | 
						||
        kallsyms pathname
 | 
						||
 | 
						||
--symfs=<directory>::
 | 
						||
        Look for files with symbols relative to this directory.
 | 
						||
 | 
						||
-G::
 | 
						||
--hide-call-graph::
 | 
						||
        When printing symbols do not display call chain.
 | 
						||
 | 
						||
--stop-bt::
 | 
						||
        Stop display of callgraph at these symbols
 | 
						||
 | 
						||
-C::
 | 
						||
--cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can
 | 
						||
	be provided as a comma-separated list with no space: 0,1. Ranges of
 | 
						||
	CPUs are specified with -: 0-2. Default is to report samples on all
 | 
						||
	CPUs.
 | 
						||
 | 
						||
-c::
 | 
						||
--comms=::
 | 
						||
	Only display events for these comms. CSV that understands
 | 
						||
	file://filename entries.
 | 
						||
 | 
						||
--pid=::
 | 
						||
	Only show events for given process ID (comma separated list).
 | 
						||
 | 
						||
--tid=::
 | 
						||
	Only show events for given thread ID (comma separated list).
 | 
						||
 | 
						||
-I::
 | 
						||
--show-info::
 | 
						||
	Display extended information about the perf.data file. This adds
 | 
						||
	information which may be very large and thus may clutter the display.
 | 
						||
	It currently includes: cpu and numa topology of the host system.
 | 
						||
	It can only be used with the perf script report mode.
 | 
						||
 | 
						||
--show-kernel-path::
 | 
						||
	Try to resolve the path of [kernel.kallsyms]
 | 
						||
 | 
						||
--show-task-events
 | 
						||
	Display task related events (e.g. FORK, COMM, EXIT).
 | 
						||
 | 
						||
--show-mmap-events
 | 
						||
	Display mmap related events (e.g. MMAP, MMAP2).
 | 
						||
 | 
						||
--show-namespace-events
 | 
						||
	Display namespace events i.e. events of type PERF_RECORD_NAMESPACES.
 | 
						||
 | 
						||
--show-switch-events
 | 
						||
	Display context switch events i.e. events of type PERF_RECORD_SWITCH or
 | 
						||
	PERF_RECORD_SWITCH_CPU_WIDE.
 | 
						||
 | 
						||
--show-lost-events
 | 
						||
	Display lost events i.e. events of type PERF_RECORD_LOST.
 | 
						||
 | 
						||
--show-round-events
 | 
						||
	Display finished round events i.e. events of type PERF_RECORD_FINISHED_ROUND.
 | 
						||
 | 
						||
--show-bpf-events
 | 
						||
	Display bpf events i.e. events of type PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT.
 | 
						||
 | 
						||
--show-cgroup-events
 | 
						||
	Display cgroup events i.e. events of type PERF_RECORD_CGROUP.
 | 
						||
 | 
						||
--show-text-poke-events
 | 
						||
	Display text poke events i.e. events of type PERF_RECORD_TEXT_POKE and
 | 
						||
	PERF_RECORD_KSYMBOL.
 | 
						||
 | 
						||
--demangle::
 | 
						||
	Demangle symbol names to human readable form. It's enabled by default,
 | 
						||
	disable with --no-demangle.
 | 
						||
 | 
						||
--demangle-kernel::
 | 
						||
	Demangle kernel symbol names to human readable form (for C++ kernels).
 | 
						||
 | 
						||
--addr2line=<path>::
 | 
						||
	Path to addr2line binary.
 | 
						||
 | 
						||
--header
 | 
						||
	Show perf.data header.
 | 
						||
 | 
						||
--header-only
 | 
						||
	Show only perf.data header.
 | 
						||
 | 
						||
--itrace::
 | 
						||
	Options for decoding instruction tracing data. The options are:
 | 
						||
 | 
						||
include::itrace.txt[]
 | 
						||
 | 
						||
	To disable decoding entirely, use --no-itrace.
 | 
						||
 | 
						||
--full-source-path::
 | 
						||
	Show the full path for source files for srcline output.
 | 
						||
 | 
						||
--max-stack::
 | 
						||
        Set the stack depth limit when parsing the callchain, anything
 | 
						||
        beyond the specified depth will be ignored. This is a trade-off
 | 
						||
        between information loss and faster processing especially for
 | 
						||
        workloads that can have a very long callchain stack.
 | 
						||
        Note that when using the --itrace option the synthesized callchain size
 | 
						||
        will override this value if the synthesized callchain size is bigger.
 | 
						||
 | 
						||
        Default: 127
 | 
						||
 | 
						||
--ns::
 | 
						||
	Use 9 decimal places when displaying time (i.e. show the nanoseconds)
 | 
						||
 | 
						||
-f::
 | 
						||
--force::
 | 
						||
	Don't do ownership validation.
 | 
						||
 | 
						||
--time::
 | 
						||
	Only analyze samples within given time window: <start>,<stop>. Times
 | 
						||
	have the format seconds.nanoseconds. If start is not given (i.e. time
 | 
						||
	string is ',x.y') then analysis starts at the beginning of the file. If
 | 
						||
	stop time is not given (i.e. time string is 'x.y,') then analysis goes
 | 
						||
	to end of file. Multiple ranges can be separated by spaces, which
 | 
						||
	requires the argument to be quoted e.g. --time "1234.567,1234.789 1235,"
 | 
						||
 | 
						||
	Also support time percent with multiple time ranges. Time string is
 | 
						||
	'a%/n,b%/m,...' or 'a%-b%,c%-%d,...'.
 | 
						||
 | 
						||
	For example:
 | 
						||
	Select the second 10% time slice:
 | 
						||
	perf script --time 10%/2
 | 
						||
 | 
						||
	Select from 0% to 10% time slice:
 | 
						||
	perf script --time 0%-10%
 | 
						||
 | 
						||
	Select the first and second 10% time slices:
 | 
						||
	perf script --time 10%/1,10%/2
 | 
						||
 | 
						||
	Select from 0% to 10% and 30% to 40% slices:
 | 
						||
	perf script --time 0%-10%,30%-40%
 | 
						||
 | 
						||
--max-blocks::
 | 
						||
	Set the maximum number of program blocks to print with brstackinsn for
 | 
						||
	each sample.
 | 
						||
 | 
						||
--reltime::
 | 
						||
	Print time stamps relative to trace start.
 | 
						||
 | 
						||
--deltatime::
 | 
						||
	Print time stamps relative to previous event.
 | 
						||
 | 
						||
--per-event-dump::
 | 
						||
	Create per event files with a "perf.data.EVENT.dump" name instead of
 | 
						||
        printing to stdout, useful, for instance, for generating flamegraphs.
 | 
						||
 | 
						||
--inline::
 | 
						||
	If a callgraph address belongs to an inlined function, the inline stack
 | 
						||
	will be printed. Each entry has function name and file/line. Enabled by
 | 
						||
	default, disable with --no-inline.
 | 
						||
 | 
						||
--insn-trace[=<raw|disasm>]::
 | 
						||
	Show instruction stream in bytes (raw) or disassembled (disasm)
 | 
						||
	for intel_pt traces. The default is 'raw'. To use xed, combine
 | 
						||
	'raw' with --xed to show disassembly done by xed.
 | 
						||
 | 
						||
--xed::
 | 
						||
	Run xed disassembler on output. Requires installing the xed disassembler.
 | 
						||
 | 
						||
-S::
 | 
						||
--symbols=symbol[,symbol...]::
 | 
						||
	Only consider the listed symbols. Symbols are typically a name
 | 
						||
	but they may also be hexadecimal address.
 | 
						||
 | 
						||
	The hexadecimal address may be the start address of a symbol or
 | 
						||
	any other address to filter the trace records
 | 
						||
 | 
						||
	For example, to select the symbol noploop or the address 0x4007a0:
 | 
						||
	perf script --symbols=noploop,0x4007a0
 | 
						||
 | 
						||
	Support filtering trace records by symbol name, start address of
 | 
						||
	symbol, any hexadecimal address and address range.
 | 
						||
 | 
						||
	The comparison order is:
 | 
						||
 | 
						||
	1. symbol name comparison
 | 
						||
	2. symbol start address comparison.
 | 
						||
	3. any hexadecimal address comparison.
 | 
						||
	4. address range comparison (see --addr-range).
 | 
						||
 | 
						||
--addr-range::
 | 
						||
       Use with -S or --symbols to list traced records within address range.
 | 
						||
 | 
						||
       For example, to list the traced records within the address range
 | 
						||
       [0x4007a0, 0x0x4007a9]:
 | 
						||
       perf script -S 0x4007a0 --addr-range 10
 | 
						||
 | 
						||
--dsos=::
 | 
						||
	Only consider symbols in these DSOs.
 | 
						||
 | 
						||
--call-trace::
 | 
						||
	Show call stream for intel_pt traces. The CPUs are interleaved, but
 | 
						||
	can be filtered with -C.
 | 
						||
 | 
						||
--call-ret-trace::
 | 
						||
	Show call and return stream for intel_pt traces.
 | 
						||
 | 
						||
--graph-function::
 | 
						||
	For itrace only show specified functions and their callees for
 | 
						||
	itrace. Multiple functions can be separated by comma.
 | 
						||
 | 
						||
--switch-on EVENT_NAME::
 | 
						||
	Only consider events after this event is found.
 | 
						||
 | 
						||
--switch-off EVENT_NAME::
 | 
						||
	Stop considering events after this event is found.
 | 
						||
 | 
						||
--show-on-off-events::
 | 
						||
	Show the --switch-on/off events too.
 | 
						||
 | 
						||
--stitch-lbr::
 | 
						||
	Show callgraph with stitched LBRs, which may have more complete
 | 
						||
	callgraph. The perf.data file must have been obtained using
 | 
						||
	perf record --call-graph lbr.
 | 
						||
	Disabled by default. In common cases with call stack overflows,
 | 
						||
	it can recreate better call stacks than the default lbr call stack
 | 
						||
	output. But this approach is not foolproof. There can be cases
 | 
						||
	where it creates incorrect call stacks from incorrect matches.
 | 
						||
	The known limitations include exception handing such as
 | 
						||
	setjmp/longjmp will have calls/returns not match.
 | 
						||
 | 
						||
:GMEXAMPLECMD: script
 | 
						||
:GMEXAMPLESUBCMD:
 | 
						||
include::guest-files.txt[]
 | 
						||
 | 
						||
SEE ALSO
 | 
						||
--------
 | 
						||
linkperf:perf-record[1], linkperf:perf-script-perl[1],
 | 
						||
linkperf:perf-script-python[1], linkperf:perf-intel-pt[1],
 | 
						||
linkperf:perf-dlfilter[1]
 |