perf collector: add tlb_data metrics (#3436)

This lets users see stats on TLB cache hits and misses for data.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
pull/3007/head^2
Bryan Boreham 8 months ago committed by GitHub
parent 771c3d458a
commit dedb4712c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 82
      collector/perf_linux.go

@ -86,10 +86,10 @@ var (
"BPUReadHit": perf.BPUReadHitProfiler,
"BPUReadMiss": perf.BPUReadMissProfiler,
// "L1InstrReadHit": perf.L1InstrReadHitProfiler,
// "DataTLBReadHit": perf.DataTLBReadHitProfiler,
// "DataTLBReadMiss": perf.DataTLBReadMissProfiler,
// "DataTLBWriteHit": perf.DataTLBWriteHitProfiler,
// "DataTLBWriteMiss": perf.DataTLBWriteMissProfiler,
"DataTLBReadHit": perf.DataTLBReadHitProfiler,
"DataTLBReadMiss": perf.DataTLBReadMissProfiler,
"DataTLBWriteHit": perf.DataTLBWriteHitProfiler,
"DataTLBWriteMiss": perf.DataTLBWriteMissProfiler,
// "NodeCacheReadHit": perf.NodeCacheReadHitProfiler,
// "NodeCacheReadMiss": perf.NodeCacheReadMissProfiler,
// "NodeCacheWriteHit": perf.NodeCacheWriteHitProfiler,
@ -355,7 +355,7 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) {
}
}
}
cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler
cacheProfilers := perf.L1DataReadHitProfiler | perf.L1DataReadMissProfiler | perf.L1DataWriteHitProfiler | perf.L1InstrReadMissProfiler | perf.InstrTLBReadHitProfiler | perf.InstrTLBReadMissProfiler | perf.DataTLBReadHitProfiler | perf.DataTLBReadMissProfiler | perf.DataTLBWriteHitProfiler | perf.DataTLBWriteMissProfiler | perf.LLReadHitProfiler | perf.LLReadMissProfiler | perf.LLWriteHitProfiler | perf.LLWriteMissProfiler | perf.BPUReadHitProfiler | perf.BPUReadMissProfiler
if *perfCaProfilerFlag != nil && len(*perfCaProfilerFlag) > 0 {
cacheProfilers = 0
for _, cf := range *perfCaProfilerFlag {
@ -615,6 +615,46 @@ func NewPerfCollector(logger *slog.Logger) (Collector, error) {
[]string{"cpu"},
nil,
),
"cache_tlb_data_read_hits_total": prometheus.NewDesc(
prometheus.BuildFQName(
namespace,
perfSubsystem,
"cache_tlb_data_read_hits_total",
),
"Number of data TLB read hits",
[]string{"cpu"},
nil,
),
"cache_tlb_data_read_misses_total": prometheus.NewDesc(
prometheus.BuildFQName(
namespace,
perfSubsystem,
"cache_tlb_data_read_misses_total",
),
"Number of data TLB read misses",
[]string{"cpu"},
nil,
),
"cache_tlb_data_write_hits_total": prometheus.NewDesc(
prometheus.BuildFQName(
namespace,
perfSubsystem,
"cache_tlb_data_write_hits_total",
),
"Number of data TLB write hits",
[]string{"cpu"},
nil,
),
"cache_tlb_data_write_misses_total": prometheus.NewDesc(
prometheus.BuildFQName(
namespace,
perfSubsystem,
"cache_tlb_data_write_misses_total",
),
"Number of data TLB write misses",
[]string{"cpu"},
nil,
),
"cache_ll_read_hits_total": prometheus.NewDesc(
prometheus.BuildFQName(
namespace,
@ -895,6 +935,38 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
)
}
if cacheProfile.DataTLBReadHit != nil {
ch <- prometheus.MustNewConstMetric(
c.desc["cache_tlb_data_read_hits_total"],
prometheus.CounterValue, float64(*cacheProfile.DataTLBReadHit),
cpuid,
)
}
if cacheProfile.DataTLBReadMiss != nil {
ch <- prometheus.MustNewConstMetric(
c.desc["cache_tlb_data_read_misses_total"],
prometheus.CounterValue, float64(*cacheProfile.DataTLBReadMiss),
cpuid,
)
}
if cacheProfile.DataTLBWriteHit != nil {
ch <- prometheus.MustNewConstMetric(
c.desc["cache_tlb_data_write_hits_total"],
prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteHit),
cpuid,
)
}
if cacheProfile.DataTLBWriteMiss != nil {
ch <- prometheus.MustNewConstMetric(
c.desc["cache_tlb_data_write_misses_total"],
prometheus.CounterValue, float64(*cacheProfile.DataTLBWriteMiss),
cpuid,
)
}
if cacheProfile.LastLevelReadHit != nil {
ch <- prometheus.MustNewConstMetric(
c.desc["cache_ll_read_hits_total"],

Loading…
Cancel
Save