diff options
author | Andi Kleen <ak@linux.intel.com> | 2016-04-04 18:58:06 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-04-06 10:19:18 -0400 |
commit | 85f8f966a152f5110a12b76511743fbfb62130ba (patch) | |
tree | 6b0ce4a7d3c354d5f06567f7e8fed989efd97f2c /tools | |
parent | 860b69f1d533de39fa70784768008d0eaf242e5c (diff) |
perf list: Document event specifications better
Document some features for specifying events in the perf list manpage:
- Event groups
- Leader sampling
- How to specify raw PMU events in the new syntax
- Global versus per process PMUs.
- Access restrictions
- Fix Intel SDM URL
v2: Lots of new content. address review feedback.
Signed-off-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/1459810686-15913-1-git-send-email-andi@firstfloor.org
[ Add quotes to some keywords, such as "any" ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/Documentation/perf-list.txt | 107 |
1 files changed, 106 insertions, 1 deletions
diff --git a/tools/perf/Documentation/perf-list.txt b/tools/perf/Documentation/perf-list.txt index ec723d0a5bb3..a126e97a8114 100644 --- a/tools/perf/Documentation/perf-list.txt +++ b/tools/perf/Documentation/perf-list.txt | |||
@@ -93,6 +93,67 @@ raw encoding of 0x1A8 can be used: | |||
93 | You should refer to the processor specific documentation for getting these | 93 | You should refer to the processor specific documentation for getting these |
94 | details. Some of them are referenced in the SEE ALSO section below. | 94 | details. Some of them are referenced in the SEE ALSO section below. |
95 | 95 | ||
96 | ARBITRARY PMUS | ||
97 | -------------- | ||
98 | |||
99 | perf also supports an extended syntax for specifying raw parameters | ||
100 | to PMUs. Using this typically requires looking up the specific event | ||
101 | in the CPU vendor specific documentation. | ||
102 | |||
103 | The available PMUs and their raw parameters can be listed with | ||
104 | |||
105 | ls /sys/devices/*/format | ||
106 | |||
107 | For example the raw event "LSD.UOPS" core pmu event above could | ||
108 | be specified as | ||
109 | |||
110 | perf stat -e cpu/event=0xa8,umask=0x1,name=LSD.UOPS_CYCLES,cmask=1/ ... | ||
111 | |||
112 | PER SOCKET PMUS | ||
113 | --------------- | ||
114 | |||
115 | Some PMUs are not associated with a core, but with a whole CPU socket. | ||
116 | Events on these PMUs generally cannot be sampled, but only counted globally | ||
117 | with perf stat -a. They can be bound to one logical CPU, but will measure | ||
118 | all the CPUs in the same socket. | ||
119 | |||
120 | This example measures memory bandwidth every second | ||
121 | on the first memory controller on socket 0 of a Intel Xeon system | ||
122 | |||
123 | perf stat -C 0 -a uncore_imc_0/cas_count_read/,uncore_imc_0/cas_count_write/ -I 1000 ... | ||
124 | |||
125 | Each memory controller has its own PMU. Measuring the complete system | ||
126 | bandwidth would require specifying all imc PMUs (see perf list output), | ||
127 | and adding the values together. | ||
128 | |||
129 | This example measures the combined core power every second | ||
130 | |||
131 | perf stat -I 1000 -e power/energy-cores/ -a | ||
132 | |||
133 | ACCESS RESTRICTIONS | ||
134 | ------------------- | ||
135 | |||
136 | For non root users generally only context switched PMU events are available. | ||
137 | This is normally only the events in the cpu PMU, the predefined events | ||
138 | like cycles and instructions and some software events. | ||
139 | |||
140 | Other PMUs and global measurements are normally root only. | ||
141 | Some event qualifiers, such as "any", are also root only. | ||
142 | |||
143 | This can be overriden by setting the kernel.perf_event_paranoid | ||
144 | sysctl to -1, which allows non root to use these events. | ||
145 | |||
146 | For accessing trace point events perf needs to have read access to | ||
147 | /sys/kernel/debug/tracing, even when perf_event_paranoid is in a relaxed | ||
148 | setting. | ||
149 | |||
150 | TRACING | ||
151 | ------- | ||
152 | |||
153 | Some PMUs control advanced hardware tracing capabilities, such as Intel PT, | ||
154 | that allows low overhead execution tracing. These are described in a separate | ||
155 | intel-pt.txt document. | ||
156 | |||
96 | PARAMETERIZED EVENTS | 157 | PARAMETERIZED EVENTS |
97 | -------------------- | 158 | -------------------- |
98 | 159 | ||
@@ -106,6 +167,50 @@ also be supplied. For example: | |||
106 | 167 | ||
107 | perf stat -C 0 -e 'hv_gpci/dtbp_ptitc,phys_processor_idx=0x2/' ... | 168 | perf stat -C 0 -e 'hv_gpci/dtbp_ptitc,phys_processor_idx=0x2/' ... |
108 | 169 | ||
170 | EVENT GROUPS | ||
171 | ------------ | ||
172 | |||
173 | Perf supports time based multiplexing of events, when the number of events | ||
174 | active exceeds the number of hardware performance counters. Multiplexing | ||
175 | can cause measurement errors when the workload changes its execution | ||
176 | profile. | ||
177 | |||
178 | When metrics are computed using formulas from event counts, it is useful to | ||
179 | ensure some events are always measured together as a group to minimize multiplexing | ||
180 | errors. Event groups can be specified using { }. | ||
181 | |||
182 | perf stat -e '{instructions,cycles}' ... | ||
183 | |||
184 | The number of available performance counters depend on the CPU. A group | ||
185 | cannot contain more events than available counters. | ||
186 | For example Intel Core CPUs typically have four generic performance counters | ||
187 | for the core, plus three fixed counters for instructions, cycles and | ||
188 | ref-cycles. Some special events have restrictions on which counter they | ||
189 | can schedule, and may not support multiple instances in a single group. | ||
190 | When too many events are specified in the group none of them will not | ||
191 | be measured. | ||
192 | |||
193 | Globally pinned events can limit the number of counters available for | ||
194 | other groups. On x86 systems, the NMI watchdog pins a counter by default. | ||
195 | The nmi watchdog can be disabled as root with | ||
196 | |||
197 | echo 0 > /proc/sys/kernel/nmi_watchdog | ||
198 | |||
199 | Events from multiple different PMUs cannot be mixed in a group, with | ||
200 | some exceptions for software events. | ||
201 | |||
202 | LEADER SAMPLING | ||
203 | --------------- | ||
204 | |||
205 | perf also supports group leader sampling using the :S specifier. | ||
206 | |||
207 | perf record -e '{cycles,instructions}:S' ... | ||
208 | perf report --group | ||
209 | |||
210 | Normally all events in a event group sample, but with :S only | ||
211 | the first event (the leader) samples, and it only reads the values of the | ||
212 | other events in the group. | ||
213 | |||
109 | OPTIONS | 214 | OPTIONS |
110 | ------- | 215 | ------- |
111 | 216 | ||
@@ -143,5 +248,5 @@ SEE ALSO | |||
143 | -------- | 248 | -------- |
144 | linkperf:perf-stat[1], linkperf:perf-top[1], | 249 | linkperf:perf-stat[1], linkperf:perf-top[1], |
145 | linkperf:perf-record[1], | 250 | linkperf:perf-record[1], |
146 | http://www.intel.com/Assets/PDF/manual/253669.pdf[Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide], | 251 | http://www.intel.com/sdm/[Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide], |
147 | http://support.amd.com/us/Processor_TechDocs/24593_APM_v2.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] | 252 | http://support.amd.com/us/Processor_TechDocs/24593_APM_v2.pdf[AMD64 Architecture Programmer’s Manual Volume 2: System Programming] |