aboutsummaryrefslogtreecommitdiff
path: root/gprofng/doc/gprofng-display-text.texi
blob: b6b69cdba85b9247feca62ee052af7f7b1fa3053 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
@c ----------------------------------------------------------------------------
@c This is the Texinfo source file for the gprofng-display-text man page.
@c
@c Author: Ruud van der Pas
@c ----------------------------------------------------------------------------
@ifset man
\input texinfo @c -*-texinfo-*-
@setfilename gprofng-display-text
@settitle Display the performance data in plain text format
@include gp-macros.texi
@end ifset

@c ----------------------------------------------------------------------------
@c This is from the man-pages(7) man page
@c
@c "The list below shows conventional or suggested sections.  Most manual pages
@c  should include at least the highlighted sections.  Arrange a new manual
@c  page so that sections are placed in the order shown in the list."
@c
@c              NAME
@c              SYNOPSIS
@c              CONFIGURATION    [Normally only in Section 4]
@c              DESCRIPTION
@c              OPTIONS          [Normally only in Sections 1, 8]
@c              EXIT STATUS      [Normally only in Sections 1, 8]
@c              RETURN VALUE     [Normally only in Sections 2, 3]
@c              ERRORS           [Typically only in Sections 2, 3]
@c              ENVIRONMENT
@c              FILES
@c              VERSIONS         [Normally only in Sections 2, 3]
@c              ATTRIBUTES       [Normally only in Sections 2, 3]
@c              CONFORMING TO
@c              NOTES
@c              BUGS
@c              EXAMPLES
@c              AUTHORS          [Discouraged]
@c              REPORTING BUGS   [Not used in man-pages]
@c              COPYRIGHT        [Not used in man-pages]
@c              SEE ALSO
@c
@c This is what the texi2pod.pl tool recognizes:
@c
@c for $sect (qw(NAME SYNOPSIS TARGET DESCRIPTION OPTIONS ENVIRONMENT FILES
@c               BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
@c
@c What is interesting is that it places "SEE ALSO" before "COPYRIGHT", which
@c makes sense and adhered to for the other formats.
@c ----------------------------------------------------------------------------

@c ----------------------------------------------------------------------------
@c NAME section
@c ----------------------------------------------------------------------------

@ManPageStart{NAME}
@c man begin NAME

gprofng-display-text - Display the performance data in plain text format

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SYNOPSIS section
@c ----------------------------------------------------------------------------

@ManPageStart{SYNOPSIS}
@c man begin SYNOPSIS

@command{gprofng display text} [@var{option(s)}] [@var{commands}]
[-script @var{script-file}] @var{experiment(s)}

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c DESCRIPTION section
@c ----------------------------------------------------------------------------

@ManPageStart{DESCRIPTION}
@c man begin DESCRIPTION

Print a plain text version of the various displays supported by gprofng.

The input consists of one or more experiment directories.  Through commands,
the user controls the output.

There is a rich set of commands to control the display of the data.  The
@samp{NOTES} section lists the most common ones.  The gprofng user guide
lists all the commands supported.

Commands specified on the command line need to be prepended with the dash ('-')
symbol.

In this example, a function overview will be shown, followed by the source
code listing of function @samp{my-func}, annotated with the
performance metrics that have been recorded during the data collection
and stored in experiment directory @samp{my-exp.er}:

@smallexample
$ gprofng display text -functions -source my-func my-exp.er
@end smallexample

Instead of, or in addition to, specifying these commands on the command line,
commands may also be included in a file called the @var{script-file}.

Note that the commands are processed and interpreted from left to right,
@emph{so the order matters}.

If this tool is invoked without options, commands, or a script file, it
starts in interpreter mode.  The user can then issue the commands
interactively.  The session is terminated with the @command{exit} command in
the interpreter.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c OPTIONS section
@c ----------------------------------------------------------------------------

@ManPageStart{OPTIONS}
@c man begin OPTIONS

@table @gcctabopt

@item --version
@ifclear man
@IndexSubentry{Options, @code{--version}}
@end ifclear

Print the version number and exit.

@item --help
@ifclear man
@IndexSubentry{Options, @code{--help}}
@end ifclear

Print usage information and exit.

@item -script @var{script-file}
@ifclear man
@IndexSubentry{Options,  @code{-script}}
@IndexSubentry{Commands, @code{script}}
@end ifclear

Execute the commands stored in the script file.  This feature may be combined
with commands specified at the command line.

@end table

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c NOTES section
@c ----------------------------------------------------------------------------

@ManPageStart{NOTES}
@c man begin NOTES

Many commands are supported.  Below, the more common ones are listed in
mostly alphabetical order, because sometimes it is more logical to
swap the order of two entries.

@ifset man
There are many more commands.  These are documented in the user guide.
@end ifset

@table @code

@item callers-callees
@ifclear man
@IndexSubentry{Options,  @code{-callers-callees}}
@IndexSubentry{Commands, @code{callers-callees}}
@end ifclear
In a callers-callees panel, it is shown which function(s) call the target
function (the @emph{callers}) and what functions it is calling (the
@emph{callees}).
This command prints the callers-callees panel for each of the functions,
in the order specified by the function sort metric.

@item calltree
@ifclear man
@IndexSubentry{Options,  @code{-calltree}}
@IndexSubentry{Commands, @code{calltree}}
@end ifclear
Display the dynamic call graph from the experiment, showing the hierarchical
metrics at each level.

@item compare @{on | off | delta | ratio@}
@ifclear man
@IndexSubentry{Options,  @code{-compare}}
@IndexSubentry{Commands, @code{compare}}
@end ifclear
By default, the results for multiple experiments are aggregated.  This
command changes this to enable the comparison of experiments for certain
views (e.g. the function view).  The first experiment specified is defined
to be the reference.  The following options are supported:

@table @code

@item on
For each experiment specified on the command line, print the values for
the metrics that have been activated for the experiment.

@item off
Disable the comparison of experiments.  This is the default.

@item delta
Print the values for the reference experiment.  The results for the other
experiments are shown as a delta relative to the reference (current-reference).

@item ratio
Print the values for the reference experiment.  The results for the other
experiments are shown as a ratio relative to the reference (current/reference).

@end table

@item disasm @var{function-name}
@ifclear man
@IndexSubentry{Options,  @code{-disasm}}
@IndexSubentry{Commands, @code{disasm}}
@end ifclear
List the source code and instructions for the function specified.  The
instructions are annotated with the metrics used.

@item fsingle @var{function-name} [@samp{n}]
@ifclear man
@IndexSubentry{Options,  @code{-fsingle}}
@IndexSubentry{Commands, @code{fsingle}}
@end ifclear
Write a summary panel for the specified function.  The optional parameter
@var{n} is needed for those cases where several functions have the same name.

@item fsummary
@ifclear man
@IndexSubentry{Options,  @code{-fsummary}}
@IndexSubentry{Commands, @code{fsummary}}
@end ifclear
Write a summary panel for each function in the function list.

@item functions
@ifclear man
@IndexSubentry{Options,  @code{-functions}}
@IndexSubentry{Commands, @code{functions}}
@end ifclear
Display a list of all functions executed.  For each function the used metrics
(e.g. the CPU time) are shown.

@item header
@ifclear man
@IndexSubentry{Options,  @code{-header}}
@IndexSubentry{Commands, @code{header}}
@end ifclear
Shows several operational characteristics of the experiment(s) specified
on the command line.

@item limit @var{n}
@ifclear man
@IndexSubentry{Options,  @code{-limit}}
@IndexSubentry{Commands, @code{limit}}
@end ifclear
Limit the output to @var{n} lines.

@item lines
@ifclear man
@IndexSubentry{Options,  @code{-lines}}
@IndexSubentry{Commands, @code{lines}}
@end ifclear
Write a list of source lines and their metrics, ordered by the current
sort metric.

@item metric_list
@ifclear man
@IndexSubentry{Options,  @code{-metric_list}}
@IndexSubentry{Commands, @code{metric_list}}
@end ifclear
Display the currently selected metrics in the function view and a list
of all the metrics available for the target experiment(s).

@item metrics @var{metric-spec}
@ifclear man
@IndexSubentry{Options,  @code{-metrics}}
@IndexSubentry{Commands, @code{metrics}}
@end ifclear
Define the metrics to be displayed in the function and callers-callees
overviews.

The @var{metric-spec} can either be the keyword @samp{default}
to restore the default metrics selection, or a colon separated list
with metrics.

@ifclear man
@IndexSubentry{Hardware event counters, @code{hwc} metric}
@end ifclear
A special metric is @code{hwc}.  It automatically expands to the active
set of hardware event counters used in the experiment(s).

@ifclear man
@IndexSubentry{Hardware event counters, @code{IPC} metric}
@IndexSubentry{Hardware event counters, @code{CPI} metric}
@end ifclear
If both instructions and clock cycles have been measured, the @code{CPI}
and @code{IPC} metrics can be used to see the Clockcycles Per Instruction
and Instructions Per Clockcyle values, respectively.

The gprofng user guide has more details how to define metrics.

@item name @{short | long | mangled@}[:@{soname | nosoname@}]
@ifclear man
@IndexSubentry{Options,  @code{-name}}
@IndexSubentry{Commands, @code{name}}
@end ifclear
Specify whether to use the short, long, or mangled form of function names.
Optionally, the load object that the function is part of can be included in
the output by adding the @emph{soname} keyword.  It can also be ommitted
(@emph{nosoname}), which is the default.

Whether there is an actual difference between these types of names depends
on the language.

Note that there should be no (white)space to the left and right of the
colon (@samp{:}).

This option should not be confused with the keyword @samp{name} in a
metric definition, which is used to specify that the names of functions
should be shown in the function overview.

@item overview
@ifclear man
@IndexSubentry{Options,  @code{-overview}}
@IndexSubentry{Commands, @code{overview}}
@end ifclear
Shows a summary of the recorded performance data for the experiment(s)
specified on the command line.

@item pcs
@ifclear man
@IndexSubentry{Options,  @code{-pcs}}
@IndexSubentry{Commands, @code{pcs}}
@end ifclear
Write a list of program counters (PCs) and their metrics, ordered by
the current sort metric.

@item sort @var{metric-spec}
@ifclear man
@IndexSubentry{Options,  @code{-sort}}
@IndexSubentry{Commands, @code{sort}}
@end ifclear
Sort the function list on the @var{metric-spec} given.

@IndexSubentry{Sort, Reverse order}
The data can be sorted in reverse order by prepending the metric definition
with a minus (@samp{-}) sign.

@noindent
For example @command{sort -e.totalcpu}.

@IndexSubentry{Sort, Reset to default}
A default metric for the sort operation has been defined and since this is
a persistent command, this default can be restored with @code{default} as
the key (@command{sort default}).

@item source @var{function-name}
@ifclear man
@IndexSubentry{Options,  @code{-source}}
@IndexSubentry{Commands, @code{source}}
@end ifclear
List the source code for the function specified, annotated with the metrics
used.

@item viewmode @{user | expert | machine@}
@ifclear man
@IndexSubentry{Options,  @code{-viewmode}}
@IndexSubentry{Commands, @code{viewmode}}
@end ifclear
This command is only relevant for Java programs.  For all other languages
supported, the viewmode setting has no effect.

The following options are supported:

@table @code

@item user
Show the Java call stacks for Java threads, but do not show housekeeping
threads.  The function view includes a function called @samp{<JVM-System>}.
This represents the aggregated time from non-Java threads.
In case the JVM software does not report a Java call stack, time is reported
against the function @samp{<no Java callstack recorded>}.

@item expert
Show the Java call stacks for Java threads when the user Java code is executed,
and machine call stacks when JVM code is executed, or when the JVM software
does not report a Java call stack.  Show the machine call stacks for
housekeeping threads.

@item machine
Show the actual native call stacks for all threads.  This is the view mode
for C, C++, and Fortran.

@end table

@end table

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SEEALSO section
@c ----------------------------------------------------------------------------

@ManPageStart{SEE ALSO}
@c man begin SEEALSO

gprofng(1),
gprofng-archive(1),
gprofng-collect-app(1),
@c -- gprofng-display-gui(1),
gprofng-display-html(1),
gprofng-display-src(1)

@iftex
@vspace{1}
@end iftex

The user guide for gprofng is maintained as a Texinfo manual.  If the
@command{info} and @command{gprofng} programs are correctly installed, the
command @command{info gprofng} should give access to this document.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c COPYRIGHT section
@c ----------------------------------------------------------------------------

@ManPageStart{COPYRIGHT}
@c man begin COPYRIGHT

Copyright @copyright{} 2022-2024 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3
or any later version published by the Free Software Foundation;
with no Invariant Sections, with no Front-Cover Texts, and with no
Back-Cover Texts.  A copy of the license is included in the
section entitled ``GNU Free Documentation License''.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c If this text is used for a man page, exit.  Otherwise we need to continue.
@c ----------------------------------------------------------------------------

@ifset man
@bye
@end ifset