'\" t
.\"     Title: perf-mem
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 05/05/2026
.\"    Manual: perf Manual
.\"    Source: perf
.\"  Language: English
.\"
.TH "PERF\-MEM" "1" "05/05/2026" "perf" "perf Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
perf-mem \- Profile memory accesses
.SH "SYNOPSIS"
.sp
.nf
\fIperf mem\fR [<options>] (record [<command>] | report)
.fi
.SH "DESCRIPTION"
.sp
"perf mem record" runs a command and gathers memory operation data from it, into perf\&.data\&. Perf record options are accepted and are passed through\&.
.sp
"perf mem report" displays the result\&. It invokes perf report with the right set of options to display a memory access profile\&. By default, loads and stores are sampled\&. Use the \-t option to limit to loads or stores\&.
.sp
Note that on Intel systems the memory latency reported is the use\-latency, not the pure load (or store latency)\&. Use latency includes any pipeline queueing delays in addition to the memory subsystem latency\&.
.sp
On Arm64 this uses SPE to sample load and store operations, therefore hardware and kernel support is required\&. See \fBperf-arm-spe\fR(1) for a setup guide\&. Due to the statistical nature of SPE sampling, not every memory operation will be sampled\&.
.SH "OPTIONS"
.PP
<command>\&...
.RS 4
Any command you can specify in a shell\&.
.RE
.PP
\-i, \-\-input=<file>
.RS 4
Input file name\&.
.RE
.PP
\-f, \-\-force
.RS 4
Don\(cqt do ownership validation
.RE
.PP
\-t, \-\-type=<type>
.RS 4
Select the memory operation type: load or store (default: load,store)
.RE
.PP
\-D, \-\-dump\-raw\-samples
.RS 4
Dump the raw decoded samples on the screen in a format that is easy to parse with one sample per line\&.
.RE
.PP
\-x, \-\-field\-separator=<separator>
.RS 4
Specify the field separator used when dump raw samples (\-D option)\&. By default, The separator is the space character\&.
.RE
.PP
\-C, \-\-cpu=<cpu>
.RS 4
Monitor only on the list of CPUs provided\&. Multiple CPUs can be provided as a comma\-separated list with no space: 0,1\&. Ranges of CPUs are specified with \-: 0\-2\&. Default is to monitor all CPUS\&.
.RE
.PP
\-U, \-\-hide\-unresolved
.RS 4
Only display entries resolved to a symbol\&.
.RE
.PP
\-p, \-\-phys\-data
.RS 4
Record/Report sample physical addresses
.RE
.PP
\-\-data\-page\-size
.RS 4
Record/Report sample data address page size
.RE
.SH "RECORD OPTIONS"
.PP
\-e, \-\-event <event>
.RS 4
Event selector\&. Use
\fIperf mem record \-e list\fR
to list available events\&.
.RE
.PP
\-K, \-\-all\-kernel
.RS 4
Configure all used events to run in kernel space\&.
.RE
.PP
\-U, \-\-all\-user
.RS 4
Configure all used events to run in user space\&.
.RE
.PP
\-v, \-\-verbose
.RS 4
Be more verbose (show counter open errors, etc)
.RE
.PP
\-\-ldlat <n>
.RS 4
Specify desired latency for loads event\&. Supported on Intel and Arm64 processors only\&. Ignored on other archs\&.
.RE
.sp
In addition, for report all perf report options are valid, and for record all perf record options\&.
.SH "SEE ALSO"
.sp
\fBperf-record\fR(1), \fBperf-report\fR(1), \fBperf-arm-spe\fR(1)
