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
       2020-08-13.  (At that time, the date of the most recent commit that
       was found in the repository was 2020-08-12.)  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)