diff options
Diffstat (limited to 'tools/perf/Documentation/perf-script.txt')
-rw-r--r-- | tools/perf/Documentation/perf-script.txt | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/tools/perf/Documentation/perf-script.txt b/tools/perf/Documentation/perf-script.txt new file mode 100644 index 000000000000..86c87e214b11 --- /dev/null +++ b/tools/perf/Documentation/perf-script.txt | |||
@@ -0,0 +1,188 @@ | |||
1 | perf-script(1) | ||
2 | ============= | ||
3 | |||
4 | NAME | ||
5 | ---- | ||
6 | perf-script - Read perf.data (created by perf record) and display trace output | ||
7 | |||
8 | SYNOPSIS | ||
9 | -------- | ||
10 | [verse] | ||
11 | 'perf script' [<options>] | ||
12 | 'perf script' [<options>] record <script> [<record-options>] <command> | ||
13 | 'perf script' [<options>] report <script> [script-args] | ||
14 | 'perf script' [<options>] <script> <required-script-args> [<record-options>] <command> | ||
15 | 'perf script' [<options>] <top-script> [script-args] | ||
16 | |||
17 | DESCRIPTION | ||
18 | ----------- | ||
19 | This command reads the input file and displays the trace recorded. | ||
20 | |||
21 | There are several variants of perf script: | ||
22 | |||
23 | 'perf script' to see a detailed trace of the workload that was | ||
24 | recorded. | ||
25 | |||
26 | You can also run a set of pre-canned scripts that aggregate and | ||
27 | summarize the raw trace data in various ways (the list of scripts is | ||
28 | available via 'perf script -l'). The following variants allow you to | ||
29 | record and run those scripts: | ||
30 | |||
31 | 'perf script record <script> <command>' to record the events required | ||
32 | for 'perf script report'. <script> is the name displayed in the | ||
33 | output of 'perf script --list' i.e. the actual script name minus any | ||
34 | language extension. If <command> is not specified, the events are | ||
35 | recorded using the -a (system-wide) 'perf record' option. | ||
36 | |||
37 | 'perf script report <script> [args]' to run and display the results | ||
38 | of <script>. <script> is the name displayed in the output of 'perf | ||
39 | trace --list' i.e. the actual script name minus any language | ||
40 | extension. The perf.data output from a previous run of 'perf script | ||
41 | record <script>' is used and should be present for this command to | ||
42 | succeed. [args] refers to the (mainly optional) args expected by | ||
43 | the script. | ||
44 | |||
45 | 'perf script <script> <required-script-args> <command>' to both | ||
46 | record the events required for <script> and to run the <script> | ||
47 | using 'live-mode' i.e. without writing anything to disk. <script> | ||
48 | is the name displayed in the output of 'perf script --list' i.e. the | ||
49 | actual script name minus any language extension. If <command> is | ||
50 | not specified, the events are recorded using the -a (system-wide) | ||
51 | 'perf record' option. If <script> has any required args, they | ||
52 | should be specified before <command>. This mode doesn't allow for | ||
53 | optional script args to be specified; if optional script args are | ||
54 | desired, they can be specified using separate 'perf script record' | ||
55 | and 'perf script report' commands, with the stdout of the record step | ||
56 | piped to the stdin of the report script, using the '-o -' and '-i -' | ||
57 | options of the corresponding commands. | ||
58 | |||
59 | 'perf script <top-script>' to both record the events required for | ||
60 | <top-script> and to run the <top-script> using 'live-mode' | ||
61 | i.e. without writing anything to disk. <top-script> is the name | ||
62 | displayed in the output of 'perf script --list' i.e. the actual | ||
63 | script name minus any language extension; a <top-script> is defined | ||
64 | as any script name ending with the string 'top'. | ||
65 | |||
66 | [<record-options>] can be passed to the record steps of 'perf script | ||
67 | record' and 'live-mode' variants; this isn't possible however for | ||
68 | <top-script> 'live-mode' or 'perf script report' variants. | ||
69 | |||
70 | See the 'SEE ALSO' section for links to language-specific | ||
71 | information on how to write and run your own trace scripts. | ||
72 | |||
73 | OPTIONS | ||
74 | ------- | ||
75 | <command>...:: | ||
76 | Any command you can specify in a shell. | ||
77 | |||
78 | -D:: | ||
79 | --dump-raw-script=:: | ||
80 | Display verbose dump of the trace data. | ||
81 | |||
82 | -L:: | ||
83 | --Latency=:: | ||
84 | Show latency attributes (irqs/preemption disabled, etc). | ||
85 | |||
86 | -l:: | ||
87 | --list=:: | ||
88 | Display a list of available trace scripts. | ||
89 | |||
90 | -s ['lang']:: | ||
91 | --script=:: | ||
92 | Process trace data with the given script ([lang]:script[.ext]). | ||
93 | If the string 'lang' is specified in place of a script name, a | ||
94 | list of supported languages will be displayed instead. | ||
95 | |||
96 | -g:: | ||
97 | --gen-script=:: | ||
98 | Generate perf-script.[ext] starter script for given language, | ||
99 | using current perf.data. | ||
100 | |||
101 | -a:: | ||
102 | Force system-wide collection. Scripts run without a <command> | ||
103 | normally use -a by default, while scripts run with a <command> | ||
104 | normally don't - this option allows the latter to be run in | ||
105 | system-wide mode. | ||
106 | |||
107 | -i:: | ||
108 | --input=:: | ||
109 | Input file name. | ||
110 | |||
111 | -d:: | ||
112 | --debug-mode:: | ||
113 | Do various checks like samples ordering and lost events. | ||
114 | |||
115 | -f:: | ||
116 | --fields:: | ||
117 | Comma separated list of fields to print. Options are: | ||
118 | comm, tid, pid, time, cpu, event, trace, sym. Field | ||
119 | list can be prepended with the type, trace, sw or hw, | ||
120 | to indicate to which event type the field list applies. | ||
121 | e.g., -f sw:comm,tid,time,sym and -f trace:time,cpu,trace | ||
122 | |||
123 | perf script -f <fields> | ||
124 | |||
125 | is equivalent to: | ||
126 | |||
127 | perf script -f trace:<fields> -f sw:<fields> -f hw:<fields> | ||
128 | |||
129 | i.e., the specified fields apply to all event types if the type string | ||
130 | is not given. | ||
131 | |||
132 | The arguments are processed in the order received. A later usage can | ||
133 | reset a prior request. e.g.: | ||
134 | |||
135 | -f trace: -f comm,tid,time,sym | ||
136 | |||
137 | The first -f suppresses trace events (field list is ""), but then the | ||
138 | second invocation sets the fields to comm,tid,time,sym. In this case a | ||
139 | warning is given to the user: | ||
140 | |||
141 | "Overriding previous field request for all events." | ||
142 | |||
143 | Alternativey, consider the order: | ||
144 | |||
145 | -f comm,tid,time,sym -f trace: | ||
146 | |||
147 | The first -f sets the fields for all events and the second -f | ||
148 | suppresses trace events. The user is given a warning message about | ||
149 | the override, and the result of the above is that only S/W and H/W | ||
150 | events are displayed with the given fields. | ||
151 | |||
152 | For the 'wildcard' option if a user selected field is invalid for an | ||
153 | event type, a message is displayed to the user that the option is | ||
154 | ignored for that type. For example: | ||
155 | |||
156 | $ perf script -f comm,tid,trace | ||
157 | 'trace' not valid for hardware events. Ignoring. | ||
158 | 'trace' not valid for software events. Ignoring. | ||
159 | |||
160 | Alternatively, if the type is given an invalid field is specified it | ||
161 | is an error. For example: | ||
162 | |||
163 | perf script -v -f sw:comm,tid,trace | ||
164 | 'trace' not valid for software events. | ||
165 | |||
166 | At this point usage is displayed, and perf-script exits. | ||
167 | |||
168 | Finally, a user may not set fields to none for all event types. | ||
169 | i.e., -f "" is not allowed. | ||
170 | |||
171 | -k:: | ||
172 | --vmlinux=<file>:: | ||
173 | vmlinux pathname | ||
174 | |||
175 | --kallsyms=<file>:: | ||
176 | kallsyms pathname | ||
177 | |||
178 | --symfs=<directory>:: | ||
179 | Look for files with symbols relative to this directory. | ||
180 | |||
181 | -G:: | ||
182 | --hide-call-graph:: | ||
183 | When printing symbols do not display call chain. | ||
184 | |||
185 | SEE ALSO | ||
186 | -------- | ||
187 | linkperf:perf-record[1], linkperf:perf-script-perl[1], | ||
188 | linkperf:perf-script-python[1] | ||