MCPcopy Create free account
hub / github.com/prometheus/procfs / parseClassDRMAMDGPUCard

Function parseClassDRMAMDGPUCard

sysfs/class_drm_amdgpu.go:91–145  ·  view source on GitHub ↗
(card string)

Source from the content-addressed store, hash-verified

89}
90
91func parseClassDRMAMDGPUCard(card string) (ClassDRMCardAMDGPUStats, error) {
92 uevent, err := parsers.SysReadFile(filepath.Join(card, "device/uevent"))
93 if err != nil {
94 return ClassDRMCardAMDGPUStats{}, err
95 }
96
97 match, err := regexp.MatchString(fmt.Sprintf("DRIVER=%s", deviceDriverAMDGPU), uevent)
98 if err != nil {
99 return ClassDRMCardAMDGPUStats{}, err
100 }
101 if !match {
102 return ClassDRMCardAMDGPUStats{}, nil
103 }
104
105 stats := ClassDRMCardAMDGPUStats{Name: card}
106 // Read only specific files for faster data gathering.
107 if n, t, err := readDevInfo(card); err == nil {
108 stats.DevName = n
109 stats.DevType = t
110 } else {
111 return ClassDRMCardAMDGPUStats{}, err
112 }
113 if v, err := readDRMCardField(card, "gpu_busy_percent"); err == nil {
114 stats.GPUBusyPercent = *parsers.NewValueParser(v).PUInt64()
115 }
116 if v, err := readDRMCardField(card, "mem_info_gtt_total"); err == nil {
117 stats.MemoryGTTSize = *parsers.NewValueParser(v).PUInt64()
118 }
119 if v, err := readDRMCardField(card, "mem_info_gtt_used"); err == nil {
120 stats.MemoryGTTUsed = *parsers.NewValueParser(v).PUInt64()
121 }
122 if v, err := readDRMCardField(card, "mem_info_vis_vram_total"); err == nil {
123 stats.MemoryVisibleVRAMSize = *parsers.NewValueParser(v).PUInt64()
124 }
125 if v, err := readDRMCardField(card, "mem_info_vis_vram_used"); err == nil {
126 stats.MemoryVisibleVRAMUsed = *parsers.NewValueParser(v).PUInt64()
127 }
128 if v, err := readDRMCardField(card, "mem_info_vram_total"); err == nil {
129 stats.MemoryVRAMSize = *parsers.NewValueParser(v).PUInt64()
130 }
131 if v, err := readDRMCardField(card, "mem_info_vram_used"); err == nil {
132 stats.MemoryVRAMUsed = *parsers.NewValueParser(v).PUInt64()
133 }
134 if v, err := readDRMCardField(card, "mem_info_vram_vendor"); err == nil {
135 stats.MemoryVRAMVendor = v
136 }
137 if v, err := readDRMCardField(card, "power_dpm_force_performance_level"); err == nil {
138 stats.PowerDPMForcePerformanceLevel = v
139 }
140 if v, err := readDRMCardField(card, "unique_id"); err == nil {
141 stats.UniqueID = v
142 }
143
144 return stats, nil
145}

Callers 1

Calls 5

SysReadFileFunction · 0.92
NewValueParserFunction · 0.92
readDevInfoFunction · 0.85
readDRMCardFieldFunction · 0.85
PUInt64Method · 0.80

Tested by

no test coverage detected