'\" t .\" Title: perf-annotate .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2023-04-04 .\" Manual: perf Manual .\" Source: perf .\" Language: English .\" .TH "PERF\-ANNOTATE" "1" "2023\-04\-04" "perf" "perf Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" perf-annotate \- Read perf\&.data (created by perf record) and display annotated code .SH "SYNOPSIS" .sp .nf \fIperf annotate\fR [\-i | \-\-input=file] [symbol_name] .fi .SH "DESCRIPTION" .sp This command reads the input file and displays an annotated version of the code\&. If the object file has debug symbols then the source code will be displayed alongside assembly code\&. .sp If there is no debug info in the object, then annotated assembly is displayed\&. .SH "OPTIONS" .PP \-i, \-\-input= .RS 4 Input file name\&. (default: perf\&.data unless stdin is a fifo) .RE .PP \-d, \-\-dsos= .RS 4 Only consider symbols in these dsos\&. .RE .PP \-s, \-\-symbol= .RS 4 Symbol to annotate\&. .RE .PP \-f, \-\-force .RS 4 Don\(cqt do ownership validation\&. .RE .PP \-v, \-\-verbose .RS 4 Be more verbose\&. (Show symbol address, etc) .RE .PP \-q, \-\-quiet .RS 4 Do not show any warnings or messages\&. (Suppress \-v) .RE .PP \-n, \-\-show\-nr\-samples .RS 4 Show the number of samples for each symbol .RE .PP \-D, \-\-dump\-raw\-trace .RS 4 Dump raw trace in ASCII\&. .RE .PP \-k, \-\-vmlinux= .RS 4 vmlinux pathname\&. .RE .PP \-\-ignore\-vmlinux .RS 4 Ignore vmlinux files\&. .RE .PP \-\-itrace .RS 4 Options for decoding instruction tracing data\&. The options are: .sp .if n \{\ .RS 4 .\} .nf i synthesize instructions events y synthesize cycles events b synthesize branches events (branch misses for Arm SPE) c synthesize branches events (calls only) r synthesize branches events (returns only) x synthesize transactions events w synthesize ptwrite events p synthesize power events (incl\&. PSB events for Intel PT) o synthesize other events recorded due to the use of aux\-output (refer to perf record) I synthesize interrupt or similar (asynchronous) events (e\&.g\&. Intel PT Event Trace) e synthesize error events d create a debug log f synthesize first level cache events m synthesize last level cache events M synthesize memory events t synthesize TLB events a synthesize remote access events g synthesize a call chain (use with i or x) G synthesize a call chain on existing event records l synthesize last branch entries (use with i or x) L synthesize last branch entries on existing event records s skip initial number of events q quicker (less detailed) decoding A approximate IPC Z prefer to ignore timestamps (so\-called "timeless" decoding) .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf The default is all events i\&.e\&. the same as \-\-itrace=iybxwpe, except for perf script where it is \-\-itrace=ce .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf In addition, the period (default 100000, except for perf script where it is 1) for instructions events can be specified in units of: .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf i instructions t ticks ms milliseconds us microseconds ns nanoseconds (default) .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf Also the call chain size (default 16, max\&. 1024) for instructions or transactions events can be specified\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf Also the number of last branch entries (default 64, max\&. 1024) for instructions or transactions events can be specified\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf Similar to options g and l, size may also be specified for options G and L\&. On x86, note that G and L work poorly when data has been recorded with large PEBS\&. Refer linkperf:perf\-intel\-pt[1] man page for details\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf It is also possible to skip events generated (instructions, branches, transactions, ptwrite, power) at the beginning\&. This is useful to ignore initialization code\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf \-\-itrace=i0nss1000000 .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf skips the first million instructions\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf The \*(Aqe\*(Aq option may be followed by flags which affect what errors will or will not be reported\&. Each flag must be preceded by either \*(Aq+\*(Aq or \*(Aq\-\*(Aq\&. The flags are: o overflow l trace data lost .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf If supported, the \*(Aqd\*(Aq option may be followed by flags which affect what debug messages will or will not be logged\&. Each flag must be preceded by either \*(Aq+\*(Aq or \*(Aq\-\*(Aq\&. The flags are: a all perf events e output only on errors (size configurable \- see linkperf:perf\-config[1]) o output to stdout .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf If supported, the \*(Aqq\*(Aq option may be repeated to increase the effect\&. .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf To disable decoding entirely, use \-\-no\-itrace\&. .fi .if n \{\ .RE .\} .RE .PP \-m, \-\-modules .RS 4 Load module symbols\&. WARNING: use only with \-k and LIVE kernel\&. .RE .PP \-l, \-\-print\-line .RS 4 Print matching source lines (may be slow)\&. .RE .PP \-P, \-\-full\-paths .RS 4 Don\(cqt shorten the displayed pathnames\&. .RE .PP \-\-stdio .RS 4 Use the stdio interface\&. .RE .PP \-\-stdio2 .RS 4 Use the stdio2 interface, non\-interactive, uses the TUI formatting\&. .RE .PP \-\-stdio\-color= .RS 4 \fIalways\fR, \fInever\fR or \fIauto\fR, allowing configuring color output via the command line, in addition to via "color\&.ui" \&.perfconfig\&. Use \fI\-\-stdio\-color always\fR to generate color even when redirecting to a pipe or file\&. Using just \fI\-\-stdio\-color\fR is equivalent to using \fIalways\fR\&. .RE .PP \-\-tui .RS 4 Use the TUI interface\&. Use of \-\-tui requires a tty, if one is not present, as when piping to other commands, the stdio interface is used\&. This interfaces starts by centering on the line with more samples, TAB/UNTAB cycles through the lines with more samples\&. .RE .PP \-\-gtk .RS 4 Use the GTK interface\&. .RE .PP \-C, \-\-cpu= .RS 4 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\&. .RE .PP \-\-asm\-raw .RS 4 Show raw instruction encoding of assembly instructions\&. .RE .PP \-\-show\-total\-period .RS 4 Show a column with the sum of periods\&. .RE .PP \-\-source .RS 4 Interleave source code with assembly code\&. Enabled by default, disable with \-\-no\-source\&. .RE .PP \-\-symfs= .RS 4 Look for files with symbols relative to this directory\&. .RE .PP \-M, \-\-disassembler\-style= .RS 4 Set disassembler style for objdump\&. .RE .PP \-\-addr2line= .RS 4 Path to addr2line binary\&. .RE .PP \-\-objdump= .RS 4 Path to objdump binary\&. .RE .PP \-\-prefix=PREFIX, \-\-prefix\-strip=N .RS 4 Remove first N entries from source file path names in executables and add PREFIX\&. This allows to display source code compiled on systems with different file system layout\&. .RE .PP \-\-skip\-missing .RS 4 Skip symbols that cannot be annotated\&. .RE .PP \-\-group .RS 4 Show event group information together .RE .PP \-\-demangle .RS 4 Demangle symbol names to human readable form\&. It\(cqs enabled by default, disable with \-\-no\-demangle\&. .RE .PP \-\-demangle\-kernel .RS 4 Demangle kernel symbol names to human readable form (for C++ kernels)\&. .RE .PP \-\-percent\-type .RS 4 Set annotation percent type from following choices: global\-period, local\-period, global\-hits, local\-hits .sp .if n \{\ .RS 4 .\} .nf The local/global keywords set if the percentage is computed in the scope of the function (local) or the whole data (global)\&. The period/hits keywords set the base the percentage is computed on \- the samples period or the number of samples (hits)\&. .fi .if n \{\ .RE .\} .RE .PP \-\-percent\-limit .RS 4 Do not show functions which have an overhead under that percent on stdio or stdio2 (Default: 0)\&. Note that this is about selection of functions to display, not about lines within the function\&. .RE .SH "SEE ALSO" .sp \fBperf-record\fR(1), \fBperf-report\fR(1)