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