PERF-ARM-SPE(1) perf Manual PERF-ARM-SPE(1) (NAME) perf-arm-spe - Arm Statistical Profiling Extension Perf (SYNOPSIS) perf record -e arm_spe// (DESCRIPTION) SPE ( Statistical Profiling Extension) . - . (cycle) . (load) (store) (cache miss) . : 1. 2. 3. 4. 5. SPE (IMPLEMENTATION DEFINED) (micro-ops) . . SPE . . (pseudo-random perturbation) . (Program counter) PMU . (in flight) . . . . (interrupt) Perf . Perf perf.data . (OPENING THE FILE) SPE Perf . perf report perf script . Perf << >> (synthetic samples) . Perf SPE . SPE (latency) . (WHY SAMPLING?) o (Sampling) (Tracing) . (in flight) . o : PC . o TLB (cache miss) . ( (implementation defined) .) SPE (call-graph) ..SH " (COLLISIONS)" (collision) . . . PMU sample_collision . . (THE EFFECT OF MICROARCHITECTURAL SAMPLING) (micro-operations) . A A0 A1 . (speculative) PMU sample_pop inst_retired . (KERNEL REQUIREMENTS) ARM_SPE_PMU . CPU (kpti=off) . KPTI "profiling buffer inaccessible. Try passing kpti=off on the kernel command line" . KPTI unmap_kernel_at_el0() . CPU kpti_safe_list +Arm v8.5 FEAT_E0PD . SPE (firmware) . KPTI ( ) SPE PMU /sys/bus/event_source/devices/ SPE ACPI DT . . SPE PERF (CAPTURING SPE WITH PERF COMMAND-LINE TOOLS) SPE : perf record -e arm_spe// -- ./mybench -c . PMSIRR.INTERVAL . (Config parameters) // . : -e arm_spe/load_filter=1,min_latency=10/ event_filter= - AND (PMSEVFR) - inv_event_filter= - OR (PMSNEVFR, FEAT_SPEv1p2) - jitter=1 - jitter (PMSIRR.RND) min_latency= - * (PMSLATFR) pa_enable=1 - ( VA) load/store (PMSCR.PA) - pct_enable=1 - (PMSCR.PCT) - ts_enable=1 - (PMSCR.TS) discard=1 - SPE PMU - 'Discard mode' (PMBLIMITR.FM = DISCARD) inv_data_src_filter= - - (PMSDSFR, FEAT_SPE_FDS) - 'Data source filtering' * . event_filter . AND L1D cache refill TLB walk . FEAT_SPEv1p2 inv_event_filter (OR) . inv_event_filter L1D cache refill TLB walk . (UNPREDICTABLE) . event_filter inv_event_filter : bit 1 - Instruction retired ( ) bit 2 - L1D access (FEAT_SPEv1p4) bit 3 - L1D refill bit 4 - TLB access (FEAT_SPEv1p4) bit 5 - TLB refill bit 6 - Not taken event (FEAT_SPEv1p2) bit 7 - Mispredict bit 8 - Last level cache access (FEAT_SPEv1p4) bit 9 - Last level cache miss (FEAT_SPEv1p4) bit 10 - Remote access (FEAT_SPEv1p4) bit 11 - Misaligned access (FEAT_SPEv1p1) bit 12-15 - IMPLEMENTATION DEFINED ( ) bit 17 - Partial or empty SME or SVE predicate (FEAT_SPEv1p1) bit 18 - Empty SME or SVE predicate (FEAT_SPEv1p1) bit 19 - L2D access (FEAT_SPEv1p4) bit 20 - L2D miss (FEAT_SPEv1p4) bit 21 - Cache data modified (FEAT_SPEv1p4) bit 22 - Recently fetched (FEAT_SPEv1p4) bit 23 - Data snooped (FEAT_SPEv1p4) bit 24 - Streaming SVE mode ( FEAT_SPE_SME) IMPLEMENTATION DEFINED 24 ( FEAT_SPEv1p4) bit 25 - SMCU FEAT_SPE_SME IMPLEMENTATION DEFINED 25 ( FEAT_SPEv1p4) bit 26-31 - IMPLEMENTATION DEFINED ( FEAT_SPEv1p4) bit 48-63 - IMPLEMENTATION DEFINED ( ) IMPLEMENTATION DEFINED (TRM) . SPE IMPDEF ( SME) . FEAT_SPEv1p2 <> ( ) . (): perf record -e arm_spe/event_filter=2/ -- ./mybench : perf record -e arm_spe/event_filter=0x80/ -- ./mybench ( OR) . : branch_filter=1 - (PMSFCR.B) load_filter=1 - (PMSFCR.LD) store_filter=1 - (PMSFCR.ST) (FEAT_SPE_EFT) SIMD : simd_filter=1 - SIMD (PMSFCR.SIMD) float_filter=1 - (PMSFCR.FP) (FEAT_SPE_EFT) mask_ AND . SIMD store_filter=1,simd_filter=1, store_filter_mask=1,simd_filter_mask=1 . : branch_filter_mask=1 - OR AND (PMSFCR.Bm) load_filter_mask=1 - OR AND (PMSFCR.LDm) store_filter_mask=1 - OR AND (PMSFCR.STm) simd_filter_mask=1 - SIMD OR AND (PMSFCR.SIMDm) float_filter_mask=1 - OR AND (PMSFCR.FPm) perf report perf script / SPE . . perf report : Available samples 0 arm_spe// 0 dummy:u 21 l1d-miss 897 l1d-access 5 llc-miss 7 llc-access 2 tlb-miss 1K tlb-access 36 branch 0 remote-access 900 memory 1800 instructions arm_spe// dummy:u . instructions . --itrace=i1i . 1i ( ) (downsampling) . n SPE . SPE: perf report --itrace==bxofmtMai100i (ns) . : perf report --mem-mode (latency) SPE weight Perf Perf script report . o "Cannot find PMU `arm_spe'. Missing kernel support?" KPTI . 'Kernel Requirements' . o "Arm SPE CONTEXT packets not found in the traces." context (root) . PID . . o perf.data ( ) SPE PMU . SAMPLE_ SAMPLE_POP SAMPLE_FEED SAMPLE_COLLISION SAMPLE_FEED_BR. SPE PMU 0 . PMU SPE . per-process (context switching) PMU . PMU (systemwide) SPE . (Discard mode) discard ( Armv8.6 ) PMU SPE ( SAMPLE_* ) (overhead) . SPE ( ) . perf stat : perf record -e arm_spe/discard/ -a -N -B --no-bpf-event -o - > /dev/null & perf stat -e SAMPLE_FEED_LD (Data source filtering) FEAT_SPE_FDS inv_data_src_filter (0 - 63) . 0 - 65535 . IMPDEF ( ) TRM . N N . OR inv_data_src_filter PMSDSFR_EL1 (set) (cleared) . 0 ( ). 0 3 0 3 () (0xFFFFFFFFFFFFFFF6). inv_data_src_filter 0xFFFFFFFFFFFFFFFF . (SEE ALSO) perf-record(1), perf-script(1), perf-report(1), perf-inject(1) perf 09/04/2026 PERF-ARM-SPE(1)