mirror of
https://github.com/ClusterCockpit/cc-metric-collector.git
synced 2025-07-31 08:56:06 +02:00
Add likwid collector
This commit is contained in:
31
collectors/likwid/groups/nehalem/BRANCH.txt
Normal file
31
collectors/likwid/groups/nehalem/BRANCH.txt
Normal file
@@ -0,0 +1,31 @@
|
||||
SHORT Branch prediction miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 BR_INST_RETIRED_ALL_BRANCHES
|
||||
PMC1 BR_MISP_RETIRED_ALL_BRANCHES
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
Branch rate PMC0/FIXC0
|
||||
Branch misprediction rate PMC1/FIXC0
|
||||
Branch misprediction ratio PMC1/PMC0
|
||||
Instructions per branch FIXC0/PMC0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
Branch rate = BR_INST_RETIRED_ALL_BRANCHES/INSTR_RETIRED_ANY
|
||||
Branch misprediction rate = BR_MISP_RETIRED_ALL_BRANCHES/INSTR_RETIRED_ANY
|
||||
Branch misprediction ratio = BR_MISP_RETIRED_ALL_BRANCHES/BR_INST_RETIRED_ALL_BRANCHES
|
||||
Instructions per branch = INSTR_RETIRED_ANY/BR_INST_RETIRED_ALL_BRANCHES
|
||||
-
|
||||
The rates state how often on average a branch or a mispredicted branch occurred
|
||||
per instruction retired in total. The branch misprediction ratio sets directly
|
||||
into relation what ration of all branch instruction where mispredicted.
|
||||
Instructions per branch is 1/branch rate.
|
||||
|
36
collectors/likwid/groups/nehalem/CACHE.txt
Normal file
36
collectors/likwid/groups/nehalem/CACHE.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
SHORT Data cache miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 L1D_REPL
|
||||
PMC1 L1D_ALL_REF_ANY
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
data cache misses PMC0
|
||||
data cache request rate PMC1/FIXC0
|
||||
data cache miss rate PMC0/FIXC0
|
||||
data cache miss ratio PMC0/PMC1
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
data cache misses = L1D_REPL
|
||||
data cache request rate = L1D_ALL_REF_ANY / INSTR_RETIRED_ANY
|
||||
data cache miss rate = L1D_REPL / INSTR_RETIRED_ANY
|
||||
data cache miss ratio = L1D_REPL / L1D_ALL_REF_ANY
|
||||
-
|
||||
This group measures the locality of your data accesses with regard to the
|
||||
L1 cache. Data cache request rate tells you how data intensive your code is
|
||||
or how many data accesses you have on average per instruction.
|
||||
The data cache miss rate gives a measure how often it was necessary to get
|
||||
cache lines from higher levels of the memory hierarchy. And finally
|
||||
data cache miss ratio tells you how many of your memory references required
|
||||
a cache line to be loaded from a higher level. While the data cache miss rate
|
||||
might be given by your algorithm you should try to get data cache miss ratio
|
||||
as low as possible by increasing your cache reuse.
|
||||
|
22
collectors/likwid/groups/nehalem/DATA.txt
Normal file
22
collectors/likwid/groups/nehalem/DATA.txt
Normal file
@@ -0,0 +1,22 @@
|
||||
SHORT Load to store ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 MEM_INST_RETIRED_LOADS
|
||||
PMC1 MEM_INST_RETIRED_STORES
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
Load to store ratio PMC0/PMC1
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
Load to store ratio = MEM_INST_RETIRED_LOADS/MEM_INST_RETIRED_STORES
|
||||
-
|
||||
This is a simple metric to determine your load to store ratio.
|
||||
|
24
collectors/likwid/groups/nehalem/DIVIDE.txt
Normal file
24
collectors/likwid/groups/nehalem/DIVIDE.txt
Normal file
@@ -0,0 +1,24 @@
|
||||
SHORT Divide unit information
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 ARITH_NUM_DIV
|
||||
PMC1 ARITH_CYCLES_DIV_BUSY
|
||||
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
Number of divide ops PMC0
|
||||
Avg. divide unit usage duration PMC1/PMC0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
Number of divide ops = ARITH_NUM_DIV
|
||||
Avg. divide unit usage duration = ARITH_CYCLES_DIV_BUSY/ARITH_NUM_DIV
|
||||
-
|
||||
This performance group measures the average latency of divide operations
|
35
collectors/likwid/groups/nehalem/FLOPS_DP.txt
Normal file
35
collectors/likwid/groups/nehalem/FLOPS_DP.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
SHORT Double Precision MFLOP/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 FP_COMP_OPS_EXE_SSE_FP_PACKED
|
||||
PMC1 FP_COMP_OPS_EXE_SSE_FP_SCALAR
|
||||
PMC2 FP_COMP_OPS_EXE_SSE_SINGLE_PRECISION
|
||||
PMC3 FP_COMP_OPS_EXE_SSE_DOUBLE_PRECISION
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
DP [MFLOP/s] 1.0E-06*(PMC0*2.0+PMC1)/time
|
||||
Packed [MUOPS/s] 1.0E-06*PMC0/time
|
||||
Scalar [MUOPS/s] 1.0E-06*PMC1/time
|
||||
SP [MUOPS/s] 1.0E-06*PMC2/time
|
||||
DP [MUOPS/s] 1.0E-06*PMC3/time
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
DP [MFLOP/s] = 1.0E-06*(FP_COMP_OPS_EXE_SSE_FP_PACKED*2+FP_COMP_OPS_EXE_SSE_FP_SCALAR)/runtime
|
||||
Packed [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_FP_PACKED/runtime
|
||||
Scalar [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_FP_SCALAR/runtime
|
||||
SP [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_SINGLE_PRECISION/runtime
|
||||
DP [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_DOUBLE_PRECISION/runtime
|
||||
-
|
||||
The Nehalem has no possibility to measure MFLOPs if mixed precision calculations are done.
|
||||
Therefore both single as well as double precision are measured to ensure the correctness
|
||||
of the measurements. You can check if your code was vectorized on the number of
|
||||
FP_COMP_OPS_EXE_SSE_FP_PACKED versus the FP_COMP_OPS_EXE_SSE_FP_SCALAR.
|
||||
|
35
collectors/likwid/groups/nehalem/FLOPS_SP.txt
Normal file
35
collectors/likwid/groups/nehalem/FLOPS_SP.txt
Normal file
@@ -0,0 +1,35 @@
|
||||
SHORT Single Precision MFLOP/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 FP_COMP_OPS_EXE_SSE_FP_PACKED
|
||||
PMC1 FP_COMP_OPS_EXE_SSE_FP_SCALAR
|
||||
PMC2 FP_COMP_OPS_EXE_SSE_SINGLE_PRECISION
|
||||
PMC3 FP_COMP_OPS_EXE_SSE_DOUBLE_PRECISION
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
SP [MFLOP/s] 1.0E-06*(PMC0*4.0+PMC1)/time
|
||||
Packed [MUOPS/s] 1.0E-06*PMC0/time
|
||||
Scalar [MUOPS/s] 1.0E-06*PMC1/time
|
||||
SP [MUOPS/s] 1.0E-06*PMC2/time
|
||||
DP [MUOPS/s] 1.0E-06*PMC3/time
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
SP [MFLOP/s] = 1.0E-06*(FP_COMP_OPS_EXE_SSE_FP_PACKED*4+FP_COMP_OPS_EXE_SSE_FP_SCALAR)/runtime
|
||||
Packed [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_FP_PACKED/runtime
|
||||
Scalar [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_FP_SCALAR/runtime
|
||||
SP [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_SINGLE_PRECISION/runtime
|
||||
DP [MUOPS/s] = 1.0E-06*FP_COMP_OPS_EXE_SSE_DOUBLE_PRECISION/runtime
|
||||
-
|
||||
The Nehalem has no possibility to measure MFLOPs if mixed precision calculations are done.
|
||||
Therefore both single as well as double precision are measured to ensure the correctness
|
||||
of the measurements. You can check if your code was vectorized on the number of
|
||||
FP_COMP_OPS_EXE_SSE_FP_PACKED versus the FP_COMP_OPS_EXE_SSE_FP_SCALAR.
|
||||
|
21
collectors/likwid/groups/nehalem/FLOPS_X87.txt
Normal file
21
collectors/likwid/groups/nehalem/FLOPS_X87.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
SHORT X87 MFLOP/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 INST_RETIRED_X87
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
X87 [MFLOP/s] 1.0E-06*PMC0/time
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
X87 [MFLOP/s] = 1.0E-06*INST_RETIRED_X87/runtime
|
||||
-
|
||||
Profiling group to measure X87 FLOP rate.
|
||||
|
25
collectors/likwid/groups/nehalem/ICACHE.txt
Normal file
25
collectors/likwid/groups/nehalem/ICACHE.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
SHORT Instruction cache miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 L1I_READS
|
||||
PMC1 L1I_MISSES
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L1I request rate PMC0/FIXC0
|
||||
L1I miss rate PMC1/FIXC0
|
||||
L1I miss ratio PMC1/PMC0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L1I request rate = L1I_READS / INSTR_RETIRED_ANY
|
||||
L1I miss rate = ICACHE_MISSES / INSTR_RETIRED_ANY
|
||||
L1I miss ratio = ICACHE_MISSES / L1I_READS
|
||||
-
|
||||
This group measures some L1 instruction cache metrics.
|
40
collectors/likwid/groups/nehalem/L2.txt
Normal file
40
collectors/likwid/groups/nehalem/L2.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
SHORT L2 cache bandwidth in MBytes/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 L1D_REPL
|
||||
PMC1 L1D_M_EVICT
|
||||
PMC2 L1I_MISSES
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L2D load bandwidth [MBytes/s] 1.0E-06*PMC0*64.0/time
|
||||
L2D load data volume [GBytes] 1.0E-09*PMC0*64.0
|
||||
L2D evict bandwidth [MBytes/s] 1.0E-06*PMC1*64.0/time
|
||||
L2D evict data volume [GBytes] 1.0E-09*PMC1*64.0
|
||||
L2 bandwidth [MBytes/s] 1.0E-06*(PMC0+PMC1+PMC2)*64.0/time
|
||||
L2 data volume [GBytes] 1.0E-09*(PMC0+PMC1+PMC2)*64.0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L2D load bandwidth [MBytes/s] = 1.0E-06*L1D_REPL*64.0/time
|
||||
L2D load data volume [GBytes] = 1.0E-09*L1D_REPL*64.0
|
||||
L2D evict bandwidth [MBytes/s] = 1.0E-06*L1D_M_EVICT*64.0/time
|
||||
L2D evict data volume [GBytes] = 1.0E-09*L1D_M_EVICT*64.0
|
||||
L2 bandwidth [MBytes/s] = 1.0E-06*(L1D_REPL+L1D_M_EVICT+L1I_MISSES)*64/time
|
||||
L2 data volume [GBytes] = 1.0E-09*(L1D_REPL+L1D_M_EVICT+L1I_MISSES)*64
|
||||
-
|
||||
Profiling group to measure L2 cache bandwidth. The bandwidth is
|
||||
computed by the number of cache line allocated in the L1 and the
|
||||
number of modified cache lines evicted from the L1. Also reports on
|
||||
total data volume transferred between L2 and L1 cache.
|
||||
Note that this bandwidth also includes data transfers due to a
|
||||
write allocate load on a store miss in L1 and traffic caused by misses in the
|
||||
L1 instruction cache.
|
||||
|
||||
|
34
collectors/likwid/groups/nehalem/L2CACHE.txt
Normal file
34
collectors/likwid/groups/nehalem/L2CACHE.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
SHORT L2 cache miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 L2_RQSTS_REFERENCES
|
||||
PMC1 L2_RQSTS_MISS
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L2 request rate PMC0/FIXC0
|
||||
L2 miss rate PMC1/FIXC0
|
||||
L2 miss ratio PMC1/PMC0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L2 request rate = L2_RQSTS_REFERENCES/INSTR_RETIRED_ANY
|
||||
L2 miss rate = L2_RQSTS_MISS/INSTR_RETIRED_ANY
|
||||
L2 miss ratio = L2_RQSTS_MISS/L2_RQSTS_REFERENCES
|
||||
-
|
||||
This group measures the locality of your data accesses with regard to the
|
||||
L2 cache. L2 request rate tells you how data intensive your code is
|
||||
or how many data accesses you have on average per instruction.
|
||||
The L2 miss rate gives a measure how often it was necessary to get
|
||||
cache lines from memory. And finally L2 miss ratio tells you how many of your
|
||||
memory references required a cache line to be loaded from a higher level.
|
||||
While the data cache miss rate might be given by your algorithm you should
|
||||
try to get data cache miss ratio as low as possible by increasing your cache reuse.
|
||||
|
||||
|
36
collectors/likwid/groups/nehalem/L3.txt
Normal file
36
collectors/likwid/groups/nehalem/L3.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
SHORT L3 cache bandwidth in MBytes/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 L2_LINES_IN_ANY
|
||||
PMC1 L2_LINES_OUT_DEMAND_DIRTY
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L3 load bandwidth [MBytes/s] 1.0E-06*PMC0*64.0/time
|
||||
L3 load data volume [GBytes] 1.0E-09*PMC0*64.0
|
||||
L3 evict bandwidth [MBytes/s] 1.0E-06*PMC1*64.0/time
|
||||
L3 evict data volume [GBytes] 1.0E-09*PMC1*64.0
|
||||
L3 bandwidth [MBytes/s] 1.0E-06*(PMC0+PMC1)*64.0/time
|
||||
L3 data volume [GBytes] 1.0E-09*(PMC0+PMC1)*64.0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L3 load bandwidth [MBytes/s] = 1.0E-06*L2_LINES_IN_ANY*64.0/time
|
||||
L3 load data volume [GBytes] = 1.0E-09*L2_LINES_IN_ANY*64.0
|
||||
L3 evict bandwidth [MBytes/s] = 1.0E-06*L2_LINES_OUT_DEMAND_DIRTY*64.0/time
|
||||
L3 evict data volume [GBytes] = 1.0E-09*L2_LINES_OUT_DEMAND_DIRTY*64.0
|
||||
L3 bandwidth [MBytes/s] = 1.0E-06*(L2_LINES_IN_ANY+L2_LINES_OUT_DEMAND_DIRTY)*64/time
|
||||
L3 data volume [GBytes] = 1.0E-09*(L2_LINES_IN_ANY+L2_LINES_OUT_DEMAND_DIRTY)*64
|
||||
-
|
||||
Profiling group to measure L3 cache bandwidth. The bandwidth is computed by the
|
||||
number of cache line allocated in the L2 and the number of modified cache lines
|
||||
evicted from the L2. Also reports total data volume between L3 and L2 caches.
|
||||
Note that this bandwidth also includes data transfers due to a write allocate
|
||||
load on a store miss in L2.
|
||||
|
34
collectors/likwid/groups/nehalem/L3CACHE.txt
Normal file
34
collectors/likwid/groups/nehalem/L3CACHE.txt
Normal file
@@ -0,0 +1,34 @@
|
||||
SHORT L3 cache miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
UPMC0 UNC_L3_HITS_ANY
|
||||
UPMC1 UNC_L3_MISS_ANY
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L3 request rate (UPMC0+UPMC1)/FIXC0
|
||||
L3 miss rate UPMC1/FIXC0
|
||||
L3 miss ratio UPMC1/(UPMC0+UPMC1)
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L3 request rate = (UNC_L3_HITS_ANY+UNC_L3_MISS_ANY)/INSTR_RETIRED_ANY
|
||||
L3 miss rate = UNC_L3_MISS_ANY/INSTR_RETIRED_ANY
|
||||
L3 miss ratio = UNC_L3_MISS_ANY/(UNC_L3_HITS_ANY+UNC_L3_MISS_ANY)
|
||||
-
|
||||
This group measures the locality of your data accesses with regard to the
|
||||
L3 cache. L3 request rate tells you how data intensive your code is
|
||||
or how many data accesses you have on average per instruction.
|
||||
The L3 miss rate gives a measure how often it was necessary to get
|
||||
cache lines from memory. And finally L3 miss ratio tells you how many of your
|
||||
memory references required a cache line to be loaded from a higher level.
|
||||
While the data cache miss rate might be given by your algorithm you should
|
||||
try to get data cache miss ratio as low as possible by increasing your cache reuse.
|
||||
|
||||
|
49
collectors/likwid/groups/nehalem/MEM.txt
Normal file
49
collectors/likwid/groups/nehalem/MEM.txt
Normal file
@@ -0,0 +1,49 @@
|
||||
SHORT Main memory bandwidth in MBytes/s
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
UPMC0 UNC_QMC_NORMAL_READS_ANY
|
||||
UPMC1 UNC_QMC_WRITES_FULL_ANY
|
||||
UPMC2 UNC_QHL_REQUESTS_REMOTE_READS
|
||||
UPMC3 UNC_QHL_REQUESTS_REMOTE_WRITES
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
Memory read bandwidth [MBytes/s] 1.0E-06*UPMC0*64.0/time
|
||||
Memory read data volume [GBytes] 1.0E-09*UPMC0*64.0
|
||||
Memory write bandwidth [MBytes/s] 1.0E-06*UPMC1*64.0/time
|
||||
Memory write data volume [GBytes] 1.0E-09*UPMC1*64.0
|
||||
Memory bandwidth [MBytes/s] 1.0E-06*(UPMC0+UPMC1)*64.0/time
|
||||
Memory data volume [GBytes] 1.0E-09*(UPMC0+UPMC1)*64.0
|
||||
Remote memory read bandwidth [MBytes/s] 1.0E-06*UPMC2*64.0/time
|
||||
Remote memory read data volume [GBytes] 1.0E-09*UPMC2*64.0
|
||||
Remote memory write bandwidth [MBytes/s] 1.0E-06*UPMC3*64.0/time
|
||||
Remote memory write data volume [GBytes] 1.0E-09*UPMC3*64.0
|
||||
Remote memory bandwidth [MBytes/s] 1.0E-06*(UPMC2+UPMC3)*64.0/time
|
||||
Remote memory data volume [GBytes] 1.0E-09*(UPMC2+UPMC3)*64.0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
Memory read bandwidth [MBytes/s] = 1.0E-06*UNC_QMC_NORMAL_READS_ANY*64.0/time
|
||||
Memory read data volume [GBytes] = 1.0E-09*UNC_QMC_NORMAL_READS_ANY*64.0
|
||||
Memory write bandwidth [MBytes/s] = 1.0E-06*UNC_QMC_WRITES_FULL_ANY*64.0/time
|
||||
Memory write data volume [GBytes] = 1.0E-09*UNC_QMC_WRITES_FULL_ANY*64.0
|
||||
Memory bandwidth [MBytes/s] = 1.0E-06*(UNC_QMC_NORMAL_READS_ANY+UNC_QMC_WRITES_FULL_ANY)*64.0/time
|
||||
Memory data volume [GBytes] = 1.0E-09*(UNC_QMC_NORMAL_READS_ANY+UNC_QMC_WRITES_FULL_ANY)*64.0
|
||||
Remote memory read bandwidth [MBytes/s] = 1.0E-06*UNC_QHL_REQUESTS_REMOTE_READS*64.0/time
|
||||
Remote memory read data volume [GBytes] = 1.0E-09*UNC_QHL_REQUESTS_REMOTE_READS*64.0
|
||||
Remote memory write bandwidth [MBytes/s] = 1.0E-06*UNC_QHL_REQUESTS_REMOTE_WRITES*64.0/time
|
||||
Remote memory write data volume [GBytes] = 1.0E-09*UNC_QHL_REQUESTS_REMOTE_WRITES*64.0
|
||||
Remote memory bandwidth [MBytes/s] = 1.0E-06*(UNC_QHL_REQUESTS_REMOTE_READS+UNC_QHL_REQUESTS_REMOTE_WRITES)*64.0/time
|
||||
Remote memory data volume [GBytes] = 1.0E-09*(UNC_QHL_REQUESTS_REMOTE_READS+UNC_QHL_REQUESTS_REMOTE_WRITES)*64.0
|
||||
-
|
||||
Profiling group to measure memory bandwidth drawn by all cores of a socket.
|
||||
This group will be measured by one core per socket. The Remote Read BW tells
|
||||
you if cache lines are transferred between sockets, meaning that cores access
|
||||
data owned by a remote NUMA domain.
|
||||
|
25
collectors/likwid/groups/nehalem/SCHEDULER.txt
Normal file
25
collectors/likwid/groups/nehalem/SCHEDULER.txt
Normal file
@@ -0,0 +1,25 @@
|
||||
SHORT Scheduler Ports
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 UOPS_EXECUTED_PORT0
|
||||
PMC1 UOPS_EXECUTED_PORT1
|
||||
PMC2 UOPS_EXECUTED_PORT5
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
Ratio Port 1 PMC1/PMC0
|
||||
Ratio Port 5 PMC2/PMC0
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
Ratio Port 1 = UOPS_EXECUTED_PORT1/UOPS_EXECUTED_PORT0
|
||||
Ratio Port 5 = UOPS_EXECUTED_PORT5/UOPS_EXECUTED_PORT0
|
||||
-
|
||||
Measures how many instructions were scheduled on which issue port.
|
||||
|
30
collectors/likwid/groups/nehalem/TLB.txt
Normal file
30
collectors/likwid/groups/nehalem/TLB.txt
Normal file
@@ -0,0 +1,30 @@
|
||||
SHORT TLB miss rate/ratio
|
||||
|
||||
EVENTSET
|
||||
FIXC0 INSTR_RETIRED_ANY
|
||||
FIXC1 CPU_CLK_UNHALTED_CORE
|
||||
FIXC2 CPU_CLK_UNHALTED_REF
|
||||
PMC0 DTLB_MISSES_ANY
|
||||
PMC1 L1D_ALL_REF_ANY
|
||||
|
||||
METRICS
|
||||
Runtime (RDTSC) [s] time
|
||||
Runtime unhalted [s] FIXC1*inverseClock
|
||||
Clock [MHz] 1.E-06*(FIXC1/FIXC2)/inverseClock
|
||||
CPI FIXC1/FIXC0
|
||||
L1 DTLB request rate PMC1/FIXC0
|
||||
L1 DTLB miss rate PMC0/FIXC0
|
||||
L1 DTLB miss ratio PMC0/PMC1
|
||||
|
||||
LONG
|
||||
Formulas:
|
||||
L1 DTLB request rate = L1D_ALL_REF_ANY / INSTR_RETIRED_ANY
|
||||
DTLB miss rate = DTLB_MISSES_ANY / INSTR_RETIRED_ANY
|
||||
L1 DTLB miss ratio = DTLB_MISSES_ANY / L1D_ALL_REF_ANY
|
||||
-
|
||||
L1 DTLB request rate tells you how data intensive your code is
|
||||
or how many data accesses you have on average per instruction.
|
||||
The DTLB miss rate gives a measure how often a TLB miss occurred
|
||||
per instruction. And finally L1 DTLB miss ratio tells you how many
|
||||
of your memory references required caused a TLB miss on average.
|
||||
|
Reference in New Issue
Block a user