xref: /freebsd/lib/libpmc/pmc.ibs.3 (revision 98bedca0a4effed7f170be52f7ef3e1ab8a79b11)
1*98bedca0SAli Mashtizadeh.\"
2*98bedca0SAli Mashtizadeh.\" SPDX-License-Identifier: BSD-2-Clause
3*98bedca0SAli Mashtizadeh.\"
4*98bedca0SAli Mashtizadeh.\" Copyright (c) 2026, Netflix, Inc.
5df47355fSAli Mashtizadeh.\"
6df47355fSAli Mashtizadeh.\" Redistribution and use in source and binary forms, with or without
7df47355fSAli Mashtizadeh.\" modification, are permitted provided that the following conditions
8df47355fSAli Mashtizadeh.\" are met:
9df47355fSAli Mashtizadeh.\" 1. Redistributions of source code must retain the above copyright
10df47355fSAli Mashtizadeh.\"    notice, this list of conditions and the following disclaimer.
11df47355fSAli Mashtizadeh.\" 2. Redistributions in binary form must reproduce the above copyright
12df47355fSAli Mashtizadeh.\"    notice, this list of conditions and the following disclaimer in the
13df47355fSAli Mashtizadeh.\"    documentation and/or other materials provided with the distribution.
14df47355fSAli Mashtizadeh.\"
15df47355fSAli Mashtizadeh.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16df47355fSAli Mashtizadeh.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17df47355fSAli Mashtizadeh.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18df47355fSAli Mashtizadeh.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19df47355fSAli Mashtizadeh.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20df47355fSAli Mashtizadeh.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21df47355fSAli Mashtizadeh.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22df47355fSAli Mashtizadeh.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23df47355fSAli Mashtizadeh.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24df47355fSAli Mashtizadeh.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25df47355fSAli Mashtizadeh.\" SUCH DAMAGE.
26df47355fSAli Mashtizadeh.\"
27df47355fSAli Mashtizadeh.Dd March 15, 2026
28df47355fSAli Mashtizadeh.Dt PMC.IBS 3
29df47355fSAli Mashtizadeh.Os
30df47355fSAli Mashtizadeh.Sh NAME
31df47355fSAli Mashtizadeh.Nm pmc.ibs
32df47355fSAli Mashtizadeh.Nd Instruction Based Sampling for
33df47355fSAli Mashtizadeh.Tn AMD
34df47355fSAli MashtizadehCPUs
35df47355fSAli Mashtizadeh.Sh LIBRARY
36df47355fSAli Mashtizadeh.Lb libpmc
37df47355fSAli Mashtizadeh.Sh SYNOPSIS
38df47355fSAli Mashtizadeh.In pmc.h
39df47355fSAli Mashtizadeh.Sh DESCRIPTION
40df47355fSAli MashtizadehAMD Instruction Based Sampling (IBS) was introduced with the K10 family of
41df47355fSAli MashtizadehCPUs.
42df47355fSAli MashtizadehAMD IBS is an alternative approach that samples instructions or micro-ops and
43df47355fSAli Mashtizadehprovides a per-instruction or micro-op breakdown of the sources of stalls.
44df47355fSAli Mashtizadeh.Pp
45df47355fSAli MashtizadehUnlike traditional counters, IBS can only be used in the sampling mode and
46df47355fSAli Mashtizadehprovides extra data embedded in the callchain.
47df47355fSAli MashtizadehIBS events set the PMC_F_MULTIPART flag to signify multiple payload types are
48df47355fSAli Mashtizadehcontained in the callchain.
49df47355fSAli MashtizadehThe first 8 bytes of the callchain contain four tuples with a one byte type and
50df47355fSAli Mashtizadeha one byte length field.
51df47355fSAli MashtizadehThe regular PMC callchain can be found following the multipart payload.
52df47355fSAli Mashtizadeh.Pp
53df47355fSAli MashtizadehIBS only provides two events that analyze instruction fetches and instruction
54df47355fSAli Mashtizadehexecution.
55df47355fSAli MashtizadehThe instruction fetch (ibs-fetch) event provides data on the processor
56df47355fSAli Mashtizadehfront-end including reporting instruction cache and TLB events.
57df47355fSAli MashtizadehThe instruction execution (ibs-op) event provides data on the processor
58df47355fSAli Mashtizadehexecution including reporting mispredictions, data cache and TLB events.
59df47355fSAli MashtizadehYou should use the AMD PMC counters documented in
60df47355fSAli Mashtizadeh.Xr pmc.amd 3
61df47355fSAli Mashtizadehto analyze stalls relating instruction issue including reservation contention.
62df47355fSAli Mashtizadeh.Pp
63df47355fSAli MashtizadehA guide to analyzing IBS data is provided in Appendix G of the
64df47355fSAli Mashtizadeh.Rs
65df47355fSAli Mashtizadeh.%B "Software Optimization Guide for AMD Family 10h and 12h Processors"
66df47355fSAli Mashtizadeh.%N "Publication No. 40546"
67df47355fSAli Mashtizadeh.%D "February 2011"
68df47355fSAli Mashtizadeh.%Q "Advanced Micro Devices, Inc."
69df47355fSAli Mashtizadeh.Re
70df47355fSAli MashtizadehA more recent document should be used for decoding all of the flags and fields
71df47355fSAli Mashtizadehin the IBS data.
72df47355fSAli MashtizadehFor example, see the AMD Zen 5 documentation
73df47355fSAli Mashtizadeh.Rs
74df47355fSAli Mashtizadeh.%B "Processor Programming Reference (PPR) for AMD Family 1Ah Model 02h"
75df47355fSAli Mashtizadeh.%N "Publication No. 57238"
76df47355fSAli Mashtizadeh.%D "March 6, 2026"
77df47355fSAli Mashtizadeh.%Q "Advanced Micro Devices, Inc."
78df47355fSAli Mashtizadeh.Re
79df47355fSAli Mashtizadeh.Ss PMC Features
80df47355fSAli MashtizadehAMD IBS supports the following capabilities.
81df47355fSAli Mashtizadeh.Bl -column "PMC_CAP_INTERRUPT" "Support"
82df47355fSAli Mashtizadeh.It Em Capability Ta Em Support
83df47355fSAli Mashtizadeh.It PMC_CAP_CASCADE Ta \&No
84df47355fSAli Mashtizadeh.It PMC_CAP_EDGE Ta Yes
85df47355fSAli Mashtizadeh.It PMC_CAP_INTERRUPT Ta Yes
86df47355fSAli Mashtizadeh.It PMC_CAP_INVERT Ta \&No
87df47355fSAli Mashtizadeh.It PMC_CAP_READ Ta \&No
88df47355fSAli Mashtizadeh.It PMC_CAP_PRECISE Ta Yes
89df47355fSAli Mashtizadeh.It PMC_CAP_SYSTEM Ta Yes
90df47355fSAli Mashtizadeh.It PMC_CAP_TAGGING Ta \&No
91df47355fSAli Mashtizadeh.It PMC_CAP_THRESHOLD Ta \&No
92df47355fSAli Mashtizadeh.It PMC_CAP_USER Ta \&No
93df47355fSAli Mashtizadeh.It PMC_CAP_WRITE Ta \&No
94df47355fSAli Mashtizadeh.El
95df47355fSAli Mashtizadeh.Pp
96df47355fSAli MashtizadehBy default AMD IBS enables the edge, interrupt, system and precise flags.
97df47355fSAli Mashtizadeh.Ss Event Qualifiers
98df47355fSAli MashtizadehEvent specifiers for AMD IBS can have the following optional
99df47355fSAli Mashtizadehqualifiers:
100df47355fSAli Mashtizadeh.Bl -tag -width "ldlat=value"
101df47355fSAli Mashtizadeh.It Li l3miss
102df47355fSAli MashtizadehConfigure IBS to only sample if an l3miss occurred.
103df47355fSAli Mashtizadeh.It Li ldlat= Ns Ar value
104df47355fSAli MashtizadehConfigure the counter to only sample events with load latencies above
105df47355fSAli Mashtizadeh.Ar ldlat .
106df47355fSAli MashtizadehIBS only supports filtering latencies that are a multiple of 128 and between
107df47355fSAli Mashtizadeh128 and 2048.
108df47355fSAli MashtizadehLoad latency filtering can only be used with ibs-op events and imply the
109df47355fSAli Mashtizadehl3miss qualifier.
110df47355fSAli Mashtizadeh.It Li randomize
111df47355fSAli MashtizadehRandomize the sampling rate.
112df47355fSAli Mashtizadeh.El
113df47355fSAli Mashtizadeh.Ss AMD IBS Events Specifiers
114df47355fSAli MashtizadehThe IBS event class provides only two event specifiers:
115df47355fSAli Mashtizadeh.Bl -tag -width indent
116df47355fSAli Mashtizadeh.It Li ibs-fetch Xo
117df47355fSAli Mashtizadeh.Op ,l3miss
118df47355fSAli Mashtizadeh.Op ,randomize
119df47355fSAli Mashtizadeh.Xc
120df47355fSAli MashtizadehCollect performance samples during instruction fetch.
121df47355fSAli MashtizadehThe
122df47355fSAli Mashtizadeh.Ar randomize
123df47355fSAli Mashtizadehqualifier randomly sets the bottom four bits of the sample rate.
124df47355fSAli Mashtizadeh.It Li ibs-op Xo
125df47355fSAli Mashtizadeh.Op ,l3miss
126df47355fSAli Mashtizadeh.Op ,ldlat= Ns Ar ldlat
127df47355fSAli Mashtizadeh.Op ,randomize
128df47355fSAli Mashtizadeh.Xc
129df47355fSAli MashtizadehCollect performance samples during instruction execution.
130df47355fSAli MashtizadehThe
131df47355fSAli Mashtizadeh.Ar randomize
132df47355fSAli Mashtizadehqualifier, upon reaching the maximum count, restarts the count with a value
133df47355fSAli Mashtizadehbetween 1 and 127.
134df47355fSAli Mashtizadeh.El
135df47355fSAli Mashtizadeh.Pp
136df47355fSAli MashtizadehYou may collect both events at the same time.
137df47355fSAli MashtizadehN.B. AMD discouraged doing so with certain older processors, stating that
138df47355fSAli Mashtizadehsampling both simultaneously perturbs the results.
139df47355fSAli MashtizadehPlease see the processor programming reference for your specific processor.
140df47355fSAli Mashtizadeh.Sh SEE ALSO
141df47355fSAli Mashtizadeh.Xr pmc 3 ,
142df47355fSAli Mashtizadeh.Xr pmc.amd 3 ,
143df47355fSAli Mashtizadeh.Xr pmc.soft 3 ,
144df47355fSAli Mashtizadeh.Xr pmc.tsc 3 ,
145df47355fSAli Mashtizadeh.Xr pmclog 3 ,
146df47355fSAli Mashtizadeh.Xr hwpmc 4
147df47355fSAli Mashtizadeh.Sh HISTORY
148df47355fSAli MashtizadehAMD IBS support was first introduced in
149df47355fSAli Mashtizadeh.Fx 16.0 .
150df47355fSAli Mashtizadeh.Sh AUTHORS
151df47355fSAli MashtizadehAMD IBS support and this manual page were written
152df47355fSAli Mashtizadeh.An Ali Mashtizadeh Aq Mt ali@mashtizadeh.com
153df47355fSAli Mashtizadehand sponsored by Netflix, Inc.
154