Commit | Line | Data |
---|---|---|
0bec253c | 1 | perf-report(1) |
c1c2365a | 2 | ============== |
0bec253c IM |
3 | |
4 | NAME | |
5 | ---- | |
23ac9cbe | 6 | perf-report - Read perf.data (created by perf record) and display the profile |
0bec253c IM |
7 | |
8 | SYNOPSIS | |
9 | -------- | |
10 | [verse] | |
11 | 'perf report' [-i <file> | --input=file] | |
12 | ||
13 | DESCRIPTION | |
14 | ----------- | |
15 | This command displays the performance counter profile information recorded | |
b0a28589 | 16 | via perf record. |
0bec253c IM |
17 | |
18 | OPTIONS | |
19 | ------- | |
20 | -i:: | |
21 | --input=:: | |
efad1415 | 22 | Input file name. (default: perf.data unless stdin is a fifo) |
e04fffc3 SB |
23 | |
24 | -v:: | |
25 | --verbose:: | |
26 | Be more verbose. (show symbol address, etc) | |
27 | ||
ca2b900f ZT |
28 | -n:: |
29 | --show-nr-samples:: | |
e3d7e183 | 30 | Show the number of samples for each symbol |
e04fffc3 | 31 | |
b272a59d | 32 | --show-cpu-utilization:: |
e04fffc3 SB |
33 | Show sample percentage for different cpu modes. |
34 | ||
ca2b900f ZT |
35 | -T:: |
36 | --threads:: | |
1f91d5fd NK |
37 | Show per-thread event counters. The input data file should be recorded |
38 | with -s option. | |
c8e66720 | 39 | -c:: |
cc8b88b1 ACM |
40 | --comms=:: |
41 | Only consider symbols in these comms. CSV that understands | |
f2148330 NK |
42 | file://filename entries. This option will affect the percentage of |
43 | the overhead column. See --percentage for more info. | |
e03eaa40 DA |
44 | --pid=:: |
45 | Only show events for given process ID (comma separated list). | |
46 | ||
47 | --tid=:: | |
48 | Only show events for given thread ID (comma separated list). | |
f2148330 NK |
49 | -d:: |
50 | --dsos=:: | |
51 | Only consider symbols in these dsos. CSV that understands | |
52 | file://filename entries. This option will affect the percentage of | |
53 | the overhead column. See --percentage for more info. | |
7bec7a91 ACM |
54 | -S:: |
55 | --symbols=:: | |
56 | Only consider these symbols. CSV that understands | |
f2148330 NK |
57 | file://filename entries. This option will affect the percentage of |
58 | the overhead column. See --percentage for more info. | |
0bec253c | 59 | |
fde0eeab NK |
60 | --symbol-filter=:: |
61 | Only show symbols that match (partially) with this filter. | |
62 | ||
e04fffc3 SB |
63 | -U:: |
64 | --hide-unresolved:: | |
65 | Only display entries resolved to a symbol. | |
66 | ||
c351c281 ACM |
67 | -s:: |
68 | --sort=:: | |
9811360e NK |
69 | Sort histogram entries by given key(s) - multiple keys can be specified |
70 | in CSV format. Following sort keys are available: | |
2e7ea3ab | 71 | pid, comm, dso, symbol, parent, cpu, socket, srcline, weight, local_weight. |
9811360e NK |
72 | |
73 | Each key has following meaning: | |
74 | ||
75 | - comm: command (name) of the task which can be read via /proc/<pid>/comm | |
76 | - pid: command and tid of the task | |
77 | - dso: name of library or module executed at the time of sample | |
78 | - symbol: name of function executed at the time of sample | |
79 | - parent: name of function matched to the parent regex filter. Unmatched | |
80 | entries are displayed as "[other]". | |
81 | - cpu: cpu number the task ran at the time of sample | |
2e7ea3ab | 82 | - socket: processor socket number the task ran at the time of sample |
9811360e | 83 | - srcline: filename and line number executed at the time of sample. The |
f5d05bce | 84 | DWARF debugging info must be provided. |
31191a85 AK |
85 | - srcfile: file name of the source file of the same. Requires dwarf |
86 | information. | |
475eeab9 AK |
87 | - weight: Event specific weight, e.g. memory latency or transaction |
88 | abort cost. This is the global weight. | |
89 | - local_weight: Local weight version of the weight above. | |
90 | - transaction: Transaction abort flags. | |
a2ce067e NK |
91 | - overhead: Overhead percentage of sample |
92 | - overhead_sys: Overhead percentage of sample running in system mode | |
93 | - overhead_us: Overhead percentage of sample running in user mode | |
94 | - overhead_guest_sys: Overhead percentage of sample running in system mode | |
95 | on guest machine | |
96 | - overhead_guest_us: Overhead percentage of sample running in user mode on | |
97 | guest machine | |
98 | - sample: Number of sample | |
99 | - period: Raw number of event count of sample | |
9811360e NK |
100 | |
101 | By default, comm, dso and symbol keys are used. | |
102 | (i.e. --sort comm,dso,symbol) | |
103 | ||
104 | If --branch-stack option is used, following sort keys are also | |
105 | available: | |
106 | dso_from, dso_to, symbol_from, symbol_to, mispredict. | |
107 | ||
108 | - dso_from: name of library or module branched from | |
109 | - dso_to: name of library or module branched to | |
110 | - symbol_from: name of function branched from | |
111 | - symbol_to: name of function branched to | |
112 | - mispredict: "N" for predicted branch, "Y" for mispredicted branch | |
f5d05bce AK |
113 | - in_tx: branch in TSX transaction |
114 | - abort: TSX transaction abort. | |
0e332f03 | 115 | - cycles: Cycles in basic block |
9811360e NK |
116 | |
117 | And default sort keys are changed to comm, dso_from, symbol_from, dso_to | |
118 | and symbol_to, see '--branch-stack'. | |
c351c281 | 119 | |
a7d945bc NK |
120 | -F:: |
121 | --fields=:: | |
122 | Specify output field - multiple keys can be specified in CSV format. | |
123 | Following fields are available: | |
793aaaab | 124 | overhead, overhead_sys, overhead_us, overhead_children, sample and period. |
a7d945bc NK |
125 | Also it can contain any sort key(s). |
126 | ||
127 | By default, every sort keys not specified in -F will be appended | |
128 | automatically. | |
129 | ||
75e906c9 DZ |
130 | If --mem-mode option is used, following sort keys are also available |
131 | (incompatible with --branch-stack): | |
9b32ba71 | 132 | symbol_daddr, dso_daddr, locked, tlb, mem, snoop, dcacheline. |
75e906c9 DZ |
133 | |
134 | - symbol_daddr: name of data symbol being executed on at the time of sample | |
135 | - dso_daddr: name of library or module containing the data being executed | |
136 | on at the time of sample | |
137 | - locked: whether the bus was locked at the time of sample | |
138 | - tlb: type of tlb access for the data at the time of sample | |
139 | - mem: type of memory access for the data at the time of sample | |
140 | - snoop: type of snoop (if any) for the data at the time of sample | |
9b32ba71 | 141 | - dcacheline: the cacheline the data address is on at the time of sample |
75e906c9 DZ |
142 | |
143 | And default sort keys are changed to local_weight, mem, sym, dso, | |
144 | symbol_daddr, dso_daddr, snoop, tlb, locked, see '--mem-mode'. | |
145 | ||
e04fffc3 SB |
146 | -p:: |
147 | --parent=<regex>:: | |
9811360e NK |
148 | A regex filter to identify parent. The parent is a caller of this |
149 | function and searched through the callchain, thus it requires callchain | |
150 | information recorded. The pattern is in the exteneded regex format and | |
151 | defaults to "\^sys_|^do_page_fault", see '--sort parent'. | |
e04fffc3 SB |
152 | |
153 | -x:: | |
154 | --exclude-other:: | |
155 | Only display entries with parent-match. | |
156 | ||
52d422de | 157 | -w:: |
e04fffc3 | 158 | --column-widths=<width[,width...]>:: |
52d422de | 159 | Force each column width to the provided list, for large terminal |
cf59002f | 160 | readability. 0 means no limit (default behavior). |
52d422de ACM |
161 | |
162 | -t:: | |
163 | --field-separator=:: | |
52d422de | 164 | Use a special separator character and don't pad with spaces, replacing |
e04fffc3 | 165 | all occurrences of this separator in symbol names (and other output) |
52d422de ACM |
166 | with a '.' character, that thus it's the only non valid separator. |
167 | ||
e04fffc3 SB |
168 | -D:: |
169 | --dump-raw-trace:: | |
170 | Dump raw trace in ASCII. | |
171 | ||
76a26549 | 172 | -g:: |
f2af0086 | 173 | --call-graph=<print_type,threshold[,print_limit],order,sort_key[,branch],value>:: |
76a26549 | 174 | Display call chains using type, min percent threshold, print limit, |
f2af0086 NK |
175 | call order, sort key, optional branch and value. Note that ordering of |
176 | parameters is not fixed so any parement can be given in an arbitraty order. | |
177 | One exception is the print_limit which should be preceded by threshold. | |
76a26549 NK |
178 | |
179 | print_type can be either: | |
e04fffc3 | 180 | - flat: single column, linear exposure of call chains. |
76a26549 | 181 | - graph: use a graph tree, displaying absolute overhead rates. (default) |
ec7ba4ea | 182 | - fractal: like graph, but displays relative rates. Each branch of |
76a26549 | 183 | the tree is considered as a new profiled object. |
26e77924 | 184 | - folded: call chains are displayed in a line, separated by semicolons |
76a26549 NK |
185 | - none: disable call chain display. |
186 | ||
187 | threshold is a percentage value which specifies a minimum percent to be | |
188 | included in the output call graph. Default is 0.5 (%). | |
189 | ||
190 | print_limit is only applied when stdio interface is used. It's to limit | |
191 | number of call graph entries in a single hist entry. Note that it needs | |
192 | to be given after threshold (but not necessarily consecutive). | |
193 | Default is 0 (unlimited). | |
d797fdc5 SL |
194 | |
195 | order can be either: | |
196 | - callee: callee based call graph. | |
197 | - caller: inverted caller based call graph. | |
76a26549 | 198 | Default is 'caller' when --children is used, otherwise 'callee'. |
d797fdc5 | 199 | |
76a26549 NK |
200 | sort_key can be: |
201 | - function: compare on functions (default) | |
99571ab3 AK |
202 | - address: compare on individual code addresses |
203 | ||
8b7bad58 | 204 | branch can be: |
76a26549 NK |
205 | - branch: include last branch information in callgraph when available. |
206 | Usually more convenient to use --branch-history for this. | |
d797fdc5 | 207 | |
f2af0086 NK |
208 | value can be: |
209 | - percent: diplay overhead percent (default) | |
210 | - period: display event period | |
211 | - count: display event count | |
212 | ||
793aaaab NK |
213 | --children:: |
214 | Accumulate callchain of children to parent entry so that then can | |
215 | show up in the output. The output will have a new "Children" column | |
216 | and will be sorted on the data. It requires callchains are recorded. | |
dd309207 | 217 | See the `overhead calculation' section for more details. |
793aaaab | 218 | |
91e95617 WL |
219 | --max-stack:: |
220 | Set the stack depth limit when parsing the callchain, anything | |
221 | beyond the specified depth will be ignored. This is a trade-off | |
222 | between information loss and faster processing especially for | |
223 | workloads that can have a very long callchain stack. | |
40862a7b AH |
224 | Note that when using the --itrace option the synthesized callchain size |
225 | will override this value if the synthesized callchain size is bigger. | |
91e95617 WL |
226 | |
227 | Default: 127 | |
228 | ||
d797fdc5 SL |
229 | -G:: |
230 | --inverted:: | |
231 | alias for inverted caller based call graph. | |
ec7ba4ea | 232 | |
b21484f1 GP |
233 | --ignore-callees=<regex>:: |
234 | Ignore callees of the function(s) matching the given regex. | |
235 | This has the effect of collecting the callers of each such | |
236 | function into one place in the call-graph tree. | |
237 | ||
e04fffc3 SB |
238 | --pretty=<key>:: |
239 | Pretty printing style. key: normal, raw | |
240 | ||
8b9e74eb ACM |
241 | --stdio:: Use the stdio interface. |
242 | ||
243 | --tui:: Use the TUI interface, that is integrated with annotate and allows | |
244 | zooming into DSOs or threads, among other features. Use of --tui | |
245 | requires a tty, if one is not present, as when piping to other | |
246 | commands, the stdio interface is used. | |
247 | ||
c31a9457 PE |
248 | --gtk:: Use the GTK2 interface. |
249 | ||
e04fffc3 SB |
250 | -k:: |
251 | --vmlinux=<file>:: | |
252 | vmlinux pathname | |
253 | ||
b226a5a7 DA |
254 | --kallsyms=<file>:: |
255 | kallsyms pathname | |
256 | ||
e04fffc3 SB |
257 | -m:: |
258 | --modules:: | |
259 | Load module symbols. WARNING: This should only be used with -k and | |
260 | a LIVE kernel. | |
261 | ||
262 | -f:: | |
263 | --force:: | |
264 | Don't complain, do it. | |
265 | ||
ec5761ea DA |
266 | --symfs=<directory>:: |
267 | Look for files with symbols relative to this directory. | |
268 | ||
c8e66720 | 269 | -C:: |
5d67be97 AB |
270 | --cpu:: Only report samples for the list of CPUs provided. Multiple CPUs can |
271 | be provided as a comma-separated list with no space: 0,1. Ranges of | |
272 | CPUs are specified with -: 0-2. Default is to report samples on all | |
273 | CPUs. | |
274 | ||
f69b64f7 AK |
275 | -M:: |
276 | --disassembler-style=:: Set disassembler style for objdump. | |
277 | ||
64c6f0c7 ACM |
278 | --source:: |
279 | Interleave source code with assembly code. Enabled by default, | |
280 | disable with --no-source. | |
281 | ||
282 | --asm-raw:: | |
283 | Show raw instruction encoding of assembly instructions. | |
284 | ||
3f2728bd ACM |
285 | --show-total-period:: Show a column with the sum of periods. |
286 | ||
fbe96f29 SE |
287 | -I:: |
288 | --show-info:: | |
289 | Display extended information about the perf.data file. This adds | |
290 | information which may be very large and thus may clutter the display. | |
291 | It currently includes: cpu and numa topology of the host system. | |
292 | ||
b50311dc RAV |
293 | -b:: |
294 | --branch-stack:: | |
295 | Use the addresses of sampled taken branches instead of the instruction | |
296 | address to build the histograms. To generate meaningful output, the | |
993ac88d SE |
297 | perf.data file must have been obtained using perf record -b or |
298 | perf record --branch-filter xxx where xxx is a branch filter option. | |
299 | perf report is able to auto-detect whether a perf.data file contains | |
300 | branch stacks and it will automatically switch to the branch view mode, | |
301 | unless --no-branch-stack is used. | |
b50311dc | 302 | |
fa94c36c AK |
303 | --branch-history:: |
304 | Add the addresses of sampled taken branches to the callstack. | |
305 | This allows to examine the path the program took to each sample. | |
306 | The data collection must have used -b (or -j) and -g. | |
307 | ||
7a4ec938 MB |
308 | --objdump=<path>:: |
309 | Path to objdump binary. | |
310 | ||
01d14f16 NK |
311 | --group:: |
312 | Show event group information together. | |
313 | ||
328ccdac NK |
314 | --demangle:: |
315 | Demangle symbol names to human readable form. It's enabled by default, | |
316 | disable with --no-demangle. | |
317 | ||
763122ad AK |
318 | --demangle-kernel:: |
319 | Demangle kernel symbol names to human readable form (for C++ kernels). | |
320 | ||
75e906c9 DZ |
321 | --mem-mode:: |
322 | Use the data addresses of samples in addition to instruction addresses | |
323 | to build the histograms. To generate meaningful output, the perf.data | |
324 | file must have been obtained using perf record -d -W and using a | |
325 | special event -e cpu/mem-loads/ or -e cpu/mem-stores/. See | |
326 | 'perf mem' for simpler access. | |
327 | ||
064f1981 NK |
328 | --percent-limit:: |
329 | Do not show entries which have an overhead under that percent. | |
330 | (Default: 0). | |
331 | ||
f2148330 NK |
332 | --percentage:: |
333 | Determine how to display the overhead percentage of filtered entries. | |
334 | Filters can be applied by --comms, --dsos and/or --symbols options and | |
335 | Zoom operations on the TUI (thread, dso, etc). | |
336 | ||
337 | "relative" means it's relative to filtered entries only so that the | |
338 | sum of shown entries will be always 100%. "absolute" means it retains | |
339 | the original value before and after the filter is applied. | |
340 | ||
5cfe2c82 JO |
341 | --header:: |
342 | Show header information in the perf.data file. This includes | |
343 | various information like hostname, OS and perf version, cpu/mem | |
344 | info, perf command line, event list and so on. Currently only | |
345 | --stdio output supports this feature. | |
346 | ||
347 | --header-only:: | |
348 | Show only perf.data header (forces --stdio). | |
349 | ||
520a2ebc AH |
350 | --itrace:: |
351 | Options for decoding instruction tracing data. The options are: | |
352 | ||
60b88d87 | 353 | include::itrace.txt[] |
520a2ebc AH |
354 | |
355 | To disable decoding entirely, use --no-itrace. | |
356 | ||
a9710ba0 AK |
357 | --full-source-path:: |
358 | Show the full path for source files for srcline output. | |
64a7e61f | 359 | |
9e207ddf KL |
360 | --show-ref-call-graph:: |
361 | When multiple events are sampled, it may not be needed to collect | |
362 | callgraphs for all of them. The sample sites are usually nearby, | |
363 | and it's enough to collect the callgraphs on a reference event. | |
364 | So user can use "call-graph=no" event modifier to disable callgraph | |
365 | for other events to reduce the overhead. | |
366 | However, perf report cannot show callgraphs for the event which | |
367 | disable the callgraph. | |
368 | This option extends the perf report to show reference callgraphs, | |
369 | which collected by reference event, in no callgraph event. | |
370 | ||
21394d94 KL |
371 | --socket-filter:: |
372 | Only report the samples on the processor socket that match with this filter | |
373 | ||
64a7e61f AH |
374 | include::callchain-overhead-calculation.txt[] |
375 | ||
0bec253c IM |
376 | SEE ALSO |
377 | -------- | |
64c6f0c7 | 378 | linkperf:perf-stat[1], linkperf:perf-annotate[1] |