Lines Matching +full:up +full:- +full:samples

1 perf-arm-spe(1)
5 ----
6 perf-arm-spe - Support for Arm Statistical Profiling Extension within Perf tools
9 --------
11 'perf record' -e arm_spe//
14 -----------
17 events down to individual instructions. Rather than being interrupt-driven, it picks an
33 architectural instructions or all micro-ops. Sampling happens at a programmable interval. The
35 sample. This minimum interval is used by the driver if no interval is specified. A pseudo-random
62 ----------------
64 Up until this point no decoding of the SPE data was done by either the kernel or Perf. Only when the
66 the data, Perf generates "synthetic samples" as if these were generated at the time of the
67 recording. These samples are the same as if normal sampling was done by Perf without using SPE,
72 -------------
74 - Sampling, rather than tracing, cuts down the profiling problem to something more manageable for
77 - Allows precise attribution data, including: Full PC of instruction, data virtual and physical
80 - Allows correlation between an instruction and events, such as TLB and cache miss. (Data source
84 However, SPE does not provide any call-graph information, and relies on statistical methods.
87 ----------
93 The 'sample_collision' PMU event can be used to determine the number of lost samples. Although this
95 number for samples dropped that would have made it through the filter, but can be a rough
99 -----------------------------------------
101 If an implementation samples micro-operations instead of instructions, the results of sampling must
104 For example, if a given instruction A is always converted into two micro-operations, A0 and A1, it
111 -------------------
119 Capturing SPE with perf command-line tools
120 ------------------------------------------
122 You can record a session with SPE samples:
124 perf record -e arm_spe// -- ./mybench
126 The sample period is set from the -c option, and because the minimum interval is used by default
132 These are placed between the // in the event and comma separated. For example '-e
135 branch_filter=1 - collect branches only (PMSFCR.B)
136 event_filter=<mask> - filter on specific events (PMSEVFR) - see bitfield description below
137 jitter=1 - use jitter to avoid resonance when sampling (PMSIRR.RND)
138 load_filter=1 - collect loads only (PMSFCR.LD)
139 min_latency=<n> - collect only samples with this latency or higher* (PMSLATFR)
140 …pa_enable=1 - collect physical address (as well as VA) of loads/stores (PMSCR.PA) - requir…
141 …pct_enable=1 - collect physical timestamp instead of virtual timestamp (PMSCR.PCT) - requir…
142 store_filter=1 - collect stores only (PMSFCR.ST)
143 ts_enable=1 - enable timestamping with value of generic timer (PMSCR.TS)
150 bit 1 - instruction retired (i.e. omit speculative instructions)
151 bit 3 - L1D refill
152 bit 5 - TLB refill
153 bit 7 - mispredict
154 bit 11 - misaligned access
158 perf record -e arm_spe/event_filter=2/ -- ./mybench
162 perf record -e arm_spe/event_filter=0x80/ -- ./mybench
167 By default perf report and perf script will assign samples to separate groups depending on the
169 them, the samples in these groups are not necessarily unique. For example perf report shows these
172 Available samples
175 21 l1d-miss
176 897 l1d-access
177 5 llc-miss
178 7 llc-access
179 2 tlb-miss
180 1K tlb-access
181 36 branch-miss
182 0 remote-access
187 To get a full list of unique samples that are not sorted into groups, set the itrace option to
188 generate 'instruction' samples. The period option is also taken into account, so set it to 1
191 perf report --itrace=i1i
193 Memory access details are also stored on the samples and this can be viewed with:
195 perf report --mem-mode
200 - "Cannot find PMU `arm_spe'. Missing kernel support?"
204 - "Arm SPE CONTEXT packets not found in the traces."
207 assigning PIDs to kernel samples. For userspace sampling this can be ignored.
209 - Excessively large perf.data file size
215 --------
217 linkperf:perf-record[1], linkperf:perf-script[1], linkperf:perf-report[1],
218 linkperf:perf-inject[1]