(card string)
| 89 | } |
| 90 | |
| 91 | func 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 | } |
no test coverage detected