How to monitor the full range of CPU performance events

本文介绍如何使用现代CPU中的硬件计数器全面监控CPU性能事件。通过GNU/Linux perf工具示例展示如何收集如缓存访问、分支预测等关键性能指标,并提供如何利用perfmon2/libpfm库获取原始事件代码的具体步骤。

转自:http://www.bnikolic.co.uk/blog/hpc-prof-events.html

How to monitor the full range of CPU performance events



Modern CPUs contain hardware counters that are able to monitor a wide range of events. A simple invocation of GNU/Linux perf (I wrote about them herestat tool for example uses this to give the following information:

perf stat -d  md5sum *

        578.920753 task-clock                #    0.995 CPUs utilized
               211 context-switches          #    0.000 M/sec
                 4 CPU-migrations            #    0.000 M/sec
               212 page-faults               #    0.000 M/sec
     1,744,441,333 cycles                    #    3.013 GHz                     [20.22%]
     1,064,408,505 stalled-cycles-frontend   #   61.02% frontend cycles idle    [30.68%]
       104,014,063 stalled-cycles-backend    #    5.96% backend  cycles idle    [41.00%]
     2,401,954,846 instructions              #    1.38  insns per cycle
                                             #    0.44  stalled cycles per insn [51.18%]
        14,519,547 branches                  #   25.080 M/sec                   [61.21%]
           109,768 branch-misses             #    0.76% of all branches         [61.48%]
       266,601,318 L1-dcache-loads           #  460.514 M/sec                   [50.90%]
        13,539,746 L1-dcache-load-misses     #    5.08% of all L1-dcache hits   [50.21%]
                 0 LLC-loads                 #    0.000 M/sec                   [39.19%]
                 0 LLC-load-misses           #    0.00% of all LL-cache hits    [ 9.63%]

       0.581869522 seconds time elapsed


showing lots of useful information like the number of times the level one cache was accessed for data (L1-dcache-loads) and the number of those access that resulted in a cache miss (L1-dcache-load-misses). Modern processors have however many more available counters and also there are a number of options that can be applied to each counter.

In order to make full use of these counters one currently has to specify them to the perf tools as a raw hexadecimal code (-erXXXX where XXXX is the code). This raises two obvious questions:

  • What codes to use?
  • What does all this information mean?

I'll cover the second of these in later posts, but for time being here is how to figure out raw codes to use:

  1. Get the latest version of perfmon2/libpfm (h/t this developerworks article):

    git clone git://perfmon2.git.sourceforge.net/gitroot/perfmon2/libpfm4
    cd libpfm4
    make
    
  2. Run the showevtinfo program (in examples subdirectory) to get a list of all available events, and the masks and modifiers that are supported (see the output below for an example of the full output)

  3. Figure out what events and what with masks and modifiers you want to use. The masks are prefixed by Umask and are given as hexadecimal numbers and also symbolic names in the square brackets. The modifiers are prefixed by Modif and their names are also in square brackets.

  4. Use the check_events program (also in examples sub-directory) to convert the event, umask and modifiers into a raw code. You can do this by running the command as:

    check_events <event name>:<umask>[(:modifers)*]
    

    i.e., you supply the event name, the umask and multiple modifiers all separated by the colon character. The program will then print out, amongst other things, an raw event specification, for example:

    Codes          : 0x531003
    
  5. This hexadecimal code can be used as parameter to GNU.Linux perf tools, for example to perf stat by supplying it with -er531003 option

That is it -- the next step is interpreting the counters and adjusting your program to improve its performance!

Full output of showevtinfo

Here is the full output of the showevtinfo program on my laptop:

Supported PMU models:
     [7, netburst, "Pentium4"]
     [8, netburst_p, "Pentium4 (Prescott)"]
     [11, core, "Intel Core"]
     [14, atom, "Intel Atom"]
     [15, nhm, "Intel Nehalem"]
     [16, nhm_ex, "Intel Nehalem EX"]
     [17, nhm_unc, "Intel Nehalem uncore"]
     [18, ix86arch, "Intel X86 architectural PMU"]
     [51, perf, "perf_events generic PMU"]
     [52, wsm, "Intel Westmere (single-socket)"]
     [53, wsm_dp, "Intel Westmere DP"]
     [54, wsm_unc, "Intel Westmere uncore"]
     [55, amd64_k7, "AMD64 K7"]
     [56, amd64_k8_revb, "AMD64 K8 RevB"]
     [57, amd64_k8_revc, "AMD64 K8 RevC"]
     [58, amd64_k8_revd, "AMD64 K8 RevD"]
     [59, amd64_k8_reve, "AMD64 K8 RevE"]
     [60, amd64_k8_revf, "AMD64 K8 RevF"]
     [61, amd64_k8_revg, "AMD64 K8 RevG"]
     [62, amd64_fam10h_barcelona, "AMD64 Fam10h Barcelona"]
     [63, amd64_fam10h_shanghai, "AMD64 Fam10h Shanghai"]
     [64, amd64_fam10h_istanbul, "AMD64 Fam10h Istanbul"]
     [68, snb, "Intel Sandy Bridge"]
     [69, amd64_fam14h_bobcat, "AMD64 Fam14h Bobcat"]
     [70, amd64_fam15h_interlagos, "AMD64 Fam15h Interlagos"]
     [71, snb_ep, "Intel Sandy Bridge EP"]
     [72, amd64_fam12h_llano, "AMD64 Fam12h Llano"]
     [73, amd64_fam11h_turion, "AMD64 Fam11h Turion"]
     [74, ivb, "Intel Ivy Bridge"]
Detected PMU models:
     [18, ix86arch, "Intel X86 architectural PMU", 7 events, 1 max encoding, 7 counters, core PMU]
     [51, perf, "perf_events generic PMU", 80 events, 1 max encoding, 0 counters, OS generic PMU]
     [68, snb, "Intel Sandy Bridge", 79 events, 2 max encoding, 11 counters, core PMU]
Total events: 2332 available, 166 supported
#-----------------------------
IDX   : 37748736
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : UNHALTED_CORE_CYCLES
Equiv         : None
Flags    : None
Desc     : count core clock cycles whenever the clock signal on the specific core is running (not halted)
Code     : 0x3c
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748737
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : INSTRUCTION_RETIRED
Equiv         : None
Flags    : None
Desc     : count the number of instructions at retirement. For instructions that consists of multiple micro-ops, this event counts the retirement of the last micro-op of the instruction
Code     : 0xc0
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748738
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : UNHALTED_REFERENCE_CYCLES
Equiv         : None
Flags    : None
Desc     : count reference clock cycles while the clock signal on the specific core is running. The reference clock operates at a fixed frequency, irrespective of core freqeuncy changes due to performance state transitions
Code     : 0x13c
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748739
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : LLC_REFERENCES
Equiv         : None
Flags    : None
Desc     : count each request originating from the core to reference a cache line in the last level cache. The count may include speculation, but excludes cache line fills due to hardware prefetch
Code     : 0x4f2e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748740
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : LLC_MISSES
Equiv         : None
Flags    : None
Desc     : count each cache miss condition for references to the last level cache. The event count may include speculation, but excludes cache line fills due to hardware prefetch
Code     : 0x412e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748741
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : BRANCH_INSTRUCTIONS_RETIRED
Equiv         : None
Flags    : None
Desc     : count branch instructions at retirement. Specifically, this event counts the retirement of the last micro-op of a branch instruction
Code     : 0xc4
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 37748742
PMU name : ix86arch (Intel X86 architectural PMU)
Name     : MISPREDICTED_BRANCH_RETIRED
Equiv         : None
Flags    : None
Desc     : count mispredicted branch instructions at retirement. Specifically, this event counts at retirement of the last micro-op of a branch instruction in the architectural path of the execution and experienced misprediction in the branch prediction hardware
Code     : 0xc5
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 106954752
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CPU_CYCLES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_CPU_CYCLES
Code     : 0x0
#-----------------------------
IDX   : 106954753
PMU name : perf (perf_events generic PMU)
Name     : CYCLES
Equiv         : PERF_COUNT_HW_CPU_CYCLES
Flags    : None
Desc     : PERF_COUNT_HW_CPU_CYCLES
Code     : 0x0
#-----------------------------
IDX   : 106954754
PMU name : perf (perf_events generic PMU)
Name     : CPU-CYCLES
Equiv         : PERF_COUNT_HW_CPU_CYCLES
Flags    : None
Desc     : PERF_COUNT_HW_CPU_CYCLES
Code     : 0x0
#-----------------------------
IDX   : 106954755
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_INSTRUCTIONS
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_INSTRUCTIONS
Code     : 0x1
#-----------------------------
IDX   : 106954756
PMU name : perf (perf_events generic PMU)
Name     : INSTRUCTIONS
Equiv         : PERF_COUNT_HW_INSTRUCTIONS
Flags    : None
Desc     : PERF_COUNT_HW_INSTRUCTIONS
Code     : 0x1
#-----------------------------
IDX   : 106954757
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_REFERENCES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_CACHE_REFERENCES
Code     : 0x2
#-----------------------------
IDX   : 106954758
PMU name : perf (perf_events generic PMU)
Name     : CACHE-REFERENCES
Equiv         : PERF_COUNT_HW_CACHE_REFERENCES
Flags    : None
Desc     : PERF_COUNT_HW_CACHE_REFERENCES
Code     : 0x2
#-----------------------------
IDX   : 106954759
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_MISSES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_CACHE_MISSES
Code     : 0x3
#-----------------------------
IDX   : 106954760
PMU name : perf (perf_events generic PMU)
Name     : CACHE-MISSES
Equiv         : PERF_COUNT_HW_CACHE_MISSES
Flags    : None
Desc     : PERF_COUNT_HW_CACHE_MISSES
Code     : 0x3
#-----------------------------
IDX   : 106954761
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Code     : 0x4
#-----------------------------
IDX   : 106954762
PMU name : perf (perf_events generic PMU)
Name     : BRANCH-INSTRUCTIONS
Equiv         : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Flags    : None
Desc     : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Code     : 0x4
#-----------------------------
IDX   : 106954763
PMU name : perf (perf_events generic PMU)
Name     : BRANCHES
Equiv         : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Flags    : None
Desc     : PERF_COUNT_HW_BRANCH_INSTRUCTIONS
Code     : 0x4
#-----------------------------
IDX   : 106954764
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_BRANCH_MISSES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_BRANCH_MISSES
Code     : 0x5
#-----------------------------
IDX   : 106954765
PMU name : perf (perf_events generic PMU)
Name     : BRANCH-MISSES
Equiv         : PERF_COUNT_HW_BRANCH_MISSES
Flags    : None
Desc     : PERF_COUNT_HW_BRANCH_MISSES
Code     : 0x5
#-----------------------------
IDX   : 106954766
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_BUS_CYCLES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_BUS_CYCLES
Code     : 0x6
#-----------------------------
IDX   : 106954767
PMU name : perf (perf_events generic PMU)
Name     : BUS-CYCLES
Equiv         : PERF_COUNT_HW_BUS_CYCLES
Flags    : None
Desc     : PERF_COUNT_HW_BUS_CYCLES
Code     : 0x6
#-----------------------------
IDX   : 106954768
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Code     : 0x7
#-----------------------------
IDX   : 106954769
PMU name : perf (perf_events generic PMU)
Name     : STALLED-CYCLES-FRONTEND
Equiv         : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Code     : 0x7
#-----------------------------
IDX   : 106954770
PMU name : perf (perf_events generic PMU)
Name     : IDLE-CYCLES-FRONTEND
Equiv         : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_FRONTEND
Code     : 0x7
#-----------------------------
IDX   : 106954771
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Code     : 0x8
#-----------------------------
IDX   : 106954772
PMU name : perf (perf_events generic PMU)
Name     : STALLED-CYCLES-BACKEND
Equiv         : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Code     : 0x8
#-----------------------------
IDX   : 106954773
PMU name : perf (perf_events generic PMU)
Name     : IDLE-CYCLES-BACKEND
Equiv         : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Flags    : None
Desc     : PERF_COUNT_HW_STALLED_CYCLES_BACKEND
Code     : 0x8
#-----------------------------
IDX   : 106954774
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_REF_CPU_CYCLES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_HW_REF_CPU_CYCLES
Code     : 0x9
#-----------------------------
IDX   : 106954775
PMU name : perf (perf_events generic PMU)
Name     : REF-CYCLES
Equiv         : PERF_COUNT_HW_REF_CPU_CYCLES
Flags    : None
Desc     : PERF_COUNT_HW_REF_CPU_CYCLES
Code     : 0x9
#-----------------------------
IDX   : 106954776
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_CPU_CLOCK
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_CPU_CLOCK
Code     : 0x0
#-----------------------------
IDX   : 106954777
PMU name : perf (perf_events generic PMU)
Name     : CPU-CLOCK
Equiv         : PERF_COUNT_SW_CPU_CLOCK
Flags    : None
Desc     : PERF_COUNT_SW_CPU_CLOCK
Code     : 0x0
#-----------------------------
IDX   : 106954778
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_TASK_CLOCK
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_TASK_CLOCK
Code     : 0x1
#-----------------------------
IDX   : 106954779
PMU name : perf (perf_events generic PMU)
Name     : TASK-CLOCK
Equiv         : PERF_COUNT_SW_TASK_CLOCK
Flags    : None
Desc     : PERF_COUNT_SW_TASK_CLOCK
Code     : 0x1
#-----------------------------
IDX   : 106954780
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_PAGE_FAULTS
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS
Code     : 0x2
#-----------------------------
IDX   : 106954781
PMU name : perf (perf_events generic PMU)
Name     : PAGE-FAULTS
Equiv         : PERF_COUNT_SW_PAGE_FAULTS
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS
Code     : 0x2
#-----------------------------
IDX   : 106954782
PMU name : perf (perf_events generic PMU)
Name     : FAULTS
Equiv         : PERF_COUNT_SW_PAGE_FAULTS
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS
Code     : 0x2
#-----------------------------
IDX   : 106954783
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_CONTEXT_SWITCHES
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_CONTEXT_SWITCHES
Code     : 0x3
#-----------------------------
IDX   : 106954784
PMU name : perf (perf_events generic PMU)
Name     : CONTEXT-SWITCHES
Equiv         : PERF_COUNT_SW_CONTEXT_SWITCHES
Flags    : None
Desc     : PERF_COUNT_SW_CONTEXT_SWITCHES
Code     : 0x3
#-----------------------------
IDX   : 106954785
PMU name : perf (perf_events generic PMU)
Name     : CS
Equiv         : PERF_COUNT_SW_CONTEXT_SWITCHES
Flags    : None
Desc     : PERF_COUNT_SW_CONTEXT_SWITCHES
Code     : 0x3
#-----------------------------
IDX   : 106954786
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_CPU_MIGRATIONS
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_CPU_MIGRATIONS
Code     : 0x4
#-----------------------------
IDX   : 106954787
PMU name : perf (perf_events generic PMU)
Name     : CPU-MIGRATIONS
Equiv         : PERF_COUNT_SW_CPU_MIGRATIONS
Flags    : None
Desc     : PERF_COUNT_SW_CPU_MIGRATIONS
Code     : 0x4
#-----------------------------
IDX   : 106954788
PMU name : perf (perf_events generic PMU)
Name     : MIGRATIONS
Equiv         : PERF_COUNT_SW_CPU_MIGRATIONS
Flags    : None
Desc     : PERF_COUNT_SW_CPU_MIGRATIONS
Code     : 0x4
#-----------------------------
IDX   : 106954789
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_PAGE_FAULTS_MIN
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS_MIN
Code     : 0x5
#-----------------------------
IDX   : 106954790
PMU name : perf (perf_events generic PMU)
Name     : MINOR-FAULTS
Equiv         : PERF_COUNT_SW_PAGE_FAULTS_MIN
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS_MIN
Code     : 0x5
#-----------------------------
IDX   : 106954791
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_SW_PAGE_FAULTS_MAJ
Equiv         : None
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS_MAJ
Code     : 0x6
#-----------------------------
IDX   : 106954792
PMU name : perf (perf_events generic PMU)
Name     : MAJOR-FAULTS
Equiv         : PERF_COUNT_SW_PAGE_FAULTS_MAJ
Flags    : None
Desc     : PERF_COUNT_SW_PAGE_FAULTS_MAJ
Code     : 0x6
#-----------------------------
IDX   : 106954793
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_L1D
Equiv         : None
Flags    : None
Desc     : L1 data cache
Code     : 0x0
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x100 : PMU : [WRITE] : None : write access
Umask-02 : 0x200 : PMU : [PREFETCH] : None : prefetch access
Umask-03 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-04 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954794
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-LOADS
Equiv         : PERF_COUNT_HW_CACHE_L1D:READ:ACCESS
Flags    : None
Desc     : L1 cache load accesses
Code     : 0x0
#-----------------------------
IDX   : 106954795
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_L1D:READ:MISS
Flags    : None
Desc     : L1 cache load misses
Code     : 0x0
#-----------------------------
IDX   : 106954796
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-STORES
Equiv         : PERF_COUNT_HW_CACHE_L1D:WRITE:ACCESS
Flags    : None
Desc     : L1 cache store accesses
Code     : 0x0
#-----------------------------
IDX   : 106954797
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-STORE-MISSES
Equiv         : PERF_COUNT_HW_CACHE_L1D:WRITE:MISS
Flags    : None
Desc     : L1 cache store misses
Code     : 0x0
#-----------------------------
IDX   : 106954798
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-PREFETCHES
Equiv         : PERF_COUNT_HW_CACHE_L1D:PREFETCH:ACCESS
Flags    : None
Desc     : L1 cache prefetch accesses
Code     : 0x0
#-----------------------------
IDX   : 106954799
PMU name : perf (perf_events generic PMU)
Name     : L1-DCACHE-PREFETCH-MISSES
Equiv         : PERF_COUNT_HW_CACHE_L1D:PREFETCH:MISS
Flags    : None
Desc     : L1 cache prefetch misses
Code     : 0x0
#-----------------------------
IDX   : 106954800
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_L1I
Equiv         : None
Flags    : None
Desc     : L1 instruction cache
Code     : 0x1
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x200 : PMU : [PREFETCH] : None : prefetch access
Umask-02 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-03 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954801
PMU name : perf (perf_events generic PMU)
Name     : L1-ICACHE-LOADS
Equiv         : PERF_COUNT_HW_CACHE_L1I:READ:ACCESS
Flags    : None
Desc     : L1I cache load accesses
Code     : 0x1
#-----------------------------
IDX   : 106954802
PMU name : perf (perf_events generic PMU)
Name     : L1-ICACHE-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_L1I:READ:MISS
Flags    : None
Desc     : L1I cache load misses
Code     : 0x1
#-----------------------------
IDX   : 106954803
PMU name : perf (perf_events generic PMU)
Name     : L1-ICACHE-PREFETCHES
Equiv         : PERF_COUNT_HW_CACHE_L1I:PREFETCH:ACCESS
Flags    : None
Desc     : L1I cache prefetch accesses
Code     : 0x1
#-----------------------------
IDX   : 106954804
PMU name : perf (perf_events generic PMU)
Name     : L1-ICACHE-PREFETCH-MISSES
Equiv         : PERF_COUNT_HW_CACHE_L1I:PREFETCH:MISS
Flags    : None
Desc     : L1I cache prefetch misses
Code     : 0x1
#-----------------------------
IDX   : 106954805
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_LL
Equiv         : None
Flags    : None
Desc     : Last level cache
Code     : 0x2
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x100 : PMU : [WRITE] : None : write access
Umask-02 : 0x200 : PMU : [PREFETCH] : None : prefetch access
Umask-03 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-04 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954806
PMU name : perf (perf_events generic PMU)
Name     : LLC-LOADS
Equiv         : PERF_COUNT_HW_CACHE_LL:READ:ACCESS
Flags    : None
Desc     : Last level cache load accesses
Code     : 0x2
#-----------------------------
IDX   : 106954807
PMU name : perf (perf_events generic PMU)
Name     : LLC-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_LL:READ:MISS
Flags    : None
Desc     : Last level cache load misses
Code     : 0x2
#-----------------------------
IDX   : 106954808
PMU name : perf (perf_events generic PMU)
Name     : LLC-STORES
Equiv         : PERF_COUNT_HW_CACHE_LL:WRITE:ACCESS
Flags    : None
Desc     : Last level cache store accesses
Code     : 0x2
#-----------------------------
IDX   : 106954809
PMU name : perf (perf_events generic PMU)
Name     : LLC-STORE-MISSES
Equiv         : PERF_COUNT_HW_CACHE_LL:WRITE:MISS
Flags    : None
Desc     : Last level cache store misses
Code     : 0x2
#-----------------------------
IDX   : 106954810
PMU name : perf (perf_events generic PMU)
Name     : LLC-PREFETCHES
Equiv         : PERF_COUNT_HW_CACHE_LL:PREFETCH:ACCESS
Flags    : None
Desc     : Last level cache prefetch accesses
Code     : 0x2
#-----------------------------
IDX   : 106954811
PMU name : perf (perf_events generic PMU)
Name     : LLC-PREFETCH-MISSES
Equiv         : PERF_COUNT_HW_CACHE_LL:PREFETCH:MISS
Flags    : None
Desc     : Last level cache prefetch misses
Code     : 0x2
#-----------------------------
IDX   : 106954812
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_DTLB
Equiv         : None
Flags    : None
Desc     : Data Translation Lookaside Buffer
Code     : 0x3
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x100 : PMU : [WRITE] : None : write access
Umask-02 : 0x200 : PMU : [PREFETCH] : None : prefetch access
Umask-03 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-04 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954813
PMU name : perf (perf_events generic PMU)
Name     : DTLB-LOADS
Equiv         : PERF_COUNT_HW_CACHE_DTLB:READ:ACCESS
Flags    : None
Desc     : Data TLB load accesses
Code     : 0x3
#-----------------------------
IDX   : 106954814
PMU name : perf (perf_events generic PMU)
Name     : DTLB-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_DTLB:READ:MISS
Flags    : None
Desc     : Data TLB load misses
Code     : 0x3
#-----------------------------
IDX   : 106954815
PMU name : perf (perf_events generic PMU)
Name     : DTLB-STORES
Equiv         : PERF_COUNT_HW_CACHE_DTLB:WRITE:ACCESS
Flags    : None
Desc     : Data TLB store accesses
Code     : 0x3
#-----------------------------
IDX   : 106954816
PMU name : perf (perf_events generic PMU)
Name     : DTLB-STORE-MISSES
Equiv         : PERF_COUNT_HW_CACHE_DTLB:WRITE:MISS
Flags    : None
Desc     : Data TLB store misses
Code     : 0x3
#-----------------------------
IDX   : 106954817
PMU name : perf (perf_events generic PMU)
Name     : DTLB-PREFETCHES
Equiv         : PERF_COUNT_HW_CACHE_DTLB:PREFETCH:ACCESS
Flags    : None
Desc     : Data TLB prefetch accesses
Code     : 0x3
#-----------------------------
IDX   : 106954818
PMU name : perf (perf_events generic PMU)
Name     : DTLB-PREFETCH-MISSES
Equiv         : PERF_COUNT_HW_CACHE_DTLB:PREFETCH:MISS
Flags    : None
Desc     : Data TLB prefetch misses
Code     : 0x3
#-----------------------------
IDX   : 106954819
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_ITLB
Equiv         : None
Flags    : None
Desc     : Instruction Translation Lookaside Buffer
Code     : 0x4
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-02 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954820
PMU name : perf (perf_events generic PMU)
Name     : ITLB-LOADS
Equiv         : PERF_COUNT_HW_CACHE_ITLB:READ:ACCESS
Flags    : None
Desc     : Instruction TLB load accesses
Code     : 0x4
#-----------------------------
IDX   : 106954821
PMU name : perf (perf_events generic PMU)
Name     : ITLB-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_ITLB:READ:MISS
Flags    : None
Desc     : Instruction TLB load misses
Code     : 0x4
#-----------------------------
IDX   : 106954822
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_BPU
Equiv         : None
Flags    : None
Desc     : Branch Prediction Unit
Code     : 0x5
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-02 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954823
PMU name : perf (perf_events generic PMU)
Name     : BRANCH-LOADS
Equiv         : PERF_COUNT_HW_CACHE_BPU:READ:ACCESS
Flags    : None
Desc     : Branch  load accesses
Code     : 0x5
#-----------------------------
IDX   : 106954824
PMU name : perf (perf_events generic PMU)
Name     : BRANCH-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_BPU:READ:MISS
Flags    : None
Desc     : Branch  load misses
Code     : 0x5
#-----------------------------
IDX   : 106954825
PMU name : perf (perf_events generic PMU)
Name     : PERF_COUNT_HW_CACHE_NODE
Equiv         : None
Flags    : None
Desc     : Node memory access
Code     : 0x6
Umask-00 : 0x00 : PMU : [READ] : None : read access
Umask-01 : 0x100 : PMU : [WRITE] : None : write access
Umask-02 : 0x200 : PMU : [PREFETCH] : None : prefetch access
Umask-03 : 0x00 : PMU : [ACCESS] : None : hit access
Umask-04 : 0x10000 : PMU : [MISS] : None : miss access
#-----------------------------
IDX   : 106954826
PMU name : perf (perf_events generic PMU)
Name     : NODE-LOADS
Equiv         : PERF_COUNT_HW_CACHE_NODE:READ:ACCESS
Flags    : None
Desc     : Node  load accesses
Code     : 0x6
#-----------------------------
IDX   : 106954827
PMU name : perf (perf_events generic PMU)
Name     : NODE-LOAD-MISSES
Equiv         : PERF_COUNT_HW_CACHE_NODE:READ:MISS
Flags    : None
Desc     : Node  load misses
Code     : 0x6
#-----------------------------
IDX   : 106954828
PMU name : perf (perf_events generic PMU)
Name     : NODE-STORES
Equiv         : PERF_COUNT_HW_CACHE_NODE:WRITE:ACCESS
Flags    : None
Desc     : Node  store accesses
Code     : 0x6
#-----------------------------
IDX   : 106954829
PMU name : perf (perf_events generic PMU)
Name     : NODE-STORE-MISSES
Equiv         : PERF_COUNT_HW_CACHE_NODE:WRITE:MISS
Flags    : None
Desc     : Node  store misses
Code     : 0x6
#-----------------------------
IDX   : 106954830
PMU name : perf (perf_events generic PMU)
Name     : NODE-PREFETCHES
Equiv         : PERF_COUNT_HW_CACHE_NODE:PREFETCH:ACCESS
Flags    : None
Desc     : Node  prefetch accesses
Code     : 0x6
#-----------------------------
IDX   : 106954831
PMU name : perf (perf_events generic PMU)
Name     : NODE-PREFETCH-MISSES
Equiv         : PERF_COUNT_HW_CACHE_NODE:PREFETCH:MISS
Flags    : None
Desc     : Node  prefetch misses
Code     : 0x6
#-----------------------------
IDX   : 142606336
PMU name : snb (Intel Sandy Bridge)
Name     : AGU_BYPASS_CANCEL
Equiv         : None
Flags    : None
Desc     : Number of executed load operations with all the following traits: 1. addressing of the format [base + offset], 2. the offset is between 1 and 2047, 3. the address specified in the base register is in one page and the address [base+offset] is in another page
Code     : 0xb6
Umask-00 : 0x01 : PMU : [COUNT] : [default] : This event counts executed load operations
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606337
PMU name : snb (Intel Sandy Bridge)
Name     : ARITH
Equiv         : None
Flags    : None
Desc     : Counts arithmetic multiply operations
Code     : 0x14
Umask-00 : 0x01 : PMU : [FPU_DIV_ACTIVE] : None : Cycles that the divider is active, includes integer and floating point
Umask-01 : 0x10401 : PMU : [FPU_DIV] : None : Alias to FPU_DIV_ACTIVE:c=1:e=1
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606338
PMU name : snb (Intel Sandy Bridge)
Name     : BACLEARS
Equiv         : None
Flags    : None
Desc     : Branch resteered
Code     : 0xe6
Umask-00 : 0x1f : PMU : [ANY] : [default] : Counts the number of times the front end is resteered, mainly when the BPU cannot provide a correct prediction and this is corrected by other branch handling mechanisms at the front end
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606339
PMU name : snb (Intel Sandy Bridge)
Name     : BR_INST_EXEC
Equiv         : None
Flags    : None
Desc     : Branch instructions executed
Code     : 0x88
Umask-00 : 0x41 : PMU : [NONTAKEN_COND] : None : All macro conditional non-taken branch instructions
Umask-01 : 0x81 : PMU : [TAKEN_COND] : None : All macro conditional taken branch instructions
Umask-02 : 0x42 : PMU : [NONTAKEN_DIRECT_JUMP] : None : All macro unconditional non-taken branch instructions, excluding calls and indirects
Umask-03 : 0x82 : PMU : [TAKEN_DIRECT_JUMP] : None : All macro unconditional taken branch instructions, excluding calls and indirects
Umask-04 : 0x44 : PMU : [NONTAKEN_INDIRECT_JUMP_NON_CALL_RET] : None : All non-taken indirect branches that are not calls nor returns
Umask-05 : 0x84 : PMU : [TAKEN_INDIRECT_JUMP_NON_CALL_RET] : None : All taken indirect branches that are not calls nor returns
Umask-06 : 0x88 : PMU : [TAKEN_RETURN_NEAR] : None : All taken indirect branches that have a return mnemonic
Umask-07 : 0x90 : PMU : [TAKEN_DIRECT_NEAR_CALL] : None : All taken non-indirect calls
Umask-08 : 0xa0 : PMU : [TAKEN_INDIRECT_NEAR_CALL] : None : All taken indirect calls, including both register and memory indirect
Umask-09 : 0xff : PMU : [ALL_BRANCHES] : [default] : All near executed branches instructions (not necessarily retired)
Umask-10 : 0xc1 : PMU : [ALL_CONDITIONAL] : None : All macro conditional branch instructions
Umask-11 : 0xc1 : PMU : [ANY_COND] : None : Alias to ALL_CONDITIONAL
Umask-12 : 0xc4 : PMU : [ANY_INDIRECT_JUMP_NON_CALL_RET] : None : All indirect branches that are not calls nor returns
Umask-13 : 0xd0 : PMU : [ANY_DIRECT_NEAR_CALL] : None : All non-indirect calls
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606340
PMU name : snb (Intel Sandy Bridge)
Name     : BR_INST_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Retired branch instructions
Code     : 0xc4
Umask-00 : 0x04 : PMU : [ALL_BRANCHES] : [default] [precise] : All taken and not taken macro branches including far branches (Precise Event)
Umask-01 : 0x01 : PMU : [CONDITIONAL] : [precise] : All taken and not taken macro conditional branch instructions (Precise Event)
Umask-02 : 0x40 : PMU : [FAR_BRANCH] : [precise] : Number of far branch instructions retired (Precise Event)
Umask-03 : 0x02 : PMU : [NEAR_CALL] : [precise] : All macro direct and indirect near calls, does not count far calls (Precise Event)
Umask-04 : 0x08 : PMU : [NEAR_RETURN] : [precise] : Number of near ret instructions retired (Precise Event)
Umask-05 : 0x20 : PMU : [NEAR_TAKEN] : [precise] : Number of near branch taken instructions retired (Precise Event)
Umask-06 : 0x10 : PMU : [NOT_TAKEN] : [precise] : All not taken macro branch instructions retired (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606341
PMU name : snb (Intel Sandy Bridge)
Name     : BR_MISP_EXEC
Equiv         : None
Flags    : None
Desc     : Mispredicted branches executed
Code     : 0x89
Umask-00 : 0x41 : PMU : [NONTAKEN_COND] : None : All non-taken mispredicted macro conditional branch instructions
Umask-01 : 0x81 : PMU : [TAKEN_COND] : None : All taken mispredicted macro conditional branch instructions
Umask-02 : 0x44 : PMU : [NONTAKEN_INDIRECT_JUMP_NON_CALL_RET] : None : All non-taken mispredicted indirect branches that are not calls nor returns
Umask-03 : 0x84 : PMU : [TAKEN_INDIRECT_JUMP_NON_CALL_RET] : None : All taken mispredicted indirect branches that are not calls nor returns
Umask-04 : 0x48 : PMU : [NONTAKEN_RETURN_NEAR] : None : All non-taken mispredicted indirect branches that have a return mnemonic
Umask-05 : 0x88 : PMU : [TAKEN_RETURN_NEAR] : None : All taken mispredicted indirect branches that have a return mnemonic
Umask-06 : 0x50 : PMU : [NONTAKEN_DIRECT_NEAR_CALL] : None : All non-taken mispredicted non-indirect calls
Umask-07 : 0x90 : PMU : [TAKEN_DIRECT_NEAR_CALL] : None : All taken mispredicted non-indirect calls
Umask-08 : 0x60 : PMU : [NONTAKEN_INDIRECT_NEAR_CALL] : None : All nontaken mispredicted indirect calls, including both register and memory indirect
Umask-09 : 0xa0 : PMU : [TAKEN_INDIRECT_NEAR_CALL] : None : All taken mispredicted indirect calls, including both register and memory indirect
Umask-10 : 0xc1 : PMU : [ANY_COND] : None : All mispredicted macro conditional branch instructions
Umask-11 : 0xc8 : PMU : [ANY_RETURN_NEAR] : None : All mispredicted indirect branches that have a return mnemonic
Umask-12 : 0xd0 : PMU : [ANY_DIRECT_NEAR_CALL] : None : All mispredicted non-indirect calls
Umask-13 : 0xc4 : PMU : [ANY_INDIRECT_JUMP_NON_CALL_RET] : None : All mispredicted indirect branches that are not calls nor returns
Umask-14 : 0xff : PMU : [ALL_BRANCHES] : [default] : All mispredicted branch instructions
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606342
PMU name : snb (Intel Sandy Bridge)
Name     : BR_MISP_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Mispredicted retired branches
Code     : 0xc5
Umask-00 : 0x04 : PMU : [ALL_BRANCHES] : [default] [precise] : All mispredicted macro branches (Precise Event)
Umask-01 : 0x01 : PMU : [CONDITIONAL] : [precise] : All mispredicted macro conditional branch instructions (Precise Event)
Umask-02 : 0x02 : PMU : [NEAR_CALL] : [precise] : All macro direct and indirect near calls (Precise Event)
Umask-03 : 0x10 : PMU : [NOT_TAKEN] : [precise] : Number of branch instructions retired that were mispredicted and not-taken (Precise Event)
Umask-04 : 0x20 : PMU : [TAKEN] : [precise] : Number of branch instructions retired that were mispredicted and taken (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606343
PMU name : snb (Intel Sandy Bridge)
Name     : BRANCH_INSTRUCTIONS_RETIRED
Equiv         : BR_INST_RETIRED:ALL_BRANCHES
Flags    : None
Desc     : Count branch instructions at retirement. Specifically, this event counts the retirement of the last micro-op of a branch instruction
Code     : 0xc4
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606344
PMU name : snb (Intel Sandy Bridge)
Name     : MISPREDICTED_BRANCH_RETIRED
Equiv         : BR_MISP_RETIRED:ALL_BRANCHES
Flags    : None
Desc     : Count mispredicted branch instructions at retirement. Specifically, this event counts at retirement of the last micro-op of a branch instruction in the architectural path of the execution and experienced misprediction in the branch prediction hardware
Code     : 0xc5
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606345
PMU name : snb (Intel Sandy Bridge)
Name     : LOCK_CYCLES
Equiv         : None
Flags    : None
Desc     : Locked cycles in L1D and L2
Code     : 0x63
Umask-00 : 0x01 : PMU : [SPLIT_LOCK_UC_LOCK_DURATION] : None : Cycles in which the L1D and L2 are locked, due to a UC lock or split lock
Umask-01 : 0x02 : PMU : [CACHE_LOCK_DURATION] : None : Cycles in which the L1D is locked
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606346
PMU name : snb (Intel Sandy Bridge)
Name     : CPL_CYCLES
Equiv         : None
Flags    : None
Desc     : Unhalted core cycles at a specific ring level
Code     : 0x5c
Umask-00 : 0x01 : PMU : [RING0] : None : Unhalted core cycles the thread was in ring 0
Umask-01 : 0x10401 : PMU : [RING0_TRANS] : None : Alias to RING0:c=1:e=1
Umask-02 : 0x02 : PMU : [RING123] : None : Unhalted core cycles the thread was in rings 1, 2, or 3
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606347
PMU name : snb (Intel Sandy Bridge)
Name     : CPU_CLK_UNHALTED
Equiv         : None
Flags    : None
Desc     : Cases when the core is unhalted at 100 Mhz
Code     : 0x3c
Umask-00 : 0x01 : PMU : [REF_P] : None : Cycles when the core is unhalted (count at 100 Mhz)
Umask-01 : 0x00 : PMU : [THREAD_P] : [default] : Cycles when thread is not halted
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606348
PMU name : snb (Intel Sandy Bridge)
Name     : DSB2MITE_SWITCHES
Equiv         : None
Flags    : None
Desc     : Number of DSB to MITE switches
Code     : 0xab
Umask-00 : 0x01 : PMU : [COUNT] : [default] : Number of DSB to MITE switches
Umask-01 : 0x02 : PMU : [PENALTY_CYCLES] : None : Cycles SB to MITE switches caused delay
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606349
PMU name : snb (Intel Sandy Bridge)
Name     : DSB_FILL
Equiv         : None
Flags    : None
Desc     : DSB fills
Code     : 0xac
Umask-00 : 0x0a : PMU : [ALL_CANCEL] : None : Number of times a valid DSB fill has been cancelled for any reason
Umask-01 : 0x08 : PMU : [EXCEED_DSB_LINES] : None : DSB Fill encountered > 3 DSB lines
Umask-02 : 0x02 : PMU : [OTHER_CANCEL] : None : Number of times a valid DSB fill has been cancelled not because of exceeding way limit
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606350
PMU name : snb (Intel Sandy Bridge)
Name     : DTLB_LOAD_MISSES
Equiv         : None
Flags    : None
Desc     : Data TLB load misses
Code     : 0x8
Umask-00 : 0x01 : PMU : [MISS_CAUSES_A_WALK] : None : Demand load miss in all TLB levels which causes an page walk of any page size
Umask-01 : 0x01 : PMU : [CAUSES_A_WALK] : None : Alias to MISS_CAUSES_A_WALK
Umask-02 : 0x10 : PMU : [STLB_HIT] : None : Number of DTLB lookups for loads which missed first level DTLB but hit second level DTLB (STLB); No page walk.
Umask-03 : 0x02 : PMU : [WALK_COMPLETED] : None : Demand load miss in all TLB levels which causes a page walk that completes for any page size
Umask-04 : 0x04 : PMU : [WALK_DURATION] : None : Cycles PMH is busy with a walk
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606351
PMU name : snb (Intel Sandy Bridge)
Name     : DTLB_STORE_MISSES
Equiv         : None
Flags    : None
Desc     : Data TLB store misses
Code     : 0x49
Umask-00 : 0x01 : PMU : [MISS_CAUSES_A_WALK] : None : Miss in all TLB levels that causes a page walk of any page size (4K/2M/4M/1G)
Umask-01 : 0x01 : PMU : [CAUSES_A_WALK] : None : Alias to MISS_CAUSES_A_WALK
Umask-02 : 0x10 : PMU : [STLB_HIT] : None : First level miss but second level hit; no page walk. Only relevant if multiple levels
Umask-03 : 0x02 : PMU : [WALK_COMPLETED] : None : Miss in all TLB levels that causes a page walk that completes of any page size (4K/2M/4M/1G)
Umask-04 : 0x04 : PMU : [WALK_DURATION] : None : Cycles PMH is busy with this walk
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606352
PMU name : snb (Intel Sandy Bridge)
Name     : FP_ASSIST
Equiv         : None
Flags    : None
Desc     : X87 Floating point assists
Code     : 0xca
Umask-00 : 0x1e : PMU : [ANY] : [default] : Cycles with any input/output SSE or FP assists
Umask-01 : 0x10 : PMU : [SIMD_INPUT] : None : Number of SIMD FP assists due to input values
Umask-02 : 0x08 : PMU : [SIMD_OUTPUT] : None : Number of SIMD FP assists due to output values
Umask-03 : 0x04 : PMU : [X87_INPUT] : None : Number of X87 assists due to input value
Umask-04 : 0x02 : PMU : [X87_OUTPUT] : None : Number of X87 assists due to output value
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606353
PMU name : snb (Intel Sandy Bridge)
Name     : FP_COMP_OPS_EXE
Equiv         : None
Flags    : None
Desc     : Counts number of floating point events
Code     : 0x10
Umask-00 : 0x01 : PMU : [X87] : None : Number of X87 uops executed
Umask-01 : 0x10 : PMU : [SSE_FP_PACKED_DOUBLE] : None : Number of SSE double precision FP packed uops executed
Umask-02 : 0x20 : PMU : [SSE_FP_SCALAR_SINGLE] : None : Number of SSE single precision FP scalar uops executed
Umask-03 : 0x40 : PMU : [SSE_PACKED_SINGLE] : None : Number of SSE single precision FP packed uops executed
Umask-04 : 0x80 : PMU : [SSE_SCALAR_DOUBLE] : None : Number of SSE double precision FP scalar uops executed
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606354
PMU name : snb (Intel Sandy Bridge)
Name     : HW_INTERRUPTS
Equiv         : None
Flags    : None
Desc     : Number of hardware interrupts received by the processor
Code     : 0xcb
Umask-00 : 0x01 : PMU : [RECEIVED] : [default] : Number of hardware interrupts received by the processor
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606355
PMU name : snb (Intel Sandy Bridge)
Name     : HW_PRE_REQ
Equiv         : None
Flags    : None
Desc     : Hardware prefetch requests
Code     : 0x4e
Umask-00 : 0x02 : PMU : [L1D_MISS] : [default] : Hardware prefetch requests that misses the L1D cache. A request is counted each time it accesses the cache and misses it, including if a block is applicable or if it hits the full buffer, for example. This accounts for both L1 streamer and IP-based Hw prefetchers
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606356
PMU name : snb (Intel Sandy Bridge)
Name     : ICACHE
Equiv         : None
Flags    : None
Desc     : Instruction Cache accesses
Code     : 0x80
Umask-00 : 0x02 : PMU : [MISSES] : [default] : Number of Instruction Cache, Streaming Buffer and Victim Cache Misses. Includes UC accesses
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606357
PMU name : snb (Intel Sandy Bridge)
Name     : IDQ
Equiv         : None
Flags    : None
Desc     : IDQ operations
Code     : 0x79
Umask-00 : 0x02 : PMU : [EMPTY] : None : Cycles IDQ is empty
Umask-01 : 0x04 : PMU : [MITE_UOPS] : None : Number of uops delivered to IDQ from MITE path
Umask-02 : 0x08 : PMU : [DSB_UOPS] : None : Number of uops delivered to IDQ from DSB path
Umask-03 : 0x10 : PMU : [MS_DSB_UOPS] : None : Number of uops delivered to IDQ when MS busy by DSB
Umask-04 : 0x20 : PMU : [MS_MITE_UOPS] : None : Number of uops delivered to IDQ when MS busy by MITE
Umask-05 : 0x30 : PMU : [MS_UOPS] : None : Number of uops were delivered to IDQ from MS by either DSB or MITE
Umask-06 : 0x10004 : PMU : [MITE_UOPS_CYCLES] : None : Alias to MITE_UOPS:c=1
Umask-07 : 0x10008 : PMU : [DSB_UOPS_CYCLES] : None : Cycles where uops are delivered to IDQ from DSB (DSB active)
Umask-08 : 0x10010 : PMU : [MS_DSB_UOPS_CYCLES] : None : Alias to MS_DSB_UOPS:c=1
Umask-09 : 0x10020 : PMU : [MS_MITE_UOPS_CYCLES] : None : Alias to MS_MITE_UOPS:c=1
Umask-10 : 0x10030 : PMU : [MS_UOPS_CYCLES] : None : Alias to MS_UOPS:c=1
Umask-11 : 0x18 : PMU : [ALL_DSB_UOPS] : None : Number of uops deliver from either DSB paths
Umask-12 : 0x10018 : PMU : [ALL_DSB_CYCLES] : None : Cycles MITE/MS deliver anything
Umask-13 : 0x24 : PMU : [ALL_MITE_UOPS] : None : Number of uops delivered from either MITE paths
Umask-14 : 0x10024 : PMU : [ALL_MITE_CYCLES] : None : Cycles DSB/MS deliver anything
Umask-15 : 0x3c : PMU : [ANY_UOPS] : None : Number of uops delivered to IDQ from any path
Umask-16 : 0x10410 : PMU : [MS_DSB_UOPS_OCCUR] : None : Alias to MS_DSB_UOPS:c=1:e=1
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606358
PMU name : snb (Intel Sandy Bridge)
Name     : IDQ_UOPS_NOT_DELIVERED
Equiv         : None
Flags    : None
Desc     : Uops not delivered
Code     : 0x9c
Umask-00 : 0x01 : PMU : [CORE] : [default] : Number of non-delivered uops to RAT (use cmask to qualify further)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606359
PMU name : snb (Intel Sandy Bridge)
Name     : ILD_STALL
Equiv         : None
Flags    : None
Desc     : Instruction Length Decoder stalls
Code     : 0x87
Umask-00 : 0x01 : PMU : [LCP] : None : Stall caused by changing prefix length of the instruction
Umask-01 : 0x04 : PMU : [IQ_FULL] : None : Stall cycles due to IQ full
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606360
PMU name : snb (Intel Sandy Bridge)
Name     : INSTS_WRITTEN_TO_IQ
Equiv         : None
Flags    : None
Desc     : Instructions written to IQ
Code     : 0x17
Umask-00 : 0x01 : PMU : [INSTS] : [default] : Number of instructions written to IQ every cycle
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606361
PMU name : snb (Intel Sandy Bridge)
Name     : INST_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Instructions retired
Code     : 0xc0
Umask-00 : 0x00 : PMU : [ANY_P] : [default] : Number of instructions retired
Umask-01 : 0x01 : PMU : [PREC_DIST] : [precise] : Precise instruction retired event to reduce effect of PEBS shadow IP distribution (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606362
PMU name : snb (Intel Sandy Bridge)
Name     : INSTRUCTION_RETIRED
Equiv         : None
Flags    : None
Desc     : Number of instructions at retirement
Code     : 0xc0
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606363
PMU name : snb (Intel Sandy Bridge)
Name     : INSTRUCTIONS_RETIRED
Equiv         : INSTRUCTION_RETIRED
Flags    : None
Desc     : This is an alias for INSTRUCTION_RETIRED
Code     : 0xc0
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606364
PMU name : snb (Intel Sandy Bridge)
Name     : INT_MISC
Equiv         : None
Flags    : None
Desc     : Miscellaneous internals
Code     : 0xd
Umask-00 : 0x40 : PMU : [RAT_STALL_CYCLES] : None : Cycles RAT external stall is sent to IDQ for this thread
Umask-01 : 0x10003 : PMU : [RECOVERY_CYCLES] : None : Cycles waiting to be recovered after Machine Clears due to all other cases except JEClear
Umask-02 : 0x10403 : PMU : [RECOVERY_STALLS_COUNT] : None : Number of times need to wait after Machine Clears due to all other cases except JEClear
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606365
PMU name : snb (Intel Sandy Bridge)
Name     : ITLB
Equiv         : None
Flags    : None
Desc     : Instruction TLB
Code     : 0xae
Umask-00 : 0x01 : PMU : [ITLB_FLUSH] : [default] : Number of ITLB flushes, includes 4k/2M/4M pages
Umask-01 : 0x01 : PMU : [FLUSH] : None : Alias to ITLB_FLUSH
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606366
PMU name : snb (Intel Sandy Bridge)
Name     : ITLB_MISSES
Equiv         : None
Flags    : None
Desc     : Instruction TLB misses
Code     : 0x85
Umask-00 : 0x01 : PMU : [MISS_CAUSES_A_WALK] : None : Miss in all TLB levels that causes a page walk of any page size (4K/2M/4M/1G)
Umask-01 : 0x01 : PMU : [CAUSES_A_WALK] : None : Alias to MISS_CAUSES_A_WALK
Umask-02 : 0x10 : PMU : [STLB_HIT] : None : First level miss but second level hit; no page walk. Only relevant if multiple levels
Umask-03 : 0x02 : PMU : [WALK_COMPLETED] : None : Miss in all TLB levels that causes a page walk that completes of any page size (4K/2M/4M/1G)
Umask-04 : 0x04 : PMU : [WALK_DURATION] : None : Cycles PMH is busy with this walk
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606367
PMU name : snb (Intel Sandy Bridge)
Name     : L1D
Equiv         : None
Flags    : None
Desc     : L1D cache
Code     : 0x51
Umask-00 : 0x02 : PMU : [ALLOCATED_IN_M] : None : Number of allocations of L1D cache lines in modified (M) state
Umask-01 : 0x08 : PMU : [ALL_M_REPLACEMENT] : None : Number of cache lines in M-state evicted of L1D due to snoop HITM or dirty line replacement
Umask-02 : 0x04 : PMU : [M_EVICT] : None : Number of modified lines evicted from L1D due to replacement
Umask-03 : 0x01 : PMU : [REPLACEMENT] : None : Number of cache lines brought into the L1D cache
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606368
PMU name : snb (Intel Sandy Bridge)
Name     : L1D_BLOCKS
Equiv         : None
Flags    : None
Desc     : L1D is blocking
Code     : 0xbf
Umask-00 : 0x01 : PMU : [BANK_CONFLICT] : None : Number of dispatched loads cancelled due to L1D bank conflicts with other load ports
Umask-01 : 0x05 : PMU : [BANK_CONFLICT_CYCLES] : [default] : Cycles with l1d blocks due to bank conflicts
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606369
PMU name : snb (Intel Sandy Bridge)
Name     : L1D_PEND_MISS
Equiv         : None
Flags    : None
Desc     : L1D pending misses
Code     : 0x48
Umask-00 : 0x10401 : PMU : [OCCURRENCES] : None : Alias to PENDING:e=1:c=1
Umask-01 : 0x10401 : PMU : [EDGE] : None : Alias to OCCURRENCES
Umask-02 : 0x01 : PMU : [PENDING] : None : Number of L1D load misses outstanding every cycle
Umask-03 : 0x10001 : PMU : [PENDING_CYCLES] : None : Alias to PENDING:c=1
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606370
PMU name : snb (Intel Sandy Bridge)
Name     : L2_L1D_WB_RQSTS
Equiv         : None
Flags    : None
Desc     : Writeback requests from L1D to L2
Code     : 0x28
Umask-00 : 0x04 : PMU : [HIT_E] : None : Non rejected writebacks from L1D to L2 cache lines in E state
Umask-01 : 0x08 : PMU : [HIT_M] : None : Non rejected writebacks from L1D to L2 cache lines in M state
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606371
PMU name : snb (Intel Sandy Bridge)
Name     : L2_LINES_IN
Equiv         : None
Flags    : None
Desc     : L2 lines alloacated
Code     : 0xf1
Umask-00 : 0x07 : PMU : [ANY] : None : L2 cache lines filling (counting does not cover rejects)
Umask-01 : 0x04 : PMU : [E] : None : L2 cache lines in E state (counting does not cover rejects)
Umask-02 : 0x01 : PMU : [I] : None : L2 cache lines in I state (counting does not cover rejects)
Umask-03 : 0x02 : PMU : [S] : None : L2 cache lines in S state (counting does not cover rejects)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606372
PMU name : snb (Intel Sandy Bridge)
Name     : L2_LINES_OUT
Equiv         : None
Flags    : None
Desc     : L2 lines evicted
Code     : 0xf2
Umask-00 : 0x01 : PMU : [DEMAND_CLEAN] : None : L2 clean line evicted by a demand
Umask-01 : 0x02 : PMU : [DEMAND_DIRTY] : None : L2 dirty line evicted by a demand
Umask-02 : 0x04 : PMU : [PREFETCH_CLEAN] : None : L2 clean line evicted by a prefetch
Umask-03 : 0x08 : PMU : [PREFETCH_DIRTY] : None : L2 dirty line evicted by an MLC Prefetch
Umask-04 : 0x0a : PMU : [DIRTY_ANY] : None : Any L2 dirty line evicted (does not cover rejects)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606373
PMU name : snb (Intel Sandy Bridge)
Name     : L2_RQSTS
Equiv         : None
Flags    : None
Desc     : L2 requests
Code     : 0x24
Umask-00 : 0x30 : PMU : [ALL_CODE_RD] : None : Any ifetch request to L2 cache
Umask-01 : 0x10 : PMU : [CODE_RD_HIT] : None : L2 cache hits when fetching instructions
Umask-02 : 0x20 : PMU : [CODE_RD_MISS] : None : L2 cache misses when fetching instructions
Umask-03 : 0x03 : PMU : [ALL_DEMAND_DATA_RD] : None : Demand  data read requests to L2 cache
Umask-04 : 0x01 : PMU : [ALL_DEMAND_RD_HIT] : None : Demand data read requests that hit L2
Umask-05 : 0xc0 : PMU : [ALL_PF] : None : Any L2 HW prefetch request to L2 cache
Umask-06 : 0x40 : PMU : [PF_HIT] : None : Requests from the L2 hardware prefetchers that hit L2 cache
Umask-07 : 0x80 : PMU : [PF_MISS] : None : Requests from the L2 hardware prefetchers that miss L2 cache
Umask-08 : 0x0c : PMU : [RFO_ANY] : None : Any RFO requests to L2 cache
Umask-09 : 0x04 : PMU : [RFO_HITS] : None : RFO requests that hit L2 cache
Umask-10 : 0x08 : PMU : [RFO_MISS] : None : RFO requests that miss L2 cache
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606374
PMU name : snb (Intel Sandy Bridge)
Name     : L2_STORE_LOCK_RQSTS
Equiv         : None
Flags    : None
Desc     : L2 store lock requests
Code     : 0x27
Umask-00 : 0x04 : PMU : [HIT_E] : None : RFOs that hit cache lines in E state
Umask-01 : 0x01 : PMU : [MISS] : None : RFOs that miss cache (I state)
Umask-02 : 0x08 : PMU : [HIT_M] : None : RFOs that hit cache lines in M state
Umask-03 : 0x0f : PMU : [ALL] : [default] : RFOs that access cache lines in any state
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606375
PMU name : snb (Intel Sandy Bridge)
Name     : L2_TRANS
Equiv         : None
Flags    : None
Desc     : L2 transactions
Code     : 0xf0
Umask-00 : 0x80 : PMU : [ALL] : None : Transactions accessing MLC pipe
Umask-01 : 0x04 : PMU : [CODE_RD] : None : L2 cache accesses when fetching instructions
Umask-02 : 0x10 : PMU : [L1D_WB] : None : L1D writebacks that access L2 cache
Umask-03 : 0x01 : PMU : [LOAD] : None : Demand Data Read* requests that access L2 cache
Umask-04 : 0x20 : PMU : [L2_FILL] : None : L2 fill requests that access L2 cache
Umask-05 : 0x40 : PMU : [L2_WB] : None : L2 writebacks that access L2 cache
Umask-06 : 0x08 : PMU : [ALL_PREFETCH] : None : L2 or L3 HW prefetches that access L2 cache (including rejects)
Umask-07 : 0x02 : PMU : [RFO] : None : RFO requests that access L2 cache
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606376
PMU name : snb (Intel Sandy Bridge)
Name     : LAST_LEVEL_CACHE_MISSES
Equiv         : L3_LAT_CACHE:MISS
Flags    : None
Desc     : This is an alias for LLC_MISSES
Code     : 0x412e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606377
PMU name : snb (Intel Sandy Bridge)
Name     : LLC_MISSES
Equiv         : LAST_LEVEL_CACHE_MISSES
Flags    : None
Desc     : Alias for LAST_LEVEL_CACHE_MISSES
Code     : 0x412e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606378
PMU name : snb (Intel Sandy Bridge)
Name     : LAST_LEVEL_CACHE_REFERENCES
Equiv         : L3_LAT_CACHE:REFERENCE
Flags    : None
Desc     : This is an alias for LLC_REFERENCES
Code     : 0x4f2e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606379
PMU name : snb (Intel Sandy Bridge)
Name     : LLC_REFERENCES
Equiv         : LAST_LEVEL_CACHE_REFERENCES
Flags    : None
Desc     : Alias for LAST_LEVEL_CACHE_REFERENCES
Code     : 0x4f2e
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606380
PMU name : snb (Intel Sandy Bridge)
Name     : LD_BLOCKS
Equiv         : None
Flags    : None
Desc     : Blocking loads
Code     : 0x3
Umask-00 : 0x01 : PMU : [DATA_UNKNOWN] : None : Blocked loads due to store buffer blocks with unknown data
Umask-01 : 0x02 : PMU : [STORE_FORWARD] : None : Loads blocked by overlapping with store buffer that cannot be forwarded
Umask-02 : 0x08 : PMU : [NO_SR] : None : Number of split loads blocked due to resource not available
Umask-03 : 0x10 : PMU : [ALL_BLOCK] : None : Number of cases where any load is blocked but has not DCU miss
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606381
PMU name : snb (Intel Sandy Bridge)
Name     : LD_BLOCKS_PARTIAL
Equiv         : None
Flags    : None
Desc     : Partial load blocks
Code     : 0x7
Umask-00 : 0x01 : PMU : [ADDRESS_ALIAS] : None : False dependencies in MOB due to partial compare on address
Umask-01 : 0x08 : PMU : [ALL_STA_BLOCK] : None : Number of times that load operations are temporarily blocked because of older stores, with addresses that are not yet known. A load operation may incur more than one block of this type
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606382
PMU name : snb (Intel Sandy Bridge)
Name     : LOAD_HIT_PRE
Equiv         : None
Flags    : None
Desc     : Load dispatches that hit fill buffer
Code     : 0x4c
Umask-00 : 0x02 : PMU : [HW_PF] : None : Non sw-prefetch load dispatches that hit the fill buffer allocated for HW prefetch
Umask-01 : 0x01 : PMU : [SW_PF] : None : Non sw-prefetch load dispatches that hit the fill buffer allocated for SW prefetch
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606383
PMU name : snb (Intel Sandy Bridge)
Name     : L3_LAT_CACHE
Equiv         : None
Flags    : None
Desc     : Core-originated cacheable demand requests to L3
Code     : 0x2e
Umask-00 : 0x01 : PMU : [MISS] : None : Core-originated cacheable demand requests missed L3
Umask-01 : 0x02 : PMU : [REFERENCE] : None : Core-originated cacheable demand requests that refer to L3
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606384
PMU name : snb (Intel Sandy Bridge)
Name     : MACHINE_CLEARS
Equiv         : None
Flags    : None
Desc     : Machine clear asserted
Code     : 0xc3
Umask-00 : 0x20 : PMU : [MASKMOV] : None : The number of executed Intel AVX masked load operations that refer to an illegal address range with the mask bits set to 0
Umask-01 : 0x02 : PMU : [MEMORY_ORDERING] : None : Number of Memory Ordering Machine Clears detected
Umask-02 : 0x04 : PMU : [SMC] : None : Self-Modifying Code detected
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606385
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_UOPS_LLC_HIT_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : L3 hit loads uops retired
Code     : 0xd2
Umask-00 : 0x02 : PMU : [XSNP_HIT] : [precise] : Load LLC Hit and a cross-core Snoop hits in on-pkg core cache (Precise Event)
Umask-01 : 0x04 : PMU : [XSNP_HITM] : [precise] : Load had HitM Response from a core on same socket (shared LLC) (Precise Event)
Umask-02 : 0x01 : PMU : [XSNP_MISS] : [precise] : Load LLC Hit and a cross-core Snoop missed in on-pkg core cache (Precise Event)
Umask-03 : 0x08 : PMU : [XSNP_NONE] : [precise] : Load hit in last-level (L3) cache with no snoop needed (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606386
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_LLC_HIT_RETIRED
Equiv         : MEM_LOAD_UOPS_LLC_HIT_RETIRED
Flags    : [precise]
Desc     : L3 hit loads uops retired (deprecated use MEM_LOAD_UOPS_LLC_HIT_RETIRED)
Code     : 0xd2
Umask-00 : 0x02 : PMU : [XSNP_HIT] : [precise] : Load LLC Hit and a cross-core Snoop hits in on-pkg core cache (Precise Event)
Umask-01 : 0x04 : PMU : [XSNP_HITM] : [precise] : Load had HitM Response from a core on same socket (shared LLC) (Precise Event)
Umask-02 : 0x01 : PMU : [XSNP_MISS] : [precise] : Load LLC Hit and a cross-core Snoop missed in on-pkg core cache (Precise Event)
Umask-03 : 0x08 : PMU : [XSNP_NONE] : [precise] : Load hit in last-level (L3) cache with no snoop needed (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606387
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_UOPS_MISC_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Loads and some non simd split loads uops retired
Code     : 0xd4
Umask-00 : 0x02 : PMU : [LLC_MISS] : [default] [precise] : Counts load driven L3 misses and some non simd split loads (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606388
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_MISC_RETIRED
Equiv         : MEM_LOAD_UOPS_MISC_RETIRED
Flags    : [precise]
Desc     : Loads and some non simd split loads uops retired (deprecated use MEM_LOAD_UOPS_MISC_RETIRED)
Code     : 0xd4
Umask-00 : 0x02 : PMU : [LLC_MISS] : [default] [precise] : Counts load driven L3 misses and some non simd split loads (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606389
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_UOPS_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Memory loads uops retired
Code     : 0xd1
Umask-00 : 0x40 : PMU : [HIT_LFB] : [precise] : A load missed L1D but hit the Fill Buffer (Precise Event)
Umask-01 : 0x01 : PMU : [L1_HIT] : [precise] : Load hit in nearest-level (L1D) cache (Precise Event)
Umask-02 : 0x02 : PMU : [L2_HIT] : [precise] : Load hit in mid-level (L2) cache (Precise Event)
Umask-03 : 0x04 : PMU : [L3_HIT] : [precise] : Load hit in last-level (L3) cache with no snoop needed (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606390
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_LOAD_RETIRED
Equiv         : MEM_LOAD_UOPS_RETIRED
Flags    : [precise]
Desc     : Memory loads uops retired (deprecated use MEM_LOAD_UOPS_RETIRED)
Code     : 0xd1
Umask-00 : 0x40 : PMU : [HIT_LFB] : [precise] : A load missed L1D but hit the Fill Buffer (Precise Event)
Umask-01 : 0x01 : PMU : [L1_HIT] : [precise] : Load hit in nearest-level (L1D) cache (Precise Event)
Umask-02 : 0x02 : PMU : [L2_HIT] : [precise] : Load hit in mid-level (L2) cache (Precise Event)
Umask-03 : 0x04 : PMU : [L3_HIT] : [precise] : Load hit in last-level (L3) cache with no snoop needed (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606391
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_TRANS_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Memory transactions retired
Code     : 0xcd
Umask-00 : 0x01 : PMU : [LATENCY_ABOVE_THRESHOLD] : [precise] : Memory load instructions retired above programmed clocks, minimum value threshold is 4 (Precise Event required)
Umask-01 : 0x02 : PMU : [PRECISE_STORE] : [precise] : Capture where stores occur, must use with PEBS (Precise Event required)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606392
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_UOPS_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Memory uops retired
Code     : 0xd0
Umask-00 : 0x81 : PMU : [ALL_LOADS] : [precise] : Any retired loads (Precise Event)
Umask-01 : 0x81 : PMU : [ANY_LOADS] : [precise] : Alias to ALL_LOADS
Umask-02 : 0x82 : PMU : [ALL_STORES] : [precise] : Any retired stores (Precise Event)
Umask-03 : 0x82 : PMU : [ANY_STORES] : [precise] : Alias to ALL_STORES
Umask-04 : 0x21 : PMU : [LOCK_LOADS] : [precise] : Locked retired loads (Precise Event)
Umask-05 : 0x22 : PMU : [LOCK_STORES] : [precise] : Locked retired stores (Precise Event)
Umask-06 : 0x41 : PMU : [SPLIT_LOADS] : [precise] : Retired loads causing cacheline splits (Precise Event)
Umask-07 : 0x42 : PMU : [SPLIT_STORES] : [precise] : Retired stores causing cacheline splits (Precise Event)
Umask-08 : 0x11 : PMU : [STLB_MISS_LOADS] : [precise] : STLB misses dues to retired loads (Precise Event)
Umask-09 : 0x12 : PMU : [STLB_MISS_STORES] : [precise] : STLB misses dues to retired stores (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606393
PMU name : snb (Intel Sandy Bridge)
Name     : MEM_UOP_RETIRED
Equiv         : MEM_UOPS_RETIRED
Flags    : [precise]
Desc     : Memory uops retired (deprecated use MEM_UOPS_RETIRED)
Code     : 0xd0
Umask-00 : 0x81 : PMU : [ALL_LOADS] : [precise] : Any retired loads (Precise Event)
Umask-01 : 0x81 : PMU : [ANY_LOADS] : [precise] : Alias to ALL_LOADS
Umask-02 : 0x82 : PMU : [ALL_STORES] : [precise] : Any retired stores (Precise Event)
Umask-03 : 0x82 : PMU : [ANY_STORES] : [precise] : Alias to ALL_STORES
Umask-04 : 0x21 : PMU : [LOCK_LOADS] : [precise] : Locked retired loads (Precise Event)
Umask-05 : 0x22 : PMU : [LOCK_STORES] : [precise] : Locked retired stores (Precise Event)
Umask-06 : 0x41 : PMU : [SPLIT_LOADS] : [precise] : Retired loads causing cacheline splits (Precise Event)
Umask-07 : 0x42 : PMU : [SPLIT_STORES] : [precise] : Retired stores causing cacheline splits (Precise Event)
Umask-08 : 0x11 : PMU : [STLB_MISS_LOADS] : [precise] : STLB misses dues to retired loads (Precise Event)
Umask-09 : 0x12 : PMU : [STLB_MISS_STORES] : [precise] : STLB misses dues to retired stores (Precise Event)
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606394
PMU name : snb (Intel Sandy Bridge)
Name     : MISALIGN_MEM_REF
Equiv         : None
Flags    : None
Desc     : Misaligned memory references
Code     : 0x5
Umask-00 : 0x01 : PMU : [LOADS] : None : Speculative cache-line split load uops dispatched to the L1D
Umask-01 : 0x02 : PMU : [STORES] : None : Speculative cache-line split Store-address uops dispatched to L1D
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606395
PMU name : snb (Intel Sandy Bridge)
Name     : OFFCORE_REQUESTS
Equiv         : None
Flags    : None
Desc     : Offcore requests
Code     : 0xb0
Umask-00 : 0x08 : PMU : [ALL_DATA_RD] : None : Demand and prefetch read requests sent to uncore
Umask-01 : 0x08 : PMU : [ALL_DATA_READ] : None : Alias to ALL_DATA_RD
Umask-02 : 0x02 : PMU : [DEMAND_CODE_RD] : None : Offcore code read requests, including cacheable and un-cacheables
Umask-03 : 0x01 : PMU : [DEMAND_DATA_RD] : None : Demand Data Read requests sent to uncore
Umask-04 : 0x04 : PMU : [DEMAND_RFO] : None : Offcore Demand RFOs, includes regular RFO, Locks, ItoM
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606396
PMU name : snb (Intel Sandy Bridge)
Name     : OFFCORE_REQUESTS_BUFFER
Equiv         : None
Flags    : None
Desc     : Offcore requests buffer
Code     : 0xb2
Umask-00 : 0x01 : PMU : [SQ_FULL] : [default] : Offcore requests buffer cannot take more entries for this thread core
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606397
PMU name : snb (Intel Sandy Bridge)
Name     : OFFCORE_REQUESTS_OUTSTANDING
Equiv         : None
Flags    : None
Desc     : Outstanding offcore requests
Code     : 0x60
Umask-00 : 0x10008 : PMU : [ALL_DATA_RD_CYCLES] : None : Alias to ALL_DATA_RD:c=1
Umask-01 : 0x10002 : PMU : [DEMAND_CODE_RD_CYCLES] : None : Alias to DEMAND_CODE_RD:c=1
Umask-02 : 0x10001 : PMU : [DEMAND_DATA_RD_CYCLES] : None : Alias to DEMAND_DATA_RD:c=1
Umask-03 : 0x08 : PMU : [ALL_DATA_RD] : None : Cacheable data read transactions in the superQ every cycle
Umask-04 : 0x02 : PMU : [DEMAND_CODE_RD] : None : Code read transactions in the superQ every cycle
Umask-05 : 0x01 : PMU : [DEMAND_DATA_RD] : None : Demand data read transactions in the superQ every cycle
Umask-06 : 0x04 : PMU : [DEMAND_RFO] : None : Outstanding RFO (store) transactions in the superQ every cycle
Umask-07 : 0x10004 : PMU : [DEMAND_RFO_CYCLES] : None : Alias to DEMAND_RFO:c=1
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606398
PMU name : snb (Intel Sandy Bridge)
Name     : OTHER_ASSISTS
Equiv         : None
Flags    : None
Desc     : Count hardware assists
Code     : 0xc1
Umask-00 : 0x02 : PMU : [ITLB_MISS_RETIRED] : None : Number of instructions that experienced an ITLB miss
Umask-01 : 0x10 : PMU : [AVX_TO_SSE] : None : Number of transitions from AVX-256 to legacy SSE when penalty applicable
Umask-02 : 0x20 : PMU : [SSE_TO_AVX] : None : Number of transitions from legacy SSE to AVX-256 when penalty applicable
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606399
PMU name : snb (Intel Sandy Bridge)
Name     : PARTIAL_RAT_STALLS
Equiv         : None
Flags    : None
Desc     : Partial Register Allocation Table stalls
Code     : 0x59
Umask-00 : 0x20 : PMU : [FLAGS_MERGE_UOP] : None : Number of flags-merge uops in flight in each cycle
Umask-01 : 0x10020 : PMU : [CYCLES_FLAGS_MERGE_UOP] : None : Alias to FLAGS_MERGE_UOP:c=1
Umask-02 : 0x80 : PMU : [MUL_SINGLE_UOP] : None : Number of Multiply packed/scalar single precision uops allocated
Umask-03 : 0x40 : PMU : [SLOW_LEA_WINDOW] : None : Number of cycles with at least one slow LEA uop allocated
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606400
PMU name : snb (Intel Sandy Bridge)
Name     : RESOURCE_STALLS
Equiv         : None
Flags    : None
Desc     : Resource related stall cycles
Code     : 0xa2
Umask-00 : 0x01 : PMU : [ANY] : [default] : Cycles stalled due to Resource Related reason
Umask-01 : 0x02 : PMU : [LB] : None : Cycles stalled due to lack of load buffers
Umask-02 : 0x04 : PMU : [RS] : None : Cycles stalled due to no eligible RS entry available
Umask-03 : 0x08 : PMU : [SB] : None : Cycles stalled due to no store buffers available (not including draining from sync)
Umask-04 : 0x10 : PMU : [ROB] : None : Cycles stalled due to re-order buffer full
Umask-05 : 0x20 : PMU : [FCSW] : None : Cycles stalled due to writing the FPU control word
Umask-06 : 0x40 : PMU : [MXCSR] : None : Cycles stalled due to the MXCSR register ranme occurring too close to a previous MXCSR rename
Umask-07 : 0x0e : PMU : [MEM_RS] : None : Alias to LB:SB:RS
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606401
PMU name : snb (Intel Sandy Bridge)
Name     : RESOURCE_STALLS2
Equiv         : None
Flags    : None
Desc     : Resource related stall cycles
Code     : 0x5b
Umask-00 : 0x0c : PMU : [ALL_FL_EMPTY] : None : Cycles stalled due to free list empty
Umask-01 : 0x0f : PMU : [ALL_PRF_CONTROL] : None : Cycles stalls due to control structures full for physical registers
Umask-02 : 0x0f : PMU : [ANY_PRF_CONTROL] : None : Alias to ALL_PRF_CONTROL
Umask-03 : 0x40 : PMU : [BOB_FULL] : None : Cycles Allocator is stalled due Branch Order Buffer
Umask-04 : 0x4f : PMU : [OOO_RSRC] : None : Cycles stalled due to out of order resources full
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606402
PMU name : snb (Intel Sandy Bridge)
Name     : ROB_MISC_EVENTS
Equiv         : None
Flags    : None
Desc     : Reorder buffer events
Code     : 0xcc
Umask-00 : 0x20 : PMU : [LBR_INSERTS] : [default] : Count each time an new LBR record is saved by HW
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606403
PMU name : snb (Intel Sandy Bridge)
Name     : RS_EVENTS
Equiv         : None
Flags    : None
Desc     : Reservation station events
Code     : 0x5e
Umask-00 : 0x01 : PMU : [EMPTY_CYCLES] : [default] : Cycles the RS is empty for this thread
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606404
PMU name : snb (Intel Sandy Bridge)
Name     : SIMD_FP_256
Equiv         : None
Flags    : None
Desc     : Counts 256-bit packed floating point instructions
Code     : 0x11
Umask-00 : 0x01 : PMU : [PACKED_SINGLE] : None : Counts 256-bit packed single-precision
Umask-01 : 0x02 : PMU : [PACKED_DOUBLE] : None : Counts 256-bit packed double-precision
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606405
PMU name : snb (Intel Sandy Bridge)
Name     : SQ_MISC
Equiv         : None
Flags    : None
Desc     : SuperQ events
Code     : 0xf4
Umask-00 : 0x10 : PMU : [SPLIT_LOCK] : [default] : Split locks in SQ
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606406
PMU name : snb (Intel Sandy Bridge)
Name     : TLB_FLUSH
Equiv         : None
Flags    : None
Desc     : TLB flushes
Code     : 0xbd
Umask-00 : 0x01 : PMU : [DTLB_THREAD] : None : Number of DTLB flushes of thread-specific entries
Umask-01 : 0x20 : PMU : [STLB_ANY] : [default] : Number of STLB flushes
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606407
PMU name : snb (Intel Sandy Bridge)
Name     : UNHALTED_CORE_CYCLES
Equiv         : None
Flags    : None
Desc     : Count core clock cycles whenever the clock signal on the specific core is running (not halted)
Code     : 0x3c
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606408
PMU name : snb (Intel Sandy Bridge)
Name     : UNHALTED_REFERENCE_CYCLES
Equiv         : None
Flags    : None
Desc     : Unhalted reference cycles
Code     : 0x300
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606409
PMU name : snb (Intel Sandy Bridge)
Name     : UOPS_DISPATCHED
Equiv         : None
Flags    : None
Desc     : Uops dispatched
Code     : 0xb1
Umask-00 : 0x02 : PMU : [CORE] : None : Counts total number of uops dispatched from any thread
Umask-01 : 0x18001 : PMU : [STALL_CYCLES] : None : Alias to THREAD:c=1:i=1
Umask-02 : 0x01 : PMU : [THREAD] : None : Counts total number of uops to be dispatched per-thread each cycle
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606410
PMU name : snb (Intel Sandy Bridge)
Name     : UOPS_DISPATCHED_PORT
Equiv         : None
Flags    : None
Desc     : Uops dispatch to specific ports
Code     : 0xa1
Umask-00 : 0x01 : PMU : [PORT_0] : None : Cycles which a Uop is dispatched on port 0
Umask-01 : 0x02 : PMU : [PORT_1] : None : Cycles which a Uop is dispatched on port 1
Umask-02 : 0x04 : PMU : [PORT_2_LD] : None : Cycles in which a load uop is dispatched on port 2
Umask-03 : 0x08 : PMU : [PORT_2_STA] : None : Cycles in which a store uop is dispatched on port 2
Umask-04 : 0x0c : PMU : [PORT_2] : None : Cycles in which a uop is dispatched on port 2
Umask-05 : 0x10 : PMU : [PORT_3_LD] : None : Cycles in which a load uop is disptached on port 3
Umask-06 : 0x20 : PMU : [PORT_3_STA] : None : Cycles in which a store uop is disptached on port 3
Umask-07 : 0x30 : PMU : [PORT_3] : None : Cycles in which a uop is disptached on port 3
Umask-08 : 0x40 : PMU : [PORT_4] : None : Cycles which a uop is dispatched on port 4
Umask-09 : 0x80 : PMU : [PORT_5] : None : Cycles which a Uop is dispatched on port 5
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606411
PMU name : snb (Intel Sandy Bridge)
Name     : UOPS_ISSUED
Equiv         : None
Flags    : None
Desc     : Uops issued
Code     : 0xe
Umask-00 : 0x01 : PMU : [ANY] : [default] : Number of uops issued by the RAT to the Reservation Station (RS)
Umask-01 : 0x1a001 : PMU : [CORE_STALL_CYCLES] : None : Alias to ANY:c=1:i=1:t=1
Umask-02 : 0x18001 : PMU : [STALL_CYCLES] : None : Alias to ANY:c=1:i=1
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606412
PMU name : snb (Intel Sandy Bridge)
Name     : UOPS_RETIRED
Equiv         : None
Flags    : [precise]
Desc     : Uops retired
Code     : 0xc2
Umask-00 : 0x01 : PMU : [ALL] : [default] [precise] : All uops that actually retired (Precise Event)
Umask-01 : 0x01 : PMU : [ANY] : [precise] : Alias to ALL
Umask-02 : 0x02 : PMU : [RETIRE_SLOTS] : [precise] : Number of retirement slots used (Precise Event)
Umask-03 : 0x18001 : PMU : [STALL_CYCLES] : [precise] : Alias to ALL:c=1:i=1
Umask-04 : 0x100001 : PMU : [TOTAL_CYCLES] : [precise] : Alias to ALL:c=16
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606413
PMU name : snb (Intel Sandy Bridge)
Name     : OFFCORE_RESPONSE_0
Equiv         : None
Flags    : None
Desc     : Offcore response event (must provide at least one request type and either any_response or any combination of supplier + snoop)
Code     : 0x1b7
Umask-00 : 0x01 : PMU : [DMND_DATA_RD] : None : Request: number of demand and DCU prefetch data reads of full and partial cachelines as well as demand data page table entry cacheline reads. Does not count L2 data read prefetches or instruction fetches
Umask-01 : 0x02 : PMU : [DMND_RFO] : None : Request: number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO prefetches
Umask-02 : 0x04 : PMU : [DMND_IFETCH] : None : Request: number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches
Umask-03 : 0x08 : PMU : [WB] : None : Request: number of writebacks (modified to exclusive) transactions
Umask-04 : 0x10 : PMU : [PF_DATA_RD] : None : Request: number of data cacheline reads generated by L2 prefetchers
Umask-05 : 0x20 : PMU : [PF_RFO] : None : Request: number of RFO requests generated by L2 prefetchers
Umask-06 : 0x40 : PMU : [PF_IFETCH] : None : Request: number of code reads generated by L2 prefetchers
Umask-07 : 0x80 : PMU : [PF_LLC_DATA_RD] : None : Request: number of L3 prefetcher requests to L2 for loads
Umask-08 : 0x100 : PMU : [PF_LLC_RFO] : None : Request: number of RFO requests generated by L2 prefetcher
Umask-09 : 0x200 : PMU : [PF_LLC_IFETCH] : None : Request: number of L2 prefetcher requests to L3 for instruction fetches
Umask-10 : 0x400 : PMU : [BUS_LOCKS] : None : Request: number bus lock and split lock requests
Umask-11 : 0x800 : PMU : [STRM_ST] : None : Request: number of streaming store requests
Umask-12 : 0x8000 : PMU : [OTHER] : None : Request: counts one of the following transaction types, including L3 invalidate, I/O, full or partial writes, WC or non-temporal stores, CLFLUSH, Fences, lock, unlock, split lock
Umask-13 : 0x241 : PMU : [ANY_IFETCH] : None : Alias to PF_IFETCH:DMND_IFETCH:PF_LLC_IFETCH
Umask-14 : 0x8fff : PMU : [ANY_REQUEST] : [default] : Alias to DMND_DATA_RD:DMND_RFO:DMND_IFETCH:WB:PF_DATA_RD:PF_RFO:PF_IFETCH:PF_LLC_DATA_RD:PF_LLC_RFO:PF_LLC_IFETCH:BUS_LOCKS:STRM_ST:OTHER
Umask-15 : 0x91 : PMU : [ANY_DATA] : None : Alias to DMND_DATA_RD:PF_DATA_RD:PF_LLC_DATA_RD
Umask-16 : 0x103 : PMU : [ANY_RFO] : None : Alias to DMND_RFO:PF_RFO:PF_LLC_RFO
Umask-17 : 0x10000 : PMU : [ANY_RESPONSE] : [default] : Response: count any response type
Umask-18 : 0x20000 : PMU : [NO_SUPP] : None : Supplier: counts number of times supplier information is not available
Umask-19 : 0x40000 : PMU : [LLC_HITM] : None : Supplier: counts L3 hits in M-state (initial lookup)
Umask-20 : 0x80000 : PMU : [LLC_HITE] : None : Supplier: counts L3 hits in E-state
Umask-21 : 0x100000 : PMU : [LLC_HITS] : None : Supplier: counts L3 hits in S-state
Umask-22 : 0x200000 : PMU : [LLC_HITF] : None : Supplier: counts L3 hits in F-state
Umask-23 : 0x400000 : PMU : [LLC_MISS_LOCAL] : None : Supplier: counts L3 misses to local DRAM
Umask-24 : 0x3c0000 : PMU : [LLC_HITMESF] : None : Alias to LLC_HITM:LLC_HITE:LLC_HITS:LLC_HITF
Umask-25 : 0x80000000 : PMU : [SNP_NONE] : None : Snoop: counts number of times no snoop-related information is available
Umask-26 : 0x100000000 : PMU : [SNP_NOT_NEEDED] : None : Snoop: counts the number of times no snoop was needed to satisfy the request
Umask-27 : 0x200000000 : PMU : [SNP_MISS] : None : Snoop: counts number of times a snoop was needed and it missed all snooped caches
Umask-28 : 0x400000000 : PMU : [SNP_NO_FWD] : None : Snoop: counts number of times a snoop was needed and it hit in at leas one snooped cache
Umask-29 : 0x800000000 : PMU : [SNP_FWD] : None : Snoop: counts number of times a snoop was needed and data was forwarded from a remote socket
Umask-30 : 0x1000000000 : PMU : [HITM] : None : Snoop: counts number of times a snoop was needed and it hitM-ed in local or remote cache
Umask-31 : 0x2000000000 : PMU : [NON_DRAM] : None : Snoop:  counts number of times target was a non-DRAM system address. This includes MMIO transactions
Umask-32 : 0x3f80000000 : PMU : [SNP_ANY] : [default] : Alias to SNP_NONE:SNP_NOT_NEEDED:SNP_MISS:SNP_NO_FWD:SNP_FWD:HITM:NON_DRAM
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
#-----------------------------
IDX   : 142606414
PMU name : snb (Intel Sandy Bridge)
Name     : OFFCORE_RESPONSE_1
Equiv         : None
Flags    : None
Desc     : Offcore response event (must provide at least one request type and either any_response or any combination of supplier + snoop)
Code     : 0x1bb
Umask-00 : 0x01 : PMU : [DMND_DATA_RD] : None : Request: number of demand and DCU prefetch data reads of full and partial cachelines as well as demand data page table entry cacheline reads. Does not count L2 data read prefetches or instruction fetches
Umask-01 : 0x02 : PMU : [DMND_RFO] : None : Request: number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO prefetches
Umask-02 : 0x04 : PMU : [DMND_IFETCH] : None : Request: number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches
Umask-03 : 0x08 : PMU : [WB] : None : Request: number of writebacks (modified to exclusive) transactions
Umask-04 : 0x10 : PMU : [PF_DATA_RD] : None : Request: number of data cacheline reads generated by L2 prefetchers
Umask-05 : 0x20 : PMU : [PF_RFO] : None : Request: number of RFO requests generated by L2 prefetchers
Umask-06 : 0x40 : PMU : [PF_IFETCH] : None : Request: number of code reads generated by L2 prefetchers
Umask-07 : 0x80 : PMU : [PF_LLC_DATA_RD] : None : Request: number of L3 prefetcher requests to L2 for loads
Umask-08 : 0x100 : PMU : [PF_LLC_RFO] : None : Request: number of RFO requests generated by L2 prefetcher
Umask-09 : 0x200 : PMU : [PF_LLC_IFETCH] : None : Request: number of L2 prefetcher requests to L3 for instruction fetches
Umask-10 : 0x400 : PMU : [BUS_LOCKS] : None : Request: number bus lock and split lock requests
Umask-11 : 0x800 : PMU : [STRM_ST] : None : Request: number of streaming store requests
Umask-12 : 0x8000 : PMU : [OTHER] : None : Request: counts one of the following transaction types, including L3 invalidate, I/O, full or partial writes, WC or non-temporal stores, CLFLUSH, Fences, lock, unlock, split lock
Umask-13 : 0x241 : PMU : [ANY_IFETCH] : None : Alias to PF_IFETCH:DMND_IFETCH:PF_LLC_IFETCH
Umask-14 : 0x8fff : PMU : [ANY_REQUEST] : [default] : Alias to DMND_DATA_RD:DMND_RFO:DMND_IFETCH:WB:PF_DATA_RD:PF_RFO:PF_IFETCH:PF_LLC_DATA_RD:PF_LLC_RFO:PF_LLC_IFETCH:BUS_LOCKS:STRM_ST:OTHER
Umask-15 : 0x91 : PMU : [ANY_DATA] : None : Alias to DMND_DATA_RD:PF_DATA_RD:PF_LLC_DATA_RD
Umask-16 : 0x103 : PMU : [ANY_RFO] : None : Alias to DMND_RFO:PF_RFO:PF_LLC_RFO
Umask-17 : 0x10000 : PMU : [ANY_RESPONSE] : [default] : Response: count any response type
Umask-18 : 0x20000 : PMU : [NO_SUPP] : None : Supplier: counts number of times supplier information is not available
Umask-19 : 0x40000 : PMU : [LLC_HITM] : None : Supplier: counts L3 hits in M-state (initial lookup)
Umask-20 : 0x80000 : PMU : [LLC_HITE] : None : Supplier: counts L3 hits in E-state
Umask-21 : 0x100000 : PMU : [LLC_HITS] : None : Supplier: counts L3 hits in S-state
Umask-22 : 0x200000 : PMU : [LLC_HITF] : None : Supplier: counts L3 hits in F-state
Umask-23 : 0x400000 : PMU : [LLC_MISS_LOCAL] : None : Supplier: counts L3 misses to local DRAM
Umask-24 : 0x3c0000 : PMU : [LLC_HITMESF] : None : Alias to LLC_HITM:LLC_HITE:LLC_HITS:LLC_HITF
Umask-25 : 0x80000000 : PMU : [SNP_NONE] : None : Snoop: counts number of times no snoop-related information is available
Umask-26 : 0x100000000 : PMU : [SNP_NOT_NEEDED] : None : Snoop: counts the number of times no snoop was needed to satisfy the request
Umask-27 : 0x200000000 : PMU : [SNP_MISS] : None : Snoop: counts number of times a snoop was needed and it missed all snooped caches
Umask-28 : 0x400000000 : PMU : [SNP_NO_FWD] : None : Snoop: counts number of times a snoop was needed and it hit in at leas one snooped cache
Umask-29 : 0x800000000 : PMU : [SNP_FWD] : None : Snoop: counts number of times a snoop was needed and data was forwarded from a remote socket
Umask-30 : 0x1000000000 : PMU : [HITM] : None : Snoop: counts number of times a snoop was needed and it hitM-ed in local or remote cache
Umask-31 : 0x2000000000 : PMU : [NON_DRAM] : None : Snoop:  counts number of times target was a non-DRAM system address. This includes MMIO transactions
Umask-32 : 0x3f80000000 : PMU : [SNP_ANY] : [default] : Alias to SNP_NONE:SNP_NOT_NEEDED:SNP_MISS:SNP_NO_FWD:SNP_FWD:HITM:NON_DRAM
Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean)
Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean)
Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean)
Modif-03 : 0x03 : PMU : [i] : invert (boolean)
Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer)
Modif-05 : 0x05 : PMU : [t] : measure any thread (boolean)
protected-mode no port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize no pidfile /var/run/redis_6379.pid loglevel notice logfile "" databases 16 always-show-logo no set-proc-title yes proc-title-template "{title} {listen-addr} {server-mode}" stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb rdb-del-sync-files no dir ./ replica-serve-stale-data yes replica-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-diskless-load disabled repl-disable-tcp-nodelay no replica-priority 100 acllog-max-len 128 requirepass Guyuan@2021 # New users are initialized with restrictive permissions by default, via the # equivalent of this ACL rule 'off resetkeys -@all'. Starting with Redis 6.2, it # is possible to manage access to Pub/Sub channels with ACL rules as well. The # default Pub/Sub channels permission if new users is controlled by the # acl-pubsub-default configuration directive, which accepts one of these values: # # allchannels: grants access to all Pub/Sub channels # resetchannels: revokes access to all Pub/Sub channels # # To ensure backward compatibility while upgrading Redis 6.0, acl-pubsub-default # defaults to the 'allchannels' permission. # # Future compatibility note: it is very likely that in a future version of Redis # the directive's default of 'allchannels' will be changed to 'resetchannels' in # order to provide better out-of-the-box Pub/Sub security. Therefore, it is # recommended that you explicitly define Pub/Sub permissions for all users # rather then rely on implicit default values. Once you've set explicit # Pub/Sub for all existing users, you should uncomment the following line. # # acl-pubsub-default resetchannels # Command renaming (DEPRECATED). # # ------------------------------------------------------------------------ # WARNING: avoid using this option if possible. Instead use ACLs to remove # commands from the default user, and put them only in some admin user you # create for administrative purposes. # ------------------------------------------------------------------------ # # It is possible to change the name of dangerous commands in a shared # environment. For instance the CONFIG command may be renamed into something # hard to guess so that it will still be available for internal-use tools # but not available for general clients. # # Example: # # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 # # It is also possible to completely kill a command by renaming it into # an empty string: # # rename-command CONFIG "" # # Please note that changing the name of commands that are logged into the # AOF file or transmitted to replicas may cause problems. ################################### CLIENTS #################################### # Set the max number of connected clients at the same time. By default # this limit is set to 10000 clients, however if the Redis server is not # able to configure the process file limit to allow for the specified limit # the max number of allowed clients is set to the current file limit # minus 32 (as Redis reserves a few file descriptors for internal uses). # # Once the limit is reached Redis will close all the new connections sending # an error 'max number of clients reached'. # # IMPORTANT: When Redis Cluster is used, the max number of connections is also # shared with the cluster bus: every node in the cluster will use two # connections, one incoming and another outgoing. It is important to size the # limit accordingly in case of very large clusters. # # maxclients 10000 ############################## MEMORY MANAGEMENT ################################ # Set a memory usage limit to the specified amount of bytes. # When the memory limit is reached Redis will try to remove keys # according to the eviction policy selected (see maxmemory-policy). # # If Redis can't remove keys according to the policy, or if the policy is # set to 'noeviction', Redis will start to reply with errors to commands # that would use more memory, like SET, LPUSH, and so on, and will continue # to reply to read-only commands like GET. # # This option is usually useful when using Redis as an LRU or LFU cache, or to # set a hard memory limit for an instance (using the 'noeviction' policy). # # WARNING: If you have replicas attached to an instance with maxmemory on, # the size of the output buffers needed to feed the replicas are subtracted # from the used memory count, so that network problems / resyncs will # not trigger a loop where keys are evicted, and in turn the output # buffer of replicas is full with DELs of keys evicted triggering the deletion # of more keys, and so forth until the database is completely emptied. # # In short... if you have replicas attached it is suggested that you set a lower # limit for maxmemory so that there is some free RAM on the system for replica # output buffers (but this is not needed if the policy is 'noeviction'). # # maxmemory <bytes> # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory # is reached. You can select one from the following behaviors: # # volatile-lru -> Evict using approximated LRU, only keys with an expire set. # allkeys-lru -> Evict any key using approximated LRU. # volatile-lfu -> Evict using approximated LFU, only keys with an expire set. # allkeys-lfu -> Evict any key using approximated LFU. # volatile-random -> Remove a random key having an expire set. # allkeys-random -> Remove a random key, any key. # volatile-ttl -> Remove the key with the nearest expire time (minor TTL) # noeviction -> Don't evict anything, just return an error on write operations. # # LRU means Least Recently Used # LFU means Least Frequently Used # # Both LRU, LFU and volatile-ttl are implemented using approximated # randomized algorithms. # # Note: with any of the above policies, when there are no suitable keys for # eviction, Redis will return an error on write operations that require # more memory. These are usually commands that create new keys, add data or # modify existing keys. A few examples are: SET, INCR, HSET, LPUSH, SUNIONSTORE, # SORT (due to the STORE argument), and EXEC (if the transaction includes any # command that requires memory). # # The default is: # # maxmemory-policy noeviction # LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated # algorithms (in order to save memory), so you can tune it for speed or # accuracy. By default Redis will check five keys and pick the one that was # used least recently, you can change the sample size using the following # configuration directive. # # The default of 5 produces good enough results. 10 Approximates very closely # true LRU but costs more CPU. 3 is faster but not very accurate. # # maxmemory-samples 5 # Eviction processing is designed to function well with the default setting. # If there is an unusually large amount of write traffic, this value may need to # be increased. Decreasing this value may reduce latency at the risk of # eviction processing effectiveness # 0 = minimum latency, 10 = default, 100 = process without regard to latency # # maxmemory-eviction-tenacity 10 # Starting from Redis 5, by default a replica will ignore its maxmemory setting # (unless it is promoted to master after a failover or manually). It means # that the eviction of keys will be just handled by the master, sending the # DEL commands to the replica as keys evict in the master side. # # This behavior ensures that masters and replicas stay consistent, and is usually # what you want, however if your replica is writable, or you want the replica # to have a different memory setting, and you are sure all the writes performed # to the replica are idempotent, then you may change this default (but be sure # to understand what you are doing). # # Note that since the replica by default does not evict, it may end using more # memory than the one set via maxmemory (there are certain buffers that may # be larger on the replica, or data structures may sometimes take more memory # and so forth). So make sure you monitor your replicas and make sure they # have enough memory to never hit a real out-of-memory condition before the # master hits the configured maxmemory setting. # # replica-ignore-maxmemory yes # Redis reclaims expired keys in two ways: upon access when those keys are # found to be expired, and also in background, in what is called the # "active expire key". The key space is slowly and interactively scanned # looking for expired keys to reclaim, so that it is possible to free memory # of keys that are expired and will never be accessed again in a short time. # # The default effort of the expire cycle will try to avoid having more than # ten percent of expired keys still in memory, and will try to avoid consuming # more than 25% of total memory and to add latency to the system. However # it is possible to increase the expire "effort" that is normally set to # "1", to a greater value, up to the value "10". At its maximum value the # system will use more CPU, longer cycles (and technically may introduce # more latency), and will tolerate less already expired keys still present # in the system. It's a tradeoff between memory, CPU and latency. # # active-expire-effort 1 ############################# LAZY FREEING #################################### # Redis has two primitives to delete keys. One is called DEL and is a blocking # deletion of the object. It means that the server stops processing new commands # in order to reclaim all the memory associated with an object in a synchronous # way. If the key deleted is associated with a small object, the time needed # in order to execute the DEL command is very small and comparable to most other # O(1) or O(log_N) commands in Redis. However if the key is associated with an # aggregated value containing millions of elements, the server can block for # a long time (even seconds) in order to complete the operation. # # For the above reasons Redis also offers non blocking deletion primitives # such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and # FLUSHDB commands, in order to reclaim memory in background. Those commands # are executed in constant time. Another thread will incrementally free the # object in the background as fast as possible. # # DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled. # It's up to the design of the application to understand when it is a good # idea to use one or the other. However the Redis server sometimes has to # delete keys or flush the whole database as a side effect of other operations. # Specifically Redis deletes objects independently of a user call in the # following scenarios: # # 1) On eviction, because of the maxmemory and maxmemory policy configurations, # in order to make room for new data, without going over the specified # memory limit. # 2) Because of expire: when a key with an associated time to live (see the # EXPIRE command) must be deleted from memory. # 3) Because of a side effect of a command that stores data on a key that may # already exist. For example the RENAME command may delete the old key # content when it is replaced with another one. Similarly SUNIONSTORE # or SORT with STORE option may delete existing keys. The SET command # itself removes any old content of the specified key in order to replace # it with the specified string. # 4) During replication, when a replica performs a full resynchronization with # its master, the content of the whole database is removed in order to # load the RDB file just transferred. # # In all the above cases the default is to delete objects in a blocking way, # like if DEL was called. However you can configure each case specifically # in order to instead release memory in a non-blocking way like if UNLINK # was called, using the following configuration directives. lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no # It is also possible, for the case when to replace the user code DEL calls # with UNLINK calls is not easy, to modify the default behavior of the DEL # command to act exactly like UNLINK, using the following configuration # directive: lazyfree-lazy-user-del no # FLUSHDB, FLUSHALL, and SCRIPT FLUSH support both asynchronous and synchronous # deletion, which can be controlled by passing the [SYNC|ASYNC] flags into the # commands. When neither flag is passed, this directive will be used to determine # if the data should be deleted asynchronously. lazyfree-lazy-user-flush no ################################ THREADED I/O ################################# # Redis is mostly single threaded, however there are certain threaded # operations such as UNLINK, slow I/O accesses and other things that are # performed on side threads. # # Now it is also possible to handle Redis clients socket reads and writes # in different I/O threads. Since especially writing is so slow, normally # Redis users use pipelining in order to speed up the Redis performances per # core, and spawn multiple instances in order to scale more. Using I/O # threads it is possible to easily speedup two times Redis without resorting # to pipelining nor sharding of the instance. # # By default threading is disabled, we suggest enabling it only in machines # that have at least 4 or more cores, leaving at least one spare core. # Using more than 8 threads is unlikely to help much. We also recommend using # threaded I/O only if you actually have performance problems, with Redis # instances being able to use a quite big percentage of CPU time, otherwise # there is no point in using this feature. # # So for instance if you have a four cores boxes, try to use 2 or 3 I/O # threads, if you have a 8 cores, try to use 6 threads. In order to # enable I/O threads use the following configuration directive: # # io-threads 4 # # Setting io-threads to 1 will just use the main thread as usual. # When I/O threads are enabled, we only use threads for writes, that is # to thread the write(2) syscall and transfer the client buffers to the # socket. However it is also possible to enable threading of reads and # protocol parsing using the following configuration directive, by setting # it to yes: # # io-threads-do-reads no # # Usually threading reads doesn't help much. # # NOTE 1: This configuration directive cannot be changed at runtime via # CONFIG SET. Aso this feature currently does not work when SSL is # enabled. # # NOTE 2: If you want to test the Redis speedup using redis-benchmark, make # sure you also run the benchmark itself in threaded mode, using the # --threads option to match the number of Redis threads, otherwise you'll not # be able to notice the improvements. ############################ KERNEL OOM CONTROL ############################## # On Linux, it is possible to hint the kernel OOM killer on what processes # should be killed first when out of memory. # # Enabling this feature makes Redis actively control the oom_score_adj value # for all its processes, depending on their role. The default scores will # attempt to have background child processes killed before all others, and # replicas killed before masters. # # Redis supports three options: # # no: Don't make changes to oom-score-adj (default). # yes: Alias to "relative" see below. # absolute: Values in oom-score-adj-values are written as is to the kernel. # relative: Values are used relative to the initial value of oom_score_adj when # the server starts and are then clamped to a range of -1000 to 1000. # Because typically the initial value is 0, they will often match the # absolute values. oom-score-adj no # When oom-score-adj is used, this directive controls the specific values used # for master, replica and background child processes. Values range -2000 to # 2000 (higher means more likely to be killed). # # Unprivileged processes (not root, and without CAP_SYS_RESOURCE capabilities) # can freely increase their value, but not decrease it below its initial # settings. This means that setting oom-score-adj to "relative" and setting the # oom-score-adj-values to positive values will always succeed. oom-score-adj-values 0 200 800 #################### KERNEL transparent hugepage CONTROL ###################### # Usually the kernel Transparent Huge Pages control is set to "madvise" or # or "never" by default (/sys/kernel/mm/transparent_hugepage/enabled), in which # case this config has no effect. On systems in which it is set to "always", # redis will attempt to disable it specifically for the redis process in order # to avoid latency problems specifically with fork(2) and CoW. # If for some reason you prefer to keep it enabled, you can set this config to # "no" and the kernel global to "always". disable-thp yes ############################## APPEND ONLY MODE ############################### # By default Redis asynchronously dumps the dataset on disk. This mode is # good enough in many applications, but an issue with the Redis process or # a power outage may result into a few minutes of writes lost (depending on # the configured save points). # # The Append Only File is an alternative persistence mode that provides # much better durability. For instance using the default data fsync policy # (see later in the config file) Redis can lose just one second of writes in a # dramatic event like a server power outage, or a single write if something # wrong with the Redis process itself happens, but the operating system is # still running correctly. # # AOF and RDB persistence can be enabled at the same time without problems. # If the AOF is enabled on startup Redis will load the AOF, that is the file # with the better durability guarantees. # # Please check https://redis.io/topics/persistence for more information. appendonly yes # The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" # The fsync() call tells the Operating System to actually write data on disk # instead of waiting for more data in the output buffer. Some OS will really flush # data on disk, some other OS will just try to do it ASAP. # # Redis supports three different modes: # # no: don't fsync, just let the OS flush the data when it wants. Faster. # always: fsync after every write to the append only log. Slow, Safest. # everysec: fsync only one time every second. Compromise. # # The default is "everysec", as that's usually the right compromise between # speed and data safety. It's up to you to understand if you can relax this to # "no" that will let the operating system flush the output buffer when # it wants, for better performances (but if you can live with the idea of # some data loss consider the default persistence mode that's snapshotting), # or on the contrary, use "always" that's very slow but a bit safer than # everysec. # # More details please check the following article: # http://antirez.com/post/redis-persistence-demystified.html # # If unsure, use "everysec". # appendfsync always appendfsync everysec # appendfsync no # When the AOF fsync policy is set to always or everysec, and a background # saving process (a background save or AOF log background rewriting) is # performing a lot of I/O against the disk, in some Linux configurations # Redis may block too long on the fsync() call. Note that there is no fix for # this currently, as even performing fsync in a different thread will block # our synchronous write(2) call. # # In order to mitigate this problem it's possible to use the following option # that will prevent fsync() from being called in the main process while a # BGSAVE or BGREWRITEAOF is in progress. # # This means that while another child is saving, the durability of Redis is # the same as "appendfsync none". In practical terms, this means that it is # possible to lose up to 30 seconds of log in the worst scenario (with the # default Linux settings). # # If you have latency problems turn this to "yes". Otherwise leave it as # "no" that is the safest pick from the point of view of durability. no-appendfsync-on-rewrite no # Automatic rewrite of the append only file. # Redis is able to automatically rewrite the log file implicitly calling # BGREWRITEAOF when the AOF log size grows by the specified percentage. # # This is how it works: Redis remembers the size of the AOF file after the # latest rewrite (if no rewrite has happened since the restart, the size of # the AOF at startup is used). # # This base size is compared to the current size. If the current size is # bigger than the specified percentage, the rewrite is triggered. Also # you need to specify a minimal size for the AOF file to be rewritten, this # is useful to avoid rewriting the AOF file even if the percentage increase # is reached but it is still pretty small. # # Specify a percentage of zero in order to disable the automatic AOF # rewrite feature. auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb # An AOF file may be found to be truncated at the end during the Redis # startup process, when the AOF data gets loaded back into memory. # This may happen when the system where Redis is running # crashes, especially when an ext4 filesystem is mounted without the # data=ordered option (however this can't happen when Redis itself # crashes or aborts but the operating system still works correctly). # # Redis can either exit with an error when this happens, or load as much # data as possible (the default now) and start if the AOF file is found # to be truncated at the end. The following option controls this behavior. # # If aof-load-truncated is set to yes, a truncated AOF file is loaded and # the Redis server starts emitting a log to inform the user of the event. # Otherwise if the option is set to no, the server aborts with an error # and refuses to start. When the option is set to no, the user requires # to fix the AOF file using the "redis-check-aof" utility before to restart # the server. # # Note that if the AOF file will be found to be corrupted in the middle # the server will still exit with an error. This option only applies when # Redis will try to read more data from the AOF file but not enough bytes # will be found. aof-load-truncated yes # When rewriting the AOF file, Redis is able to use an RDB preamble in the # AOF file for faster rewrites and recoveries. When this option is turned # on the rewritten AOF file is composed of two different stanzas: # # [RDB file][AOF tail] # # When loading, Redis recognizes that the AOF file starts with the "REDIS" # string and loads the prefixed RDB file, then continues loading the AOF # tail. aof-use-rdb-preamble yes ################################ LUA SCRIPTING ############################### # Max execution time of a Lua script in milliseconds. # # If the maximum execution time is reached Redis will log that a script is # still in execution after the maximum allowed time and will start to # reply to queries with an error. # # When a long running script exceeds the maximum execution time only the # SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be # used to stop a script that did not yet call any write commands. The second # is the only way to shut down the server in the case a write command was # already issued by the script but the user doesn't want to wait for the natural # termination of the script. # # Set it to 0 or a negative value for unlimited execution without warnings. lua-time-limit 5000 ################################ REDIS CLUSTER ############################### # Normal Redis instances can't be part of a Redis Cluster; only nodes that are # started as cluster nodes can. In order to start a Redis instance as a # cluster node enable the cluster support uncommenting the following: # # cluster-enabled yes # Every cluster node has a cluster configuration file. This file is not # intended to be edited by hand. It is created and updated by Redis nodes. # Every Redis Cluster node requires a different cluster configuration file. # Make sure that instances running in the same system do not have # overlapping cluster configuration file names. # # cluster-config-file nodes-6379.conf # Cluster node timeout is the amount of milliseconds a node must be unreachable # for it to be considered in failure state. # Most other internal time limits are a multiple of the node timeout. # # cluster-node-timeout 15000 # A replica of a failing master will avoid to start a failover if its data # looks too old. # # There is no simple way for a replica to actually have an exact measure of # its "data age", so the following two checks are performed: # # 1) If there are multiple replicas able to failover, they exchange messages # in order to try to give an advantage to the replica with the best # replication offset (more data from the master processed). # Replicas will try to get their rank by offset, and apply to the start # of the failover a delay proportional to their rank. # # 2) Every single replica computes the time of the last interaction with # its master. This can be the last ping or command received (if the master # is still in the "connected" state), or the time that elapsed since the # disconnection with the master (if the replication link is currently down). # If the last interaction is too old, the replica will not try to failover # at all. # # The point "2" can be tuned by user. Specifically a replica will not perform # the failover if, since the last interaction with the master, the time # elapsed is greater than: # # (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period # # So for example if node-timeout is 30 seconds, and the cluster-replica-validity-factor # is 10, and assuming a default repl-ping-replica-period of 10 seconds, the # replica will not try to failover if it was not able to talk with the master # for longer than 310 seconds. # # A large cluster-replica-validity-factor may allow replicas with too old data to failover # a master, while a too small value may prevent the cluster from being able to # elect a replica at all. # # For maximum availability, it is possible to set the cluster-replica-validity-factor # to a value of 0, which means, that replicas will always try to failover the # master regardless of the last time they interacted with the master. # (However they'll always try to apply a delay proportional to their # offset rank). # # Zero is the only value able to guarantee that when all the partitions heal # the cluster will always be able to continue. # # cluster-replica-validity-factor 10 # Cluster replicas are able to migrate to orphaned masters, that are masters # that are left without working replicas. This improves the cluster ability # to resist to failures as otherwise an orphaned master can't be failed over # in case of failure if it has no working replicas. # # Replicas migrate to orphaned masters only if there are still at least a # given number of other working replicas for their old master. This number # is the "migration barrier". A migration barrier of 1 means that a replica # will migrate only if there is at least 1 other working replica for its master # and so forth. It usually reflects the number of replicas you want for every # master in your cluster. # # Default is 1 (replicas migrate only if their masters remain with at least # one replica). To disable migration just set it to a very large value or # set cluster-allow-replica-migration to 'no'. # A value of 0 can be set but is useful only for debugging and dangerous # in production. # # cluster-migration-barrier 1 # Turning off this option allows to use less automatic cluster configuration. # It both disables migration to orphaned masters and migration from masters # that became empty. # # Default is 'yes' (allow automatic migrations). # # cluster-allow-replica-migration yes # By default Redis Cluster nodes stop accepting queries if they detect there # is at least a hash slot uncovered (no available node is serving it). # This way if the cluster is partially down (for example a range of hash slots # are no longer covered) all the cluster becomes, eventually, unavailable. # It automatically returns available as soon as all the slots are covered again. # # However sometimes you want the subset of the cluster which is working, # to continue to accept queries for the part of the key space that is still # covered. In order to do so, just set the cluster-require-full-coverage # option to no. # # cluster-require-full-coverage yes # This option, when set to yes, prevents replicas from trying to failover its # master during master failures. However the replica can still perform a # manual failover, if forced to do so. # # This is useful in different scenarios, especially in the case of multiple # data center operations, where we want one side to never be promoted if not # in the case of a total DC failure. # # cluster-replica-no-failover no # This option, when set to yes, allows nodes to serve read traffic while the # the cluster is in a down state, as long as it believes it owns the slots. # # This is useful for two cases. The first case is for when an application # doesn't require consistency of data during node failures or network partitions. # One example of this is a cache, where as long as the node has the data it # should be able to serve it. # # The second use case is for configurations that don't meet the recommended # three shards but want to enable cluster mode and scale later. A # master outage in a 1 or 2 shard configuration causes a read/write outage to the # entire cluster without this option set, with it set there is only a write outage. # Without a quorum of masters, slot ownership will not change automatically. # # cluster-allow-reads-when-down no # In order to setup your cluster make sure to read the documentation # available at https://redis.io web site. ########################## CLUSTER DOCKER/NAT support ######################## # In certain deployments, Redis Cluster nodes address discovery fails, because # addresses are NAT-ted or because ports are forwarded (the typical case is # Docker and other containers). # # In order to make Redis Cluster working in such environments, a static # configuration where each node knows its public address is needed. The # following four options are used for this scope, and are: # # * cluster-announce-ip # * cluster-announce-port # * cluster-announce-tls-port # * cluster-announce-bus-port # # Each instructs the node about its address, client ports (for connections # without and with TLS) and cluster message bus port. The information is then # published in the header of the bus packets so that other nodes will be able to # correctly map the address of the node publishing the information. # # If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set # to zero, then cluster-announce-port refers to the TLS port. Note also that # cluster-announce-tls-port has no effect if cluster-tls is set to no. # # If the above options are not used, the normal Redis Cluster auto-detection # will be used instead. # # Note that when remapped, the bus port may not be at the fixed offset of # clients port + 10000, so you can specify any port and bus-port depending # on how they get remapped. If the bus-port is not set, a fixed offset of # 10000 will be used as usual. # # Example: # # cluster-announce-ip 10.1.1.5 # cluster-announce-tls-port 6379 # cluster-announce-port 0 # cluster-announce-bus-port 6380 ################################## SLOW LOG ################################### # The Redis Slow Log is a system to log queries that exceeded a specified # execution time. The execution time does not include the I/O operations # like talking with the client, sending the reply and so forth, # but just the time needed to actually execute the command (this is the only # stage of command execution where the thread is blocked and can not serve # other requests in the meantime). # # You can configure the slow log with two parameters: one tells Redis # what is the execution time, in microseconds, to exceed in order for the # command to get logged, and the other parameter is the length of the # slow log. When a new command is logged the oldest one is removed from the # queue of logged commands. # The following time is expressed in microseconds, so 1000000 is equivalent # to one second. Note that a negative number disables the slow log, while # a value of zero forces the logging of every command. slowlog-log-slower-than 10000 # There is no limit to this length. Just be aware that it will consume memory. # You can reclaim memory used by the slow log with SLOWLOG RESET. slowlog-max-len 128 ################################ LATENCY MONITOR ############################## # The Redis latency monitoring subsystem samples different operations # at runtime in order to collect data related to possible sources of # latency of a Redis instance. # # Via the LATENCY command this information is available to the user that can # print graphs and obtain reports. # # The system only logs operations that were performed in a time equal or # greater than the amount of milliseconds specified via the # latency-monitor-threshold configuration directive. When its value is set # to zero, the latency monitor is turned off. # # By default latency monitoring is disabled since it is mostly not needed # if you don't have latency issues, and collecting data has a performance # impact, that while very small, can be measured under big load. Latency # monitoring can easily be enabled at runtime using the command # "CONFIG SET latency-monitor-threshold <milliseconds>" if needed. latency-monitor-threshold 0 ############################# EVENT NOTIFICATION ############################## # Redis can notify Pub/Sub clients about events happening in the key space. # This feature is documented at https://redis.io/topics/notifications # # For instance if keyspace events notification is enabled, and a client # performs a DEL operation on key "foo" stored in the Database 0, two # messages will be published via Pub/Sub: # # PUBLISH __keyspace@0__:foo del # PUBLISH __keyevent@0__:del foo # # It is possible to select the events that Redis will notify among a set # of classes. Every class is identified by a single character: # # K Keyspace events, published with __keyspace@<db>__ prefix. # E Keyevent events, published with __keyevent@<db>__ prefix. # g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... # $ String commands # l List commands # s Set commands # h Hash commands # z Sorted set commands # x Expired events (events generated every time a key expires) # e Evicted events (events generated when a key is evicted for maxmemory) # t Stream commands # d Module key type events # m Key-miss events (Note: It is not included in the 'A' class) # A Alias for g$lshzxetd, so that the "AKE" string means all the events # (Except key-miss events which are excluded from 'A' due to their # unique nature). # # The "notify-keyspace-events" takes as argument a string that is composed # of zero or multiple characters. The empty string means that notifications # are disabled. # # Example: to enable list and generic events, from the point of view of the # event name, use: # # notify-keyspace-events Elg # # Example 2: to get the stream of the expired keys subscribing to channel # name __keyevent@0__:expired use: # # notify-keyspace-events Ex # # By default all notifications are disabled because most users don't need # this feature and the feature has some overhead. Note that if you don't # specify at least one of K or E, no events will be delivered. notify-keyspace-events "" ############################### GOPHER SERVER ################################# # Redis contains an implementation of the Gopher protocol, as specified in # the RFC 1436 (https://www.ietf.org/rfc/rfc1436.txt). # # The Gopher protocol was very popular in the late '90s. It is an alternative # to the web, and the implementation both server and client side is so simple # that the Redis server has just 100 lines of code in order to implement this # support. # # What do you do with Gopher nowadays? Well Gopher never *really* died, and # lately there is a movement in order for the Gopher more hierarchical content # composed of just plain text documents to be resurrected. Some want a simpler # internet, others believe that the mainstream internet became too much # controlled, and it's cool to create an alternative space for people that # want a bit of fresh air. # # Anyway for the 10nth birthday of the Redis, we gave it the Gopher protocol # as a gift. # # --- HOW IT WORKS? --- # # The Redis Gopher support uses the inline protocol of Redis, and specifically # two kind of inline requests that were anyway illegal: an empty request # or any request that starts with "/" (there are no Redis commands starting # with such a slash). Normal RESP2/RESP3 requests are completely out of the # path of the Gopher protocol implementation and are served as usual as well. # # If you open a connection to Redis when Gopher is enabled and send it # a string like "/foo", if there is a key named "/foo" it is served via the # Gopher protocol. # # In order to create a real Gopher "hole" (the name of a Gopher site in Gopher # talking), you likely need a script like the following: # # https://github.com/antirez/gopher2redis # # --- SECURITY WARNING --- # # If you plan to put Redis on the internet in a publicly accessible address # to server Gopher pages MAKE SURE TO SET A PASSWORD to the instance. # Once a password is set: # # 1. The Gopher server (when enabled, not by default) will still serve # content via Gopher. # 2. However other commands cannot be called before the client will # authenticate. # # So use the 'requirepass' option to protect your instance. # # Note that Gopher is not currently supported when 'io-threads-do-reads' # is enabled. # # To enable Gopher support, uncomment the following line and set the option # from no (the default) to yes. # # gopher-enabled no ############################### ADVANCED CONFIG ############################### # Hashes are encoded using a memory efficient data structure when they have a # small number of entries, and the biggest entry does not exceed a given # threshold. These thresholds can be configured using the following directives. hash-max-ziplist-entries 512 hash-max-ziplist-value 64 # Lists are also encoded in a special way to save a lot of space. # The number of entries allowed per internal list node can be specified # as a fixed maximum size or a maximum number of elements. # For a fixed maximum size, use -5 through -1, meaning: # -5: max size: 64 Kb <-- not recommended for normal workloads # -4: max size: 32 Kb <-- not recommended # -3: max size: 16 Kb <-- probably not recommended # -2: max size: 8 Kb <-- good # -1: max size: 4 Kb <-- good # Positive numbers mean store up to _exactly_ that number of elements # per list node. # The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), # but if your use case is unique, adjust the settings as necessary. list-max-ziplist-size -2 # Lists may also be compressed. # Compress depth is the number of quicklist ziplist nodes from *each* side of # the list to *exclude* from compression. The head and tail of the list # are always uncompressed for fast push/pop operations. Settings are: # 0: disable all list compression # 1: depth 1 means "don't start compressing until after 1 node into the list, # going from either the head or tail" # So: [head]->node->node->...->node->[tail] # [head], [tail] will always be uncompressed; inner nodes will compress. # 2: [head]->[next]->node->node->...->node->[prev]->[tail] # 2 here means: don't compress head or head->next or tail->prev or tail, # but compress all nodes between them. # 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] # etc. list-compress-depth 0 # Sets have a special encoding in just one case: when a set is composed # of just strings that happen to be integers in radix 10 in the range # of 64 bit signed integers. # The following configuration setting sets the limit in the size of the # set in order to use this special memory saving encoding. set-max-intset-entries 512 # Similarly to hashes and lists, sorted sets are also specially encoded in # order to save a lot of space. This encoding is only used when the length and # elements of a sorted set are below the following limits: zset-max-ziplist-entries 128 zset-max-ziplist-value 64 # HyperLogLog sparse representation bytes limit. The limit includes the # 16 bytes header. When an HyperLogLog using the sparse representation crosses # this limit, it is converted into the dense representation. # # A value greater than 16000 is totally useless, since at that point the # dense representation is more memory efficient. # # The suggested value is ~ 3000 in order to have the benefits of # the space efficient encoding without slowing down too much PFADD, # which is O(N) with the sparse encoding. The value can be raised to # ~ 10000 when CPU is not a concern, but space is, and the data set is # composed of many HyperLogLogs with cardinality in the 0 - 15000 range. hll-sparse-max-bytes 3000 # Streams macro node max size / items. The stream data structure is a radix # tree of big nodes that encode multiple items inside. Using this configuration # it is possible to configure how big a single node can be in bytes, and the # maximum number of items it may contain before switching to a new node when # appending new stream entries. If any of the following settings are set to # zero, the limit is ignored, so for instance it is possible to set just a # max entries limit by setting max-bytes to 0 and max-entries to the desired # value. stream-node-max-bytes 4096 stream-node-max-entries 100 # Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in # order to help rehashing the main Redis hash table (the one mapping top-level # keys to values). The hash table implementation Redis uses (see dict.c) # performs a lazy rehashing: the more operation you run into a hash table # that is rehashing, the more rehashing "steps" are performed, so if the # server is idle the rehashing is never complete and some more memory is used # by the hash table. # # The default is to use this millisecond 10 times every second in order to # actively rehash the main dictionaries, freeing memory when possible. # # If unsure: # use "activerehashing no" if you have hard latency requirements and it is # not a good thing in your environment that Redis can reply from time to time # to queries with 2 milliseconds delay. # # use "activerehashing yes" if you don't have such hard requirements but # want to free memory asap when possible. activerehashing yes # The client output buffer limits can be used to force disconnection of clients # that are not reading data from the server fast enough for some reason (a # common reason is that a Pub/Sub client can't consume messages as fast as the # publisher can produce them). # # The limit can be set differently for the three different classes of clients: # # normal -> normal clients including MONITOR clients # replica -> replica clients # pubsub -> clients subscribed to at least one pubsub channel or pattern # # The syntax of every client-output-buffer-limit directive is the following: # # client-output-buffer-limit <class> <hard limit> <soft limit> <soft seconds> # # A client is immediately disconnected once the hard limit is reached, or if # the soft limit is reached and remains reached for the specified number of # seconds (continuously). # So for instance if the hard limit is 32 megabytes and the soft limit is # 16 megabytes / 10 seconds, the client will get disconnected immediately # if the size of the output buffers reach 32 megabytes, but will also get # disconnected if the client reaches 16 megabytes and continuously overcomes # the limit for 10 seconds. # # By default normal clients are not limited because they don't receive data # without asking (in a push way), but just after a request, so only # asynchronous clients may create a scenario where data is requested faster # than it can read. # # Instead there is a default limit for pubsub and replica clients, since # subscribers and replicas receive data in a push fashion. # # Both the hard or the soft limit can be disabled by setting them to zero. client-output-buffer-limit normal 0 0 0 client-output-buffer-limit replica 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 # Client query buffers accumulate new commands. They are limited to a fixed # amount by default in order to avoid that a protocol desynchronization (for # instance due to a bug in the client) will lead to unbound memory usage in # the query buffer. However you can configure it here if you have very special # needs, such us huge multi/exec requests or alike. # # client-query-buffer-limit 1gb # In the Redis protocol, bulk requests, that are, elements representing single # strings, are normally limited to 512 mb. However you can change this limit # here, but must be 1mb or greater # # proto-max-bulk-len 512mb # Redis calls an internal function to perform many background tasks, like # closing connections of clients in timeout, purging expired keys that are # never requested, and so forth. # # Not all tasks are performed with the same frequency, but Redis checks for # tasks to perform according to the specified "hz" value. # # By default "hz" is set to 10. Raising the value will use more CPU when # Redis is idle, but at the same time will make Redis more responsive when # there are many keys expiring at the same time, and timeouts may be # handled with more precision. # # The range is between 1 and 500, however a value over 100 is usually not # a good idea. Most users should use the default of 10 and raise this up to # 100 only in environments where very low latency is required. hz 10 # Normally it is useful to have an HZ value which is proportional to the # number of clients connected. This is useful in order, for instance, to # avoid too many clients are processed for each background task invocation # in order to avoid latency spikes. # # Since the default HZ value by default is conservatively set to 10, Redis # offers, and enables by default, the ability to use an adaptive HZ value # which will temporarily raise when there are many connected clients. # # When dynamic HZ is enabled, the actual configured HZ will be used # as a baseline, but multiples of the configured HZ value will be actually # used as needed once more clients are connected. In this way an idle # instance will use very little CPU time while a busy instance will be # more responsive. dynamic-hz yes # When a child rewrites the AOF file, if the following option is enabled # the file will be fsync-ed every 32 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. aof-rewrite-incremental-fsync yes # When redis saves RDB file, if the following option is enabled # the file will be fsync-ed every 32 MB of data generated. This is useful # in order to commit the file to the disk more incrementally and avoid # big latency spikes. rdb-save-incremental-fsync yes # Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good # idea to start with the default settings and only change them after investigating # how to improve the performances and how the keys LFU change over time, which # is possible to inspect via the OBJECT FREQ command. # # There are two tunable parameters in the Redis LFU implementation: the # counter logarithm factor and the counter decay time. It is important to # understand what the two parameters mean before changing them. # # The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis # uses a probabilistic increment with logarithmic behavior. Given the value # of the old counter, when a key is accessed, the counter is incremented in # this way: # # 1. A random number R between 0 and 1 is extracted. # 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1). # 3. The counter is incremented only if R < P. # # The default lfu-log-factor is 10. This is a table of how the frequency # counter changes with a different number of accesses with different # logarithmic factors: # # +--------+------------+------------+------------+------------+------------+ # | factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits | # +--------+------------+------------+------------+------------+------------+ # | 0 | 104 | 255 | 255 | 255 | 255 | # +--------+------------+------------+------------+------------+------------+ # | 1 | 18 | 49 | 255 | 255 | 255 | # +--------+------------+------------+------------+------------+------------+ # | 10 | 10 | 18 | 142 | 255 | 255 | # +--------+------------+------------+------------+------------+------------+ # | 100 | 8 | 11 | 49 | 143 | 255 | # +--------+------------+------------+------------+------------+------------+ # # NOTE: The above table was obtained by running the following commands: # # redis-benchmark -n 1000000 incr foo # redis-cli object freq foo # # NOTE 2: The counter initial value is 5 in order to give new objects a chance # to accumulate hits. # # The counter decay time is the time, in minutes, that must elapse in order # for the key counter to be divided by two (or decremented if it has a value # less <= 10). # # The default value for the lfu-decay-time is 1. A special value of 0 means to # decay the counter every time it happens to be scanned. # # lfu-log-factor 10 # lfu-decay-time 1 ########################### ACTIVE DEFRAGMENTATION ####################### # # What is active defragmentation? # ------------------------------- # # Active (online) defragmentation allows a Redis server to compact the # spaces left between small allocations and deallocations of data in memory, # thus allowing to reclaim back memory. # # Fragmentation is a natural process that happens with every allocator (but # less so with Jemalloc, fortunately) and certain workloads. Normally a server # restart is needed in order to lower the fragmentation, or at least to flush # away all the data and create it again. However thanks to this feature # implemented by Oran Agra for Redis 4.0 this process can happen at runtime # in a "hot" way, while the server is running. # # Basically when the fragmentation is over a certain level (see the # configuration options below) Redis will start to create new copies of the # values in contiguous memory regions by exploiting certain specific Jemalloc # features (in order to understand if an allocation is causing fragmentation # and to allocate it in a better place), and at the same time, will release the # old copies of the data. This process, repeated incrementally for all the keys # will cause the fragmentation to drop back to normal values. # # Important things to understand: # # 1. This feature is disabled by default, and only works if you compiled Redis # to use the copy of Jemalloc we ship with the source code of Redis. # This is the default with Linux builds. # # 2. You never need to enable this feature if you don't have fragmentation # issues. # # 3. Once you experience fragmentation, you can enable this feature when # needed with the command "CONFIG SET activedefrag yes". # # The configuration parameters are able to fine tune the behavior of the # defragmentation process. If you are not sure about what they mean it is # a good idea to leave the defaults untouched. # Enabled active defragmentation # activedefrag no # Minimum amount of fragmentation waste to start active defrag # active-defrag-ignore-bytes 100mb # Minimum percentage of fragmentation to start active defrag # active-defrag-threshold-lower 10 # Maximum percentage of fragmentation at which we use maximum effort # active-defrag-threshold-upper 100 # Minimal effort for defrag in CPU percentage, to be used when the lower # threshold is reached # active-defrag-cycle-min 1 # Maximal effort for defrag in CPU percentage, to be used when the upper # threshold is reached # active-defrag-cycle-max 25 # Maximum number of set/hash/zset/list fields that will be processed from # the main dictionary scan # active-defrag-max-scan-fields 1000 # Jemalloc background thread for purging will be enabled by default jemalloc-bg-thread yes # It is possible to pin different threads and processes of Redis to specific # CPUs in your system, in order to maximize the performances of the server. # This is useful both in order to pin different Redis threads in different # CPUs, but also in order to make sure that multiple Redis instances running # in the same host will be pinned to different CPUs. # # Normally you can do this using the "taskset" command, however it is also # possible to this via Redis configuration directly, both in Linux and FreeBSD. # # You can pin the server/IO threads, bio threads, aof rewrite child process, and # the bgsave child process. The syntax to specify the cpu list is the same as # the taskset command: # # Set redis server/io threads to cpu affinity 0,2,4,6: # server_cpulist 0-7:2 # # Set bio threads to cpu affinity 1,3: # bio_cpulist 1,3 # # Set aof rewrite child process to cpu affinity 8,9,10,11: # aof_rewrite_cpulist 8-11 # # Set bgsave child process to cpu affinity 1,10,11 # bgsave_cpulist 1,10-11 # In some cases redis will emit warnings and even refuse to start if it detects # that the system is in bad state, it is possible to suppress these warnings # by setting the following config which takes a space delimited list of warnings # to suppress # # ignore-warnings ARM64-COW-BUG 在里面那边加上bind 0.0.0.0
最新发布
05-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WitsMakeMen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值