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+
99120func (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