From 82de4f05f72e9428a2e180044fbd5e63a1fd599f Mon Sep 17 00:00:00 2001 From: Deezzir Date: Wed, 2 Oct 2024 18:21:30 -0400 Subject: [PATCH] Extend DRM labels Signed-off-by: Deezzir --- collector/drm_linux.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/collector/drm_linux.go b/collector/drm_linux.go index 6c19514c4f..1739bc3d54 100644 --- a/collector/drm_linux.go +++ b/collector/drm_linux.go @@ -40,7 +40,7 @@ var ( drmCardInfo = prometheus.NewDesc( prometheus.BuildFQName(namespace, drmCollectorSubsystem, "card_info"), "Card information", - []string{"card", "memory_vendor", "power_performance_level", "unique_id", "vendor"}, nil, + []string{"card", "memory_vendor", "power_performance_level", "unique_id", "chip", "vendor"}, nil, ) drmGPUBusyPercent = prometheus.NewDesc( prometheus.BuildFQName(namespace, drmCollectorSubsystem, "gpu_busy_percent"), @@ -96,6 +96,17 @@ func (c *drmCollector) Update(ch chan<- prometheus.Metric) error { return c.updateAMDCards(ch) } +func chipName(s sysfs.ClassDRMCardAMDGPUStats) string { + // generate a chip name based on the deviceType and devName + cleanDevName := cleanMetricName(s.DevName) + cleanDevType := cleanMetricName(s.DevType) + + if cleanDevType != "" && cleanDevName != "" { + return cleanDevType + "_" + cleanDevName + } + return cleanDevName +} + func (c *drmCollector) updateAMDCards(ch chan<- prometheus.Metric) error { vendor := "amd" stats, err := c.fs.ClassDRMCardAMDGPUStats() @@ -106,7 +117,7 @@ func (c *drmCollector) updateAMDCards(ch chan<- prometheus.Metric) error { for _, s := range stats { ch <- prometheus.MustNewConstMetric( drmCardInfo, prometheus.GaugeValue, 1, - s.Name, s.MemoryVRAMVendor, s.PowerDPMForcePerformanceLevel, s.UniqueID, vendor) + s.Name, s.MemoryVRAMVendor, s.PowerDPMForcePerformanceLevel, s.UniqueID, chipName(s), vendor) ch <- prometheus.MustNewConstMetric( drmGPUBusyPercent, prometheus.GaugeValue, float64(s.GPUBusyPercent), s.Name)