Skip to content

Commit d3422a4

Browse files
committed
Extend DRM labels
Signed-off-by: Deezzir <deezzir@gmail.com>
1 parent 99bf92d commit d3422a4

File tree

1 file changed

+30
-4
lines changed

1 file changed

+30
-4
lines changed

collector/drm_linux.go

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ var (
4242
"Card information",
4343
[]string{"card", "memory_vendor", "power_performance_level", "unique_id", "vendor"}, nil,
4444
)
45+
drmCardInfoWithChip = prometheus.NewDesc(
46+
prometheus.BuildFQName(namespace, drmCollectorSubsystem, "card_info"),
47+
"Card information",
48+
[]string{"card", "memory_vendor", "power_performance_level", "unique_id", "chip", "vendor"}, nil,
49+
)
4550
drmGPUBusyPercent = prometheus.NewDesc(
4651
prometheus.BuildFQName(namespace, drmCollectorSubsystem, "gpu_busy_percent"),
4752
"How busy the GPU is as a percentage.",
@@ -96,6 +101,22 @@ func (c *drmCollector) Update(ch chan<- prometheus.Metric) error {
96101
return c.updateAMDCards(ch)
97102
}
98103

104+
func chipName(s sysfs.ClassDRMCardAMDGPUStats) string {
105+
// generate a chip name based on the deviceType and devName
106+
cleanDevName := cleanMetricName(s.DevName)
107+
cleanDevType := cleanMetricName(s.DevType)
108+
109+
if cleanDevType != "" && cleanDevName != "" {
110+
return cleanDevType + "_" + cleanDevName
111+
}
112+
113+
if cleanDevName != "" {
114+
return cleanDevName
115+
}
116+
117+
return ""
118+
}
119+
99120
func (c *drmCollector) updateAMDCards(ch chan<- prometheus.Metric) error {
100121
vendor := "amd"
101122
stats, err := c.fs.ClassDRMCardAMDGPUStats()
@@ -104,10 +125,15 @@ func (c *drmCollector) updateAMDCards(ch chan<- prometheus.Metric) error {
104125
}
105126

106127
for _, s := range stats {
107-
ch <- prometheus.MustNewConstMetric(
108-
drmCardInfo, prometheus.GaugeValue, 1,
109-
s.Name, s.MemoryVRAMVendor, s.PowerDPMForcePerformanceLevel, s.UniqueID, vendor)
110-
128+
if chip := chipName(s); chip != "" {
129+
ch <- prometheus.MustNewConstMetric(
130+
drmCardInfoWithChip, prometheus.GaugeValue, 1,
131+
s.Name, s.MemoryVRAMVendor, s.PowerDPMForcePerformanceLevel, s.UniqueID, chip, vendor)
132+
} else {
133+
ch <- prometheus.MustNewConstMetric(
134+
drmCardInfo, prometheus.GaugeValue, 1,
135+
s.Name, s.MemoryVRAMVendor, s.PowerDPMForcePerformanceLevel, s.UniqueID, vendor)
136+
}
111137
ch <- prometheus.MustNewConstMetric(
112138
drmGPUBusyPercent, prometheus.GaugeValue, float64(s.GPUBusyPercent), s.Name)
113139

0 commit comments

Comments
 (0)