libpfm_intel_skx_unc_cha(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | MODIFIERS | Opcode filtering | AUTHORS | COLOPHON

LIBPFM(3)               Linux Programmer's Manual              LIBPFM(3)

NAME         top

       libpfm_intel_skx_unc_cha - support for Intel Skylake X Server
       CHA-Box uncore PMU

SYNOPSIS         top

       #include <perfmon/pfmlib.h>

       PMU name: skx_unc_cha[0-27]
       PMU desc: Intel Skylake X CHA uncore PMU

DESCRIPTION         top

       The library supports the Intel Skylake X CHA-Box (coherency and
       home agent engine) uncore PMU.  There is one CHA-box PMU per
       physical core. Therefore there are up to twenty-eight identical
       CHA-Box PMU instances numbered from 0 up to possibly 27. On dual-
       socket systems, the number refers to the CHA-Box PMU on the
       socket where the program runs. For instance, if running on CPU18,
       then skx_unc_cha0 refers to the CHA-Box for physical core 0 on
       socket 1. Conversely, if running on CPU0, then the same
       skx_unc_cha0 refers to the CHA-Box for physical core 0 but on
       socket 0.

       Each CHA-Box PMU implements 4 generic counters and two filter
       registers used only with certain events and umasks. The filters
       are either accessed via modifiers (see below) or umasks, such as
       the opcode or cache state filter.

MODIFIERS         top

       The following modifiers are supported on Intel Skylake CHA-Box
       uncore PMU:

       e      Enable edge detection, i.e., count only when there is a
              state transition from no occurrence of the event to at
              least one occurrence. This modifier must be combined with
              a threshold modifier (t) with a value greater or equal to
              one.  This is a boolean modifier.

       t      Set the threshold value. When set to a non-zero value, the
              counter counts the number of C-Box cycles in which the
              number of occurrences of the event is greater or equal to
              the threshold.  This is an integer modifier with values in
              the range [0:255].

       i      Invert the meaning of the event. The counter will now
              count cycles in which the event is not occurring. This is
              a boolean modifier.

       loc    Match on local node target. This filter is only supported
              on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.  This is a
              boolean filter.

       rem    Match on remote node target. This filter is only supported
              on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.  This is a
              boolean filter.

       lmem   Match near memory cacheable. This filter is only supported
              on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.  This is a
              boolean filter.

       rmem   Match not near memory cacheable. This filter is only
              supported on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.
              This is a boolean filter.

       nc     Match non-coherent requests. This filter is only supported
              on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.  This is a
              boolean filter.

       isoc   Match isochronous requests. This filter is only supported
              on UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY.  This is a
              boolean filter.

Opcode filtering         top

       Events UNC_C_TOR_INSERTS and UNC_C_TOR_OCCUPANCY support opcode
       matching. The processor implements two opcode filters. Both are
       used at the same time. The OPC0 umasks correspond to the first
       opcode matcher and OPC1 to the second opcode matcher. If only one
       opcode must be tracked then the unused filter will be set to 0.
       The opcode umasks must be used in combination with a specific
       queue umask otherwise the library will reject the event. The
       umask description shows which queue umask is required for each
       opcode. For instance, OPC0_RFO/OPC1_RFO require the IRQ queue and
       thus the IRQ umask.

       The opcode match umasks can be combined with other modifiers.

AUTHORS         top

       Stephane Eranian <eranian@gmail.com>

COLOPHON         top

       This page is part of the perfmon2 (a performance monitoring
       library) project.  Information about the project can be found at
       ⟨http://perfmon2.sourceforge.net/⟩.  If you have a bug report for
       this manual page, send it to
       perfmon2-devel@lists.sourceforge.net.  This page was obtained
       from the project's upstream Git repository
       ⟨git://git.code.sf.net/p/perfmon2/libpfm4 perfmon2-libpfm4⟩ on
       2024-06-14.  (At that time, the date of the most recent commit
       that was found in the repository was 2024-04-24.)  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for
       the page, or you have corrections or improvements to the
       information in this COLOPHON (which is not part of the original
       manual page), send a mail to man-pages@man7.org

                              January, 2018                    LIBPFM(3)