From d993301c58be56278c6a926b69ed6ac9eeab3120 Mon Sep 17 00:00:00 2001 From: Daniel Hodges Date: Sun, 31 Oct 2021 20:48:18 -0400 Subject: [PATCH 1/3] Add stalled frontend/backend cycles counters for perf collector Signed-off-by: Daniel Hodges --- collector/perf_linux.go | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 7f239ed61d..0a90d5e131 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -397,6 +397,26 @@ func NewPerfCollector(logger log.Logger) (Collector, error) { []string{"cpu"}, nil, ), + "stalled_cycles_backend": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "stalled_cycles_backend", + ), + "Number of stalled backend CPU cycles", + []string{"cpu"}, + nil, + ), + "stalled_cycles_frontend": prometheus.NewDesc( + prometheus.BuildFQName( + namespace, + perfSubsystem, + "stalled_cycles_frontend", + ), + "Number of stalled fronted CPU cycles", + []string{"cpu"}, + nil, + ), "page_faults_total": prometheus.NewDesc( prometheus.BuildFQName( namespace, @@ -598,6 +618,9 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { if err := (*profiler).Profile(hwProfile); err != nil { return err } + if hwProfile == nil { + continue + } cpuid := strconv.Itoa(c.hwProfilerCPUMap[profiler]) @@ -656,6 +679,22 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { cpuid, ) } + + if hwProfile.StalledCyclesBackend != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["stalled_cycles_backend"], + prometheus.CounterValue, float64(*hwProfile.StalledCyclesBackend), + cpuid, + ) + } + + if hwProfile.StalledCyclesFrontend != nil { + ch <- prometheus.MustNewConstMetric( + c.desc["stalled_cycles_frontend"], + prometheus.CounterValue, float64(*hwProfile.StalledCyclesFrontend), + cpuid, + ) + } } return nil @@ -667,6 +706,9 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error { if err := (*profiler).Profile(swProfile); err != nil { return err } + if swProfile == nil { + continue + } cpuid := strconv.Itoa(c.swProfilerCPUMap[profiler]) @@ -720,6 +762,9 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error { if err := (*profiler).Profile(cacheProfile); err != nil { return err } + if cacheProfile == nil { + continue + } cpuid := strconv.Itoa(c.cacheProfilerCPUMap[profiler]) From 0bd95ac9bebd5f10403325684ddfbc7d5af2d698 Mon Sep 17 00:00:00 2001 From: Daniel Hodges Date: Mon, 1 Aug 2022 19:28:12 -0400 Subject: [PATCH 2/3] Update collector/perf_linux.go Co-authored-by: Ben Kochie Signed-off-by: Daniel Hodges --- collector/perf_linux.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 0a90d5e131..34bc1745c2 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -411,7 +411,7 @@ func NewPerfCollector(logger log.Logger) (Collector, error) { prometheus.BuildFQName( namespace, perfSubsystem, - "stalled_cycles_frontend", + "stalled_cycles_frontend_total", ), "Number of stalled fronted CPU cycles", []string{"cpu"}, From 32b2d5c75a5b61caf4a35e9c1f379b58f5da19b6 Mon Sep 17 00:00:00 2001 From: Daniel Hodges Date: Mon, 1 Aug 2022 19:28:17 -0400 Subject: [PATCH 3/3] Update collector/perf_linux.go Co-authored-by: Ben Kochie Signed-off-by: Daniel Hodges --- collector/perf_linux.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/collector/perf_linux.go b/collector/perf_linux.go index 34bc1745c2..812dbaf874 100644 --- a/collector/perf_linux.go +++ b/collector/perf_linux.go @@ -397,23 +397,23 @@ func NewPerfCollector(logger log.Logger) (Collector, error) { []string{"cpu"}, nil, ), - "stalled_cycles_backend": prometheus.NewDesc( + "stalled_cycles_backend_total": prometheus.NewDesc( prometheus.BuildFQName( namespace, perfSubsystem, - "stalled_cycles_backend", + "stalled_cycles_backend_total", ), "Number of stalled backend CPU cycles", []string{"cpu"}, nil, ), - "stalled_cycles_frontend": prometheus.NewDesc( + "stalled_cycles_frontend_total": prometheus.NewDesc( prometheus.BuildFQName( namespace, perfSubsystem, "stalled_cycles_frontend_total", ), - "Number of stalled fronted CPU cycles", + "Number of stalled frontend CPU cycles", []string{"cpu"}, nil, ), @@ -682,7 +682,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { if hwProfile.StalledCyclesBackend != nil { ch <- prometheus.MustNewConstMetric( - c.desc["stalled_cycles_backend"], + c.desc["stalled_cycles_backend_total"], prometheus.CounterValue, float64(*hwProfile.StalledCyclesBackend), cpuid, ) @@ -690,7 +690,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { if hwProfile.StalledCyclesFrontend != nil { ch <- prometheus.MustNewConstMetric( - c.desc["stalled_cycles_frontend"], + c.desc["stalled_cycles_frontend_total"], prometheus.CounterValue, float64(*hwProfile.StalledCyclesFrontend), cpuid, )